€•Œ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/drm-kms-helpers”Œ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/drm-kms-helpers”Œ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/drm-kms-helpers”Œ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/drm-kms-helpers”Œ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/drm-kms-helpers”Œ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/drm-kms-helpers”Œ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/drm-kms-helpers”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒMode Setting Helper Functions”h]”hŒMode Setting Helper Functions”…”�”}”(hh¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefid”Œid7”uh1hºhh·h²hh³ŒA/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers.rst”h´KubhŒ paragraph”“”)�”}”(hXˆThe DRM subsystem aims for a strong separation between core code and helper libraries. Core code takes care of general setup and teardown and decoding userspace requests to kernel internal objects. Everything else is handled by a large set of helper libraries, which can be combined freely to pick and choose for each driver what fits, and avoid shared code where special behaviour is needed.”h]”hXˆThe DRM subsystem aims for a strong separation between core code and helper libraries. Core code takes care of general setup and teardown and decoding userspace requests to kernel internal objects. Everything else is handled by a large set of helper libraries, which can be combined freely to pick and choose for each driver what fits, and avoid shared code where special behaviour is needed.”…”�”}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³hÌh´Khh·h²hubhÎ)�”}”(hXThis distinction between core code and helpers is especially strong in the modesetting code, where there's a shared userspace ABI for all drivers. This is in contrast to the render side, where pretty much everything (with very few exceptions) can be considered optional helper code.”h]”hXThis distinction between core code and helpers is especially strong in the modesetting code, where there’s a shared userspace ABI for all drivers. This is in contrast to the render side, where pretty much everything (with very few exceptions) can be considered optional helper code.”…”�”}”(hhÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³hÌh´K hh·h²hubhÎ)�”}”(hŒ5There are a few areas these helpers can grouped into:”h]”hŒ5There are a few areas these helpers can grouped into:”…”�”}”(hhëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³hÌh´Khh·h²hubhŒ bullet_list”“”)�”}”(hhh]”(hŒ list_item”“”)�”}”(hXTHelpers to implement modesetting. The important ones here are the atomic helpers. Old drivers still often use the legacy CRTC helpers. They both share the same set of common helper vtables. For really simple drivers (anything that would have been a great fit in the deprecated fbdev subsystem) there's also the simple display pipe helpers. ”h]”hÎ)�”}”(hXSHelpers to implement modesetting. The important ones here are the atomic helpers. Old drivers still often use the legacy CRTC helpers. They both share the same set of common helper vtables. For really simple drivers (anything that would have been a great fit in the deprecated fbdev subsystem) there's also the simple display pipe helpers.”h]”hXUHelpers to implement modesetting. The important ones here are the atomic helpers. Old drivers still often use the legacy CRTC helpers. They both share the same set of common helper vtables. For really simple drivers (anything that would have been a great fit in the deprecated fbdev subsystem) there’s also the simple display pipe helpers.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³hÌh´Khjubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhhûh²hh³hÌh´Nubhÿ)�”}”(hXŠThere's a big pile of helpers for handling outputs. First the generic bridge helpers for handling encoder and transcoder IP blocks. Second the panel helpers for handling panel-related information and logic. Plus then a big set of helpers for the various sink standards (DisplayPort, HDMI, MIPI DSI). Finally there's also generic helpers for handling output probing, and for dealing with EDIDs. ”h]”hÎ)�”}”(hX‰There's a big pile of helpers for handling outputs. First the generic bridge helpers for handling encoder and transcoder IP blocks. Second the panel helpers for handling panel-related information and logic. Plus then a big set of helpers for the various sink standards (DisplayPort, HDMI, MIPI DSI). Finally there's also generic helpers for handling output probing, and for dealing with EDIDs.”h]”hX�There’s a big pile of helpers for handling outputs. First the generic bridge helpers for handling encoder and transcoder IP blocks. Second the panel helpers for handling panel-related information and logic. Plus then a big set of helpers for the various sink standards (DisplayPort, HDMI, MIPI DSI). Finally there’s also generic helpers for handling output probing, and for dealing with EDIDs.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³hÌh´Khjubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhhûh²hh³hÌh´Nubhÿ)�”}”(hŒ»The last group of helpers concerns itself with the frontend side of a display pipeline: Planes, handling rectangles for visibility checking and scissoring, flip queues and assorted bits. ”h]”hÎ)�”}”(hŒºThe last group of helpers concerns itself with the frontend side of a display pipeline: Planes, handling rectangles for visibility checking and scissoring, flip queues and assorted bits.”h]”hŒºThe last group of helpers concerns itself with the frontend side of a display pipeline: Planes, handling rectangles for visibility checking and scissoring, flip queues and assorted bits.”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³hÌh´K hj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhhûh²hh³hÌh´Nubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ*”uh1hùh³hÌh´Khh·h²hubhŒtopic”“”)�”}”(hŒ Contents ”h]”(h»)�”}”(hŒContents”h]”hŒContents”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjRh³hÌh´K$ubhú)�”}”(hhh]”hÿ)�”}”(hhh]”(hÎ)�”}”(hhh]”hŒ reference”“”)�”}”(hhh]”hŒMode Setting Helper Functions”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”hËah ]”h"]”h$]”h&]”Œrefid”Œmode-setting-helper-functions”uh1jmhjjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjgubhú)�”}”(hhh]”(hÿ)�”}”(hhh]”hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒ+Modeset Helper Reference for Common Vtables”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”Œid8”ah ]”h"]”h$]”h&]”Œrefid”Œ+modeset-helper-reference-for-common-vtables”uh1jmhjŠubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj„ubhÿ)�”}”(hhh]”(hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒ)Atomic Modeset Helper Functions Reference”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”Œid9”ah ]”h"]”h$]”h&]”Œrefid”Œ)atomic-modeset-helper-functions-reference”uh1jmhj¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj©ubhú)�”}”(hhh]”(hÿ)�”}”(hhh]”hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒOverview”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”Œid10”ah ]”h"]”h$]”h&]”Œrefid”Œoverview”uh1jmhjËubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjÈubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjÅubhÿ)�”}”(hhh]”hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒ'Implementing Asynchronous Atomic Commit”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”Œid11”ah ]”h"]”h$]”h&]”Œrefid”Œ'implementing-asynchronous-atomic-commit”uh1jmhjíubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjêubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjÅubhÿ)�”}”(hhh]”hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒHelper Functions Reference”…”�”}”(hjh²hh³Nh´Nubah}”(h]”Œid12”ah ]”h"]”h$]”h&]”Œrefid”Œhelper-functions-reference”uh1jmhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjÅubhÿ)�”}”(hhh]”hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒ%Atomic State Reset and Initialization”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”Œid13”ah ]”h"]”h$]”h&]”Œrefid”Œ%atomic-state-reset-and-initialization”uh1jmhj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjÅubhÿ)�”}”(hhh]”hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒAtomic State Helper Reference”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”Œid14”ah ]”h"]”h$]”h&]”Œrefid”Œatomic-state-helper-reference”uh1jmhjSubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjPubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjÅubhÿ)�”}”(hhh]”hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒGEM Atomic Helper Reference”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”Œid15”ah ]”h"]”h$]”h&]”Œrefid”Œgem-atomic-helper-reference”uh1jmhjuubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjrubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjÅubhÿ)�”}”(hhh]”hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒVBLANK Helper Reference”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”Œid16”ah ]”h"]”h$]”h&]”Œrefid”Œvblank-helper-reference”uh1jmhj—ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj”ubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjÅubeh}”(h]”h ]”h"]”h$]”h&]”uh1hùhj©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hþhj„ubhÿ)�”}”(hhh]”hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒ fbdev Helper Functions Reference”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”Œid17”ah ]”h"]”h$]”h&]”Œrefid”Œ fbdev-helper-functions-reference”uh1jmhjÅubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjÂubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj„ubhÿ)�”}”(hhh]”hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒ!format Helper Functions Reference”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”Œid18”ah ]”h"]”h$]”h&]”Œrefid”Œ!format-helper-functions-reference”uh1jmhjçubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjäubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj„ubhÿ)�”}”(hhh]”hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒ*Framebuffer DMA Helper Functions Reference”…”�”}”(hj h²hh³Nh´Nubah}”(h]”Œid19”ah ]”h"]”h$]”h&]”Œrefid”Œ*framebuffer-dma-helper-functions-reference”uh1jmhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj„ubhÿ)�”}”(hhh]”hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒ Framebuffer GEM Helper Reference”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”Œid20”ah ]”h"]”h$]”h&]”Œrefid”Œ framebuffer-gem-helper-reference”uh1jmhj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj(ubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj„ubhÿ)�”}”(hhh]”(hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒBridges”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”Œid21”ah ]”h"]”h$]”h&]”Œrefid”Œbridges”uh1jmhjMubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjJubhú)�”}”(hhh]”(hÿ)�”}”(hhh]”hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒOverview”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”Œid22”ah ]”h"]”h$]”h&]”Œrefid”Œid1”uh1jmhjlubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjiubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjfubhÿ)�”}”(hhh]”hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒDisplay Driver Integration”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”Œid23”ah ]”h"]”h$]”h&]”Œrefid”Œdisplay-driver-integration”uh1jmhjŽubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjfubhÿ)�”}”(hhh]”hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒ"Special Care with MIPI-DSI bridges”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”Œid24”ah ]”h"]”h$]”h&]”Œrefid”Œ"special-care-with-mipi-dsi-bridges”uh1jmhj°ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj­ubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjfubhÿ)�”}”(hhh]”hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒBridge Operations”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”Œid25”ah ]”h"]”h$]”h&]”Œrefid”Œbridge-operations”uh1jmhjÒubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjÏubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjfubhÿ)�”}”(hhh]”hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒBridge Chain Format Selection”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”Œid26”ah ]”h"]”h$]”h&]”Œrefid”Œbridge-chain-format-selection”uh1jmhjôubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjñubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjfubhÿ)�”}”(hhh]”hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒBridge Connector Helper”…”�”}”(hjh²hh³Nh´Nubah}”(h]”Œid27”ah ]”h"]”h$]”h&]”Œrefid”Œbridge-connector-helper”uh1jmhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjfubhÿ)�”}”(hhh]”hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒBridge Helper Reference”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”Œid28”ah ]”h"]”h$]”h&]”Œrefid”Œbridge-helper-reference”uh1jmhj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjfubhÿ)�”}”(hhh]”hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒMIPI-DSI bridge operation”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”Œid29”ah ]”h"]”h$]”h&]”Œrefid”Œmipi-dsi-bridge-operation”uh1jmhjZubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjWubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjfubhÿ)�”}”(hhh]”hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒ!Bridge Connector Helper Reference”…”�”}”(hjh²hh³Nh´Nubah}”(h]”Œid30”ah ]”h"]”h$]”h&]”Œrefid”Œ!bridge-connector-helper-reference”uh1jmhj|ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjyubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjfubhÿ)�”}”(hhh]”hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒPanel-Bridge Helper Reference”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”Œid31”ah ]”h"]”h$]”h&]”Œrefid”Œpanel-bridge-helper-reference”uh1jmhjžubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj›ubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjfubeh}”(h]”h ]”h"]”h$]”h&]”uh1hùhjJubeh}”(h]”h ]”h"]”h$]”h&]”uh1hþhj„ubhÿ)�”}”(hhh]”hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒPanel Helper Reference”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”Œid32”ah ]”h"]”h$]”h&]”Œrefid”Œpanel-helper-reference”uh1jmhjÌubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj„ubhÿ)�”}”(hhh]”hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒ#Panel Self Refresh Helper Reference”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”Œid33”ah ]”h"]”h$]”h&]”Œrefid”Œ#panel-self-refresh-helper-reference”uh1jmhjîubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjëubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj„ubhÿ)�”}”(hhh]”(hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒHDMI Atomic State Helpers”…”�”}”(hjh²hh³Nh´Nubah}”(h]”Œid34”ah ]”h"]”h$]”h&]”Œrefid”Œhdmi-atomic-state-helpers”uh1jmhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj ubhú)�”}”(hhh]”(hÿ)�”}”(hhh]”(hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒOverview”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”Œid35”ah ]”h"]”h$]”h&]”Œrefid”Œid2”uh1jmhj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj,ubhú)�”}”(hhh]”(hÿ)�”}”(hhh]”hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒInfoframes Compliance”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”Œid36”ah ]”h"]”h$]”h&]”Œrefid”Œinfoframes-compliance”uh1jmhjNubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjKubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjHubhÿ)�”}”(hhh]”hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒTesting”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”Œid37”ah ]”h"]”h$]”h&]”Œrefid”Œtesting”uh1jmhjpubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjmubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjHubeh}”(h]”h ]”h"]”h$]”h&]”uh1hùhj,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hþhj)ubhÿ)�”}”(hhh]”hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒFunctions Reference”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”Œid38”ah ]”h"]”h$]”h&]”Œrefid”Œfunctions-reference”uh1jmhjžubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj›ubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hùhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hþhj„ubhÿ)�”}”(hhh]”hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒHDCP Helper Functions Reference”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”Œid39”ah ]”h"]”h$]”h&]”Œrefid”Œhdcp-helper-functions-reference”uh1jmhjÌubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj„ubhÿ)�”}”(hhh]”hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒ'Display Port Helper Functions Reference”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”Œid40”ah ]”h"]”h$]”h&]”Œrefid”Œ'display-port-helper-functions-reference”uh1jmhjîubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjëubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj„ubhÿ)�”}”(hhh]”hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒ+Display Port CEC Helper Functions Reference”…”�”}”(hjh²hh³Nh´Nubah}”(h]”Œid41”ah ]”h"]”h$]”h&]”Œrefid”Œ+display-port-cec-helper-functions-reference”uh1jmhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj„ubhÿ)�”}”(hhh]”hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒ9Display Port Dual Mode Adaptor Helper Functions Reference”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”Œid42”ah ]”h"]”h$]”h&]”Œrefid”Œ9display-port-dual-mode-adaptor-helper-functions-reference”uh1jmhj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj„ubhÿ)�”}”(hhh]”(hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒDisplay Port MST Helpers”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”Œid43”ah ]”h"]”h$]”h&]”Œrefid”Œdisplay-port-mst-helpers”uh1jmhjTubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjQubhú)�”}”(hhh]”(hÿ)�”}”(hhh]”(hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒOverview”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”Œid44”ah ]”h"]”h$]”h&]”Œrefid”Œid3”uh1jmhjsubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjpubhú)�”}”(hhh]”(hÿ)�”}”(hhh]”hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒTopology refcount overview”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”Œid45”ah ]”h"]”h$]”h&]”Œrefid”Œtopology-refcount-overview”uh1jmhj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjŒubhÿ)�”}”(hhh]”hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒMalloc refcount overview”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”Œid46”ah ]”h"]”h$]”h&]”Œrefid”Œmalloc-refcount-overview”uh1jmhj´ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj±ubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjŒubhÿ)�”}”(hhh]”hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒ$Refcount relationships in a topology”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”Œid47”ah ]”h"]”h$]”h&]”Œrefid”Œ$refcount-relationships-in-a-topology”uh1jmhjÖubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjÓubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1hùhjpubeh}”(h]”h ]”h"]”h$]”h&]”uh1hþhjmubhÿ)�”}”(hhh]”hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒFunctions Reference”…”�”}”(hjh²hh³Nh´Nubah}”(h]”Œid48”ah ]”h"]”h$]”h&]”Œrefid”Œid4”uh1jmhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjmubhÿ)�”}”(hhh]”hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒTopology Lifetime Internals”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”Œid49”ah ]”h"]”h$]”h&]”Œrefid”Œtopology-lifetime-internals”uh1jmhj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjmubeh}”(h]”h ]”h"]”h$]”h&]”uh1hùhjQubeh}”(h]”h ]”h"]”h$]”h&]”uh1hþhj„ubhÿ)�”}”(hhh]”hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒ#MIPI DBI Helper Functions Reference”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”Œid50”ah ]”h"]”h$]”h&]”Œrefid”Œ#mipi-dbi-helper-functions-reference”uh1jmhjTubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjQubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj„ubhÿ)�”}”(hhh]”hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒ#MIPI DSI Helper Functions Reference”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”Œid51”ah ]”h"]”h$]”h&]”Œrefid”Œ#mipi-dsi-helper-functions-reference”uh1jmhjvubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjsubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj„ubhÿ)�”}”(hhh]”hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒ5Display Stream Compression Helper Functions Reference”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”Œid52”ah ]”h"]”h$]”h&]”Œrefid”Œ5display-stream-compression-helper-functions-reference”uh1jmhj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj•ubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj„ubhÿ)�”}”(hhh]”hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒ)Output Probing Helper Functions Reference”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”Œid53”ah ]”h"]”h$]”h&]”Œrefid”Œ)output-probing-helper-functions-reference”uh1jmhjºubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj·ubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj„ubhÿ)�”}”(hhh]”hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒEDID Helper Functions Reference”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”Œid54”ah ]”h"]”h$]”h&]”Œrefid”Œedid-helper-functions-reference”uh1jmhjÜubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjÙubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj„ubhÿ)�”}”(hhh]”hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒSCDC Helper Functions Reference”…”�”}”(hjh²hh³Nh´Nubah}”(h]”Œid55”ah ]”h"]”h$]”h&]”Œrefid”Œscdc-helper-functions-reference”uh1jmhjþubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjûubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj„ubhÿ)�”}”(hhh]”hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒ HDMI Infoframes Helper Reference”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”Œid56”ah ]”h"]”h$]”h&]”Œrefid”Œ hdmi-infoframes-helper-reference”uh1jmhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj„ubhÿ)�”}”(hhh]”hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒRectangle Utilities Reference”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”Œid57”ah ]”h"]”h$]”h&]”Œrefid”Œrectangle-utilities-reference”uh1jmhjBubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj„ubhÿ)�”}”(hhh]”hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒFlip-work Helper Reference”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”Œid58”ah ]”h"]”h$]”h&]”Œrefid”Œflip-work-helper-reference”uh1jmhjdubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjaubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj„ubhÿ)�”}”(hhh]”hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒAuxiliary Modeset Helpers”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”Œid59”ah ]”h"]”h$]”h&]”Œrefid”Œauxiliary-modeset-helpers”uh1jmhj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjƒubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj„ubhÿ)�”}”(hhh]”hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒ OF/DT Helpers”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”Œid60”ah ]”h"]”h$]”h&]”Œrefid”Œ of-dt-helpers”uh1jmhj¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj„ubhÿ)�”}”(hhh]”hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒLegacy Plane Helper Reference”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”Œid61”ah ]”h"]”h$]”h&]”Œrefid”Œlegacy-plane-helper-reference”uh1jmhjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjÇubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj„ubhÿ)�”}”(hhh]”hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒ.Legacy CRTC/Modeset Helper Functions Reference”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”Œid62”ah ]”h"]”h$]”h&]”Œrefid”Œ.legacy-crtc-modeset-helper-functions-reference”uh1jmhjìubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjéubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj„ubhÿ)�”}”(hhh]”hÎ)�”}”(hhh]”jn)�”}”(hhh]”hŒPrivacy-screen class”…”�”}”(hj h²hh³Nh´Nubah}”(h]”Œid63”ah ]”h"]”h$]”h&]”Œrefid”Œprivacy-screen-class”uh1jmhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hùhjgubeh}”(h]”h ]”h"]”h$]”h&]”uh1hþhjdubah}”(h]”h ]”h"]”h$]”h&]”uh1hùhjRh²hh³Nh´Nubeh}”(h]”Œcontents”ah ]”Œcontents”ah"]”Œcontents”ah$]”h&]”uh1jPh³hÌh´K$hh·h²hubh¶)�”}”(hhh]”(h»)�”}”(hŒ+Modeset Helper Reference for Common Vtables”h]”hŒ+Modeset Helper Reference for Common Vtables”…”�”}”(hjK h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÊj–uh1hºhjH h²hh³hÌh´K'ubhÎ)�”}”(hX`The DRM mode setting helper functions are common code for drivers to use if they wish. Drivers are not forced to use this code in their implementations but it would be useful if the code they do use at least provides a consistent interface and operation to userspace. Therefore it is highly recommended to use the provided helpers as much as possible.”h]”hX`The DRM mode setting helper functions are common code for drivers to use if they wish. Drivers are not forced to use this code in their implementations but it would be useful if the code they do use at least provides a consistent interface and operation to userspace. Therefore it is highly recommended to use the provided helpers as much as possible.”…”�”}”(hjY h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:41: ./include/drm/drm_modeset_helper_vtables.h”h´K$hjH h²hubhÎ)�”}”(hŒ™Because there is only one pointer per modeset object to hold a vfunc table for helper libraries they are by necessity shared among the different helpers.”h]”hŒ™Because there is only one pointer per modeset object to hold a vfunc table for helper libraries they are by necessity shared among the different helpers.”…”�”}”(hjh h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:41: ./include/drm/drm_modeset_helper_vtables.h”h´K*hjH h²hubhÎ)�”}”(hŒTTo make this clear all the helper vtables are pulled together in this location here.”h]”hŒTTo make this clear all the helper vtables are pulled together in this location here.”…”�”}”(hjw h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:41: ./include/drm/drm_modeset_helper_vtables.h”h´K.hjH h²hubhŒindex”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(Œsingle”Œ drm_crtc_helper_funcs (C struct)”Œc.drm_crtc_helper_funcs”hNt”auh1j† hjH h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´NubhŒdesc”“”)�”}”(hhh]”(hŒdesc_signature”“”)�”}”(hŒdrm_crtc_helper_funcs”h]”hŒdesc_signature_line”“”)�”}”(hŒstruct drm_crtc_helper_funcs”h]”(hŒdesc_sig_keyword”“”)�”}”(hŒstruct”h]”hŒstruct”…”�”}”(hj« h²hh³Nh´Nubah}”(h]”h ]”Œk”ah"]”h$]”h&]”uh1j© hj¥ h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´KubhŒdesc_sig_space”“”)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½ h²hh³Nh´Nubah}”(h]”h ]”Œw”ah"]”h$]”h&]”uh1j» hj¥ h²hh³jº h´KubhŒ desc_name”“”)�”}”(hŒdrm_crtc_helper_funcs”h]”hŒ desc_sig_name”“”)�”}”(hj¡ h]”hŒdrm_crtc_helper_funcs”…”�”}”(hjÔ h²hh³Nh´Nubah}”(h]”h ]”Œn”ah"]”h$]”h&]”uh1jÒ hjÎ ubah}”(h]”h ]”(Œsig-name”Œdescname”eh"]”h$]”h&]”Œ xml:space”Œpreserve”uh1jÌ hj¥ h²hh³jº h´Kubeh}”(h]”h ]”h"]”h$]”h&]”jê jë Œ add_permalink”ˆuh1j£ Œsphinx_line_type”Œ declarator”hjŸ h²hh³jº h´Kubah}”(h]”j• ah ]”(Œsig”Œ sig-object”eh"]”h$]”h&]”Œ is_multiline”ˆŒ _toc_parts”)Œ _toc_name”huh1j� h³jº h´Khjš h²hubhŒ desc_content”“”)�”}”(hhh]”hÎ)�”}”(hŒhelper operations for CRTCs”h]”hŒhelper operations for CRTCs”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´K8hj h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjš h²hh³jº h´Kubeh}”(h]”h ]”(Œc”Œstruct”eh"]”h$]”h&]”Œdomain”j Œobjtype”j Œdesctype”j Œnoindex”‰Œ noindexentry”‰Œnocontentsentry”‰uh1j˜ h²hhjH h³j— h´NubhŒ container”“”)�”}”(hXË@**Definition**:: struct drm_crtc_helper_funcs { void (*dpms)(struct drm_crtc *crtc, int mode); void (*prepare)(struct drm_crtc *crtc); void (*commit)(struct drm_crtc *crtc); enum drm_mode_status (*mode_valid)(struct drm_crtc *crtc, const struct drm_display_mode *mode); bool (*mode_fixup)(struct drm_crtc *crtc, const struct drm_display_mode *mode, struct drm_display_mode *adjusted_mode); int (*mode_set)(struct drm_crtc *crtc, struct drm_display_mode *mode, struct drm_display_mode *adjusted_mode, int x, int y, struct drm_framebuffer *old_fb); void (*mode_set_nofb)(struct drm_crtc *crtc); int (*mode_set_base)(struct drm_crtc *crtc, int x, int y, struct drm_framebuffer *old_fb); void (*disable)(struct drm_crtc *crtc); int (*atomic_check)(struct drm_crtc *crtc, struct drm_atomic_commit *state); void (*atomic_begin)(struct drm_crtc *crtc, struct drm_atomic_commit *state); void (*atomic_flush)(struct drm_crtc *crtc, struct drm_atomic_commit *state); void (*atomic_enable)(struct drm_crtc *crtc, struct drm_atomic_commit *state); void (*atomic_disable)(struct drm_crtc *crtc, struct drm_atomic_commit *state); bool (*get_scanout_position)(struct drm_crtc *crtc, bool in_vblank_irq, int *vpos, int *hpos, ktime_t *stime, ktime_t *etime, const struct drm_display_mode *mode); bool (*handle_vblank_timeout)(struct drm_crtc *crtc); }; **Members** ``dpms`` Callback to control power levels on the CRTC. If the mode passed in is unsupported, the provider must use the next lowest power level. This is used by the legacy CRTC helpers to implement DPMS functionality in drm_helper_connector_dpms(). This callback is also used to disable a CRTC by calling it with DRM_MODE_DPMS_OFF if the **disable** hook isn't used. This callback is used by the legacy CRTC helpers. Atomic helpers also support using this hook for enabling and disabling a CRTC to facilitate transitions to atomic, but it is deprecated. Instead **atomic_enable** and **atomic_disable** should be used. ``prepare`` This callback should prepare the CRTC for a subsequent modeset, which in practice means the driver should disable the CRTC if it is running. Most drivers ended up implementing this by calling their **dpms** hook with DRM_MODE_DPMS_OFF. This callback is used by the legacy CRTC helpers. Atomic helpers also support using this hook for disabling a CRTC to facilitate transitions to atomic, but it is deprecated. Instead **atomic_disable** should be used. ``commit`` This callback should commit the new mode on the CRTC after a modeset, which in practice means the driver should enable the CRTC. Most drivers ended up implementing this by calling their **dpms** hook with DRM_MODE_DPMS_ON. This callback is used by the legacy CRTC helpers. Atomic helpers also support using this hook for enabling a CRTC to facilitate transitions to atomic, but it is deprecated. Instead **atomic_enable** should be used. ``mode_valid`` This callback is used to check if a specific mode is valid in this crtc. This should be implemented if the crtc has some sort of restriction in the modes it can display. For example, a given crtc may be responsible to set a clock value. If the clock can not produce all the values for the available modes then this callback can be used to restrict the number of modes to only the ones that can be displayed. This hook is used by the probe helpers to filter the mode list in drm_helper_probe_single_connector_modes(), and it is used by the atomic helpers to validate modes supplied by userspace in drm_atomic_helper_check_modeset(). This function is optional. NOTE: Since this function is both called from the check phase of an atomic commit, and the mode validation in the probe paths it is not allowed to look at anything else but the passed-in mode, and validate it against configuration-invariant hardware constraints. Any further limits which depend upon the configuration can only be checked in **mode_fixup** or **atomic_check**. RETURNS: drm_mode_status Enum ``mode_fixup`` This callback is used to validate a mode. The parameter mode is the display mode that userspace requested, adjusted_mode is the mode the encoders need to be fed with. Note that this is the inverse semantics of the meaning for the :c:type:`drm_encoder` and :c:type:`drm_bridge_funcs.mode_fixup ` vfunc. If the CRTC cannot support the requested conversion from mode to adjusted_mode it should reject the modeset. See also :c:type:`drm_crtc_state.adjusted_mode ` for more details. This function is used by both legacy CRTC helpers and atomic helpers. With atomic helpers it is optional. NOTE: This function is called in the check phase of atomic modesets, which can be aborted for any reason (including on userspace's request to just check whether a configuration would be possible). Atomic drivers MUST NOT touch any persistent state (hardware or software) or data structures except the passed in adjusted_mode parameter. This is in contrast to the legacy CRTC helpers where this was allowed. Atomic drivers which need to inspect and adjust more state should instead use the **atomic_check** callback, but note that they're not perfectly equivalent: **mode_valid** is called from drm_atomic_helper_check_modeset(), but **atomic_check** is called from drm_atomic_helper_check_planes(), because originally it was meant for plane update checks only. Also beware that userspace can request its own custom modes, neither core nor helpers filter modes to the list of probe modes reported by the GETCONNECTOR IOCTL and stored in :c:type:`drm_connector.modes `. To ensure that modes are filtered consistently put any CRTC constraints and limits checks into **mode_valid**. RETURNS: True if an acceptable configuration is possible, false if the modeset operation should be rejected. ``mode_set`` This callback is used by the legacy CRTC helpers to set a new mode, position and framebuffer. Since it ties the primary plane to every mode change it is incompatible with universal plane support. And since it can't update other planes it's incompatible with atomic modeset support. This callback is only used by CRTC helpers and deprecated. RETURNS: 0 on success or a negative error code on failure. ``mode_set_nofb`` This callback is used to update the display mode of a CRTC without changing anything of the primary plane configuration. This fits the requirement of atomic and hence is used by the atomic helpers. Note that the display pipe is completely off when this function is called. Atomic drivers which need hardware to be running before they program the new display mode (e.g. because they implement runtime PM) should not use this hook. This is because the helper library calls this hook only once per mode change and not every time the display pipeline is suspended using either DPMS or the new "ACTIVE" property. Which means register values set in this callback might get reset when the CRTC is suspended, but not restored. Such drivers should instead move all their CRTC setup into the **atomic_enable** callback. This callback is optional. ``mode_set_base`` This callback is used by the legacy CRTC helpers to set a new framebuffer and scanout position. It is optional and used as an optimized fast-path instead of a full mode set operation with all the resulting flickering. If it is not present drm_crtc_helper_set_config() will fall back to a full modeset, using the **mode_set** callback. Since it can't update other planes it's incompatible with atomic modeset support. This callback is only used by the CRTC helpers and deprecated. RETURNS: 0 on success or a negative error code on failure. ``disable`` This callback should be used to disable the CRTC. With the atomic drivers it is called after all encoders connected to this CRTC have been shut off already using their own :c:type:`drm_encoder_helper_funcs.disable ` hook. If that sequence is too simple drivers can just add their own hooks and call it from this CRTC callback here by looping over all encoders connected to it using for_each_encoder_on_crtc(). This hook is used both by legacy CRTC helpers and atomic helpers. Atomic drivers don't need to implement it if there's no need to disable anything at the CRTC level. To ensure that runtime PM handling (using either DPMS or the new "ACTIVE" property) works **disable** must be the inverse of **atomic_enable** for atomic drivers. Atomic drivers should consider to use **atomic_disable** instead of this one. NOTE: With legacy CRTC helpers there's a big semantic difference between **disable** and other hooks (like **prepare** or **dpms**) used to shut down a CRTC: **disable** is only called when also logically disabling the display pipeline and needs to release any resources acquired in **mode_set** (like shared PLLs, or again release pinned framebuffers). Therefore **disable** must be the inverse of **mode_set** plus **commit** for drivers still using legacy CRTC helpers, which is different from the rules under atomic. ``atomic_check`` Drivers should check plane-update related CRTC constraints in this hook. They can also check mode related limitations but need to be aware of the calling order, since this hook is used by drm_atomic_helper_check_planes() whereas the preparations needed to check output routing and the display mode is done in drm_atomic_helper_check_modeset(). Therefore drivers that want to check output routing and display mode constraints in this callback must ensure that drm_atomic_helper_check_modeset() has been called beforehand. This is calling order used by the default helper implementation in drm_atomic_helper_check(). When using drm_atomic_helper_check_planes() this hook is called after the :c:type:`drm_plane_helper_funcs.atomic_check ` hook for planes, which allows drivers to assign shared resources requested by planes in this callback here. For more complicated dependencies the driver can call the provided check helpers multiple times until the computed state has a final configuration and everything has been checked. This function is also allowed to inspect any other object's state and can add more state objects to the atomic commit if needed. Care must be taken though to ensure that state check and compute functions for these added states are all called, and derived state in other objects all updated. Again the recommendation is to just call check helpers until a maximal configuration is reached. This callback is used by the atomic modeset helpers, but it is optional. NOTE: This function is called in the check phase of an atomic update. The driver is not allowed to change anything outside of the free-standing state object passed-in. Also beware that userspace can request its own custom modes, neither core nor helpers filter modes to the list of probe modes reported by the GETCONNECTOR IOCTL and stored in :c:type:`drm_connector.modes `. To ensure that modes are filtered consistently put any CRTC constraints and limits checks into **mode_valid**. RETURNS: 0 on success, -EINVAL if the state or the transition can't be supported, -ENOMEM on memory allocation failure and -EDEADLK if an attempt to obtain another state object ran into a :c:type:`drm_modeset_lock` deadlock. ``atomic_begin`` Drivers should prepare for an atomic update of multiple planes on a CRTC in this hook. Depending upon hardware this might be vblank evasion, blocking updates by setting bits or doing preparatory work for e.g. manual update display. This hook is called before any plane commit functions are called. Note that the power state of the display pipe when this function is called depends upon the exact helpers and calling sequence the driver has picked. See drm_atomic_helper_commit_planes() for a discussion of the tradeoffs and variants of plane commit helpers. This callback is used by the atomic modeset helpers, but it is optional. ``atomic_flush`` Drivers should finalize an atomic update of multiple planes on a CRTC in this hook. Depending upon hardware this might include checking that vblank evasion was successful, unblocking updates by setting bits or setting the GO bit to flush out all updates. Simple hardware or hardware with special requirements can commit and flush out all updates for all planes from this hook and forgo all the other commit hooks for plane updates. This hook is called after any plane commit functions are called. Note that the power state of the display pipe when this function is called depends upon the exact helpers and calling sequence the driver has picked. See drm_atomic_helper_commit_planes() for a discussion of the tradeoffs and variants of plane commit helpers. This callback is used by the atomic modeset helpers, but it is optional. ``atomic_enable`` This callback should be used to enable the CRTC. With the atomic drivers it is called before all encoders connected to this CRTC are enabled through the encoder's own :c:type:`drm_encoder_helper_funcs.enable ` hook. If that sequence is too simple drivers can just add their own hooks and call it from this CRTC callback here by looping over all encoders connected to it using for_each_encoder_on_crtc(). This hook is used only by atomic helpers, for symmetry with **atomic_disable**. Atomic drivers don't need to implement it if there's no need to enable anything at the CRTC level. To ensure that runtime PM handling (using either DPMS or the new "ACTIVE" property) works **atomic_enable** must be the inverse of **atomic_disable** for atomic drivers. This function is optional. ``atomic_disable`` This callback should be used to disable the CRTC. With the atomic drivers it is called after all encoders connected to this CRTC have been shut off already using their own :c:type:`drm_encoder_helper_funcs.disable ` hook. If that sequence is too simple drivers can just add their own hooks and call it from this CRTC callback here by looping over all encoders connected to it using for_each_encoder_on_crtc(). This hook is used only by atomic helpers. Atomic drivers don't need to implement it if there's no need to disable anything at the CRTC level. This function is optional. ``get_scanout_position`` Called by vblank timestamping code. Returns the current display scanout position from a CRTC and an optional accurate ktime_get() timestamp of when the position was measured. Note that this is a helper callback which is only used if a driver uses drm_crtc_vblank_helper_get_vblank_timestamp() for the **drm_crtc_funcs.get_vblank_timestamp** callback. Parameters: crtc: The CRTC. in_vblank_irq: True when called from drm_crtc_handle_vblank(). Some drivers need to apply some workarounds for gpu-specific vblank irq quirks if the flag is set. vpos: Target location for current vertical scanout position. hpos: Target location for current horizontal scanout position. stime: Target location for timestamp taken immediately before scanout position query. Can be NULL to skip timestamp. etime: Target location for timestamp taken immediately after scanout position query. Can be NULL to skip timestamp. mode: Current display timings. Returns vpos as a positive number while in active scanout area. Returns vpos as a negative number inside vblank, counting the number of scanlines to go until end of vblank, e.g., -1 means "one scanline until start of active scanout / end of vblank." Returns: True on success, false if a reliable scanout position counter could not be read out. ``handle_vblank_timeout`` Handles timeouts of the vblank timer. Called by CRTC's the vblank timer on each timeout. Semantics is equivalient to drm_crtc_handle_vblank(). Implementations should invoke drm_crtc_handle_vblank() as part of processing the timeout. This callback is optional. If unset, the vblank timer invokes drm_crtc_handle_vblank() directly.”h]”(hÎ)�”}”(hŒ**Definition**::”h]”(hŒstrong”“”)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj4 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj. ubhŒ:”…”�”}”(hj. h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Khj* ubhÎ)�”}”(hŒ **Members**”h]”j3 )�”}”(hj` h]”hŒMembers”…”�”}”(hjb h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj^ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´KQhj* ubhŒdefinition_list”“”)�”}”(hhh]”(hŒdefinition_list_item”“”)�”}”(hXn``dpms`` Callback to control power levels on the CRTC. If the mode passed in is unsupported, the provider must use the next lowest power level. This is used by the legacy CRTC helpers to implement DPMS functionality in drm_helper_connector_dpms(). This callback is also used to disable a CRTC by calling it with DRM_MODE_DPMS_OFF if the **disable** hook isn't used. This callback is used by the legacy CRTC helpers. Atomic helpers also support using this hook for enabling and disabling a CRTC to facilitate transitions to atomic, but it is deprecated. Instead **atomic_enable** and **atomic_disable** should be used. ”h]”(hŒterm”“”)�”}”(hŒ``dpms``”h]”hŒliteral”“”)�”}”(hj… h]”hŒdpms”…”�”}”(hj‰ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjƒ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´KKhj} ubhŒ definition”“”)�”}”(hhh]”(hÎ)�”}”(hŒïCallback to control power levels on the CRTC. If the mode passed in is unsupported, the provider must use the next lowest power level. This is used by the legacy CRTC helpers to implement DPMS functionality in drm_helper_connector_dpms().”h]”hŒïCallback to control power levels on the CRTC. If the mode passed in is unsupported, the provider must use the next lowest power level. This is used by the legacy CRTC helpers to implement DPMS functionality in drm_helper_connector_dpms().”…”�”}”(hj¢ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´K@hjŸ ubhÎ)�”}”(hŒuThis callback is also used to disable a CRTC by calling it with DRM_MODE_DPMS_OFF if the **disable** hook isn't used.”h]”(hŒYThis callback is also used to disable a CRTC by calling it with DRM_MODE_DPMS_OFF if the ”…”�”}”(hj± h²hh³Nh´Nubj3 )�”}”(hŒ **disable**”h]”hŒdisable”…”�”}”(hj¹ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj± ubhŒ hook isn’t used.”…”�”}”(hj± h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´KEhjŸ ubhÎ)�”}”(hŒüThis callback is used by the legacy CRTC helpers. Atomic helpers also support using this hook for enabling and disabling a CRTC to facilitate transitions to atomic, but it is deprecated. Instead **atomic_enable** and **atomic_disable** should be used.”h]”(hŒÄThis callback is used by the legacy CRTC helpers. Atomic helpers also support using this hook for enabling and disabling a CRTC to facilitate transitions to atomic, but it is deprecated. Instead ”…”�”}”(hjÒ h²hh³Nh´Nubj3 )�”}”(hŒ**atomic_enable**”h]”hŒ atomic_enable”…”�”}”(hjÚ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÒ ubhŒ and ”…”�”}”(hjÒ h²hh³Nh´Nubj3 )�”}”(hŒ**atomic_disable**”h]”hŒatomic_disable”…”�”}”(hjì h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÒ ubhŒ should be used.”…”�”}”(hjÒ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´KHhjŸ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj} ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jœ h´KKhjx ubj| )�”}”(hXÓ``prepare`` This callback should prepare the CRTC for a subsequent modeset, which in practice means the driver should disable the CRTC if it is running. Most drivers ended up implementing this by calling their **dpms** hook with DRM_MODE_DPMS_OFF. This callback is used by the legacy CRTC helpers. Atomic helpers also support using this hook for disabling a CRTC to facilitate transitions to atomic, but it is deprecated. Instead **atomic_disable** should be used. ”h]”(j‚ )�”}”(hŒ ``prepare``”h]”jˆ )�”}”(hj h]”hŒprepare”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´KZhj ubjž )�”}”(hhh]”(hÎ)�”}”(hŒëThis callback should prepare the CRTC for a subsequent modeset, which in practice means the driver should disable the CRTC if it is running. Most drivers ended up implementing this by calling their **dpms** hook with DRM_MODE_DPMS_OFF.”h]”(hŒÆThis callback should prepare the CRTC for a subsequent modeset, which in practice means the driver should disable the CRTC if it is running. Most drivers ended up implementing this by calling their ”…”�”}”(hj0 h²hh³Nh´Nubj3 )�”}”(hŒ**dpms**”h]”hŒdpms”…”�”}”(hj8 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj0 ubhŒ hook with DRM_MODE_DPMS_OFF.”…”�”}”(hj0 h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´KRhj- ubhÎ)�”}”(hŒÙThis callback is used by the legacy CRTC helpers. Atomic helpers also support using this hook for disabling a CRTC to facilitate transitions to atomic, but it is deprecated. Instead **atomic_disable** should be used.”h]”(hŒ·This callback is used by the legacy CRTC helpers. Atomic helpers also support using this hook for disabling a CRTC to facilitate transitions to atomic, but it is deprecated. Instead ”…”�”}”(hjQ h²hh³Nh´Nubj3 )�”}”(hŒ**atomic_disable**”h]”hŒatomic_disable”…”�”}”(hjY h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjQ ubhŒ should be used.”…”�”}”(hjQ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´KWhj- ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j, h´KZhjx ubj| )�”}”(hXÄ``commit`` This callback should commit the new mode on the CRTC after a modeset, which in practice means the driver should enable the CRTC. Most drivers ended up implementing this by calling their **dpms** hook with DRM_MODE_DPMS_ON. This callback is used by the legacy CRTC helpers. Atomic helpers also support using this hook for enabling a CRTC to facilitate transitions to atomic, but it is deprecated. Instead **atomic_enable** should be used. ”h]”(j‚ )�”}”(hŒ ``commit``”h]”jˆ )�”}”(hj„ h]”hŒcommit”…”�”}”(hj† h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj‚ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Kihj~ ubjž )�”}”(hhh]”(hÎ)�”}”(hŒßThis callback should commit the new mode on the CRTC after a modeset, which in practice means the driver should enable the CRTC. Most drivers ended up implementing this by calling their **dpms** hook with DRM_MODE_DPMS_ON.”h]”(hŒ»This callback should commit the new mode on the CRTC after a modeset, which in practice means the driver should enable the CRTC. Most drivers ended up implementing this by calling their ”…”�”}”(hj� h²hh³Nh´Nubj3 )�”}”(hŒ**dpms**”h]”hŒdpms”…”�”}”(hj¥ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj� ubhŒ hook with DRM_MODE_DPMS_ON.”…”�”}”(hj� h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Kahjš ubhÎ)�”}”(hŒ×This callback is used by the legacy CRTC helpers. Atomic helpers also support using this hook for enabling a CRTC to facilitate transitions to atomic, but it is deprecated. Instead **atomic_enable** should be used.”h]”(hŒ¶This callback is used by the legacy CRTC helpers. Atomic helpers also support using this hook for enabling a CRTC to facilitate transitions to atomic, but it is deprecated. Instead ”…”�”}”(hj¾ h²hh³Nh´Nubj3 )�”}”(hŒ**atomic_enable**”h]”hŒ atomic_enable”…”�”}”(hjÆ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¾ ubhŒ should be used.”…”�”}”(hj¾ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Kfhjš ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj~ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j™ h´Kihjx ubj| )�”}”(hX?``mode_valid`` This callback is used to check if a specific mode is valid in this crtc. This should be implemented if the crtc has some sort of restriction in the modes it can display. For example, a given crtc may be responsible to set a clock value. If the clock can not produce all the values for the available modes then this callback can be used to restrict the number of modes to only the ones that can be displayed. This hook is used by the probe helpers to filter the mode list in drm_helper_probe_single_connector_modes(), and it is used by the atomic helpers to validate modes supplied by userspace in drm_atomic_helper_check_modeset(). This function is optional. NOTE: Since this function is both called from the check phase of an atomic commit, and the mode validation in the probe paths it is not allowed to look at anything else but the passed-in mode, and validate it against configuration-invariant hardware constraints. Any further limits which depend upon the configuration can only be checked in **mode_fixup** or **atomic_check**. RETURNS: drm_mode_status Enum ”h]”(j‚ )�”}”(hŒ``mode_valid``”h]”jˆ )�”}”(hjñ h]”hŒ mode_valid”…”�”}”(hjó h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjï ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´KŠhjë ubjž )�”}”(hhh]”(hÎ)�”}”(hX—This callback is used to check if a specific mode is valid in this crtc. This should be implemented if the crtc has some sort of restriction in the modes it can display. For example, a given crtc may be responsible to set a clock value. If the clock can not produce all the values for the available modes then this callback can be used to restrict the number of modes to only the ones that can be displayed.”h]”hX—This callback is used to check if a specific mode is valid in this crtc. This should be implemented if the crtc has some sort of restriction in the modes it can display. For example, a given crtc may be responsible to set a clock value. If the clock can not produce all the values for the available modes then this callback can be used to restrict the number of modes to only the ones that can be displayed.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Kphj ubhÎ)�”}”(hŒßThis hook is used by the probe helpers to filter the mode list in drm_helper_probe_single_connector_modes(), and it is used by the atomic helpers to validate modes supplied by userspace in drm_atomic_helper_check_modeset().”h]”hŒßThis hook is used by the probe helpers to filter the mode list in drm_helper_probe_single_connector_modes(), and it is used by the atomic helpers to validate modes supplied by userspace in drm_atomic_helper_check_modeset().”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Kxhj ubhÎ)�”}”(hŒThis function is optional.”h]”hŒThis function is optional.”…”�”}”(hj( h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´K}hj ubhÎ)�”}”(hŒNOTE:”h]”hŒNOTE:”…”�”}”(hj7 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Khj ubhÎ)�”}”(hXrSince this function is both called from the check phase of an atomic commit, and the mode validation in the probe paths it is not allowed to look at anything else but the passed-in mode, and validate it against configuration-invariant hardware constraints. Any further limits which depend upon the configuration can only be checked in **mode_fixup** or **atomic_check**.”h]”(hXOSince this function is both called from the check phase of an atomic commit, and the mode validation in the probe paths it is not allowed to look at anything else but the passed-in mode, and validate it against configuration-invariant hardware constraints. Any further limits which depend upon the configuration can only be checked in ”…”�”}”(hjF h²hh³Nh´Nubj3 )�”}”(hŒ**mode_fixup**”h]”hŒ mode_fixup”…”�”}”(hjN h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjF ubhŒ or ”…”�”}”(hjF h²hh³Nh´Nubj3 )�”}”(hŒ**atomic_check**”h]”hŒ atomic_check”…”�”}”(hj` h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjF ubhŒ.”…”�”}”(hjF h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´K�hj ubhÎ)�”}”(hŒRETURNS:”h]”hŒRETURNS:”…”�”}”(hjy h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Kˆhj ubhÎ)�”}”(hŒdrm_mode_status Enum”h]”hŒdrm_mode_status Enum”…”�”}”(hjˆ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j h´KŠhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjë ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j h´KŠhjx ubj| )�”}”(hX4``mode_fixup`` This callback is used to validate a mode. The parameter mode is the display mode that userspace requested, adjusted_mode is the mode the encoders need to be fed with. Note that this is the inverse semantics of the meaning for the :c:type:`drm_encoder` and :c:type:`drm_bridge_funcs.mode_fixup ` vfunc. If the CRTC cannot support the requested conversion from mode to adjusted_mode it should reject the modeset. See also :c:type:`drm_crtc_state.adjusted_mode ` for more details. This function is used by both legacy CRTC helpers and atomic helpers. With atomic helpers it is optional. NOTE: This function is called in the check phase of atomic modesets, which can be aborted for any reason (including on userspace's request to just check whether a configuration would be possible). Atomic drivers MUST NOT touch any persistent state (hardware or software) or data structures except the passed in adjusted_mode parameter. This is in contrast to the legacy CRTC helpers where this was allowed. Atomic drivers which need to inspect and adjust more state should instead use the **atomic_check** callback, but note that they're not perfectly equivalent: **mode_valid** is called from drm_atomic_helper_check_modeset(), but **atomic_check** is called from drm_atomic_helper_check_planes(), because originally it was meant for plane update checks only. Also beware that userspace can request its own custom modes, neither core nor helpers filter modes to the list of probe modes reported by the GETCONNECTOR IOCTL and stored in :c:type:`drm_connector.modes `. To ensure that modes are filtered consistently put any CRTC constraints and limits checks into **mode_valid**. RETURNS: True if an acceptable configuration is possible, false if the modeset operation should be rejected. ”h]”(j‚ )�”}”(hŒ``mode_fixup``”h]”jˆ )�”}”(hj¨ h]”hŒ mode_fixup”…”�”}”(hjª h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¦ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´K¸hj¢ ubjž )�”}”(hhh]”(hÎ)�”}”(hXÿThis callback is used to validate a mode. The parameter mode is the display mode that userspace requested, adjusted_mode is the mode the encoders need to be fed with. Note that this is the inverse semantics of the meaning for the :c:type:`drm_encoder` and :c:type:`drm_bridge_funcs.mode_fixup ` vfunc. If the CRTC cannot support the requested conversion from mode to adjusted_mode it should reject the modeset. See also :c:type:`drm_crtc_state.adjusted_mode ` for more details.”h]”(hŒæThis callback is used to validate a mode. The parameter mode is the display mode that userspace requested, adjusted_mode is the mode the encoders need to be fed with. Note that this is the inverse semantics of the meaning for the ”…”�”}”(hjÁ h²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_encoder`”h]”jˆ )�”}”(hjË h]”hŒ drm_encoder”…”�”}”(hjÍ h²hh³Nh´Nubah}”(h]”h ]”(Œxref”j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÉ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œgpu/drm-kms-helpers”Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰Œ c:parent_key”Œsphinx.domains.c”Œ LookupKey”“”)�”}”Œdata”]”sbŒ reftarget”Œ drm_encoder”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´K’hjÁ ubhŒ and ”…”�”}”(hjÁ h²hh³Nh´Nubh)�”}”(hŒ8:c:type:`drm_bridge_funcs.mode_fixup `”h]”jˆ )�”}”(hjú h]”hŒdrm_bridge_funcs.mode_fixup”…”�”}”(hjü h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjø ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³jó h´K’hjÁ ubhŒ~ vfunc. If the CRTC cannot support the requested conversion from mode to adjusted_mode it should reject the modeset. See also ”…”�”•}”(hjÁ h²hh³Nh´Nubh)�”}”(hŒ7:c:type:`drm_crtc_state.adjusted_mode `”h]”jˆ )�”}”(hj h]”hŒdrm_crtc_state.adjusted_mode”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_crtc_state”uh1hh³jó h´K’hjÁ ubhŒ for more details.”…”�”}”(hjÁ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jó h´K’hj¾ ubhÎ)�”}”(hŒiThis function is used by both legacy CRTC helpers and atomic helpers. With atomic helpers it is optional.”h]”hŒiThis function is used by both legacy CRTC helpers and atomic helpers. With atomic helpers it is optional.”…”�”}”(hjD h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Kšhj¾ ubhÎ)�”}”(hŒNOTE:”h]”hŒNOTE:”…”�”}”(hjS h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´K�hj¾ ubhÎ)�”}”(hXIThis function is called in the check phase of atomic modesets, which can be aborted for any reason (including on userspace's request to just check whether a configuration would be possible). Atomic drivers MUST NOT touch any persistent state (hardware or software) or data structures except the passed in adjusted_mode parameter.”h]”hXKThis function is called in the check phase of atomic modesets, which can be aborted for any reason (including on userspace’s request to just check whether a configuration would be possible). Atomic drivers MUST NOT touch any persistent state (hardware or software) or data structures except the passed in adjusted_mode parameter.”…”�”}”(hjb h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´KŸhj¾ ubhÎ)�”}”(hŒFThis is in contrast to the legacy CRTC helpers where this was allowed.”h]”hŒFThis is in contrast to the legacy CRTC helpers where this was allowed.”…”�”}”(hjq h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´K¥hj¾ ubhÎ)�”}”(hXaAtomic drivers which need to inspect and adjust more state should instead use the **atomic_check** callback, but note that they're not perfectly equivalent: **mode_valid** is called from drm_atomic_helper_check_modeset(), but **atomic_check** is called from drm_atomic_helper_check_planes(), because originally it was meant for plane update checks only.”h]”(hŒRAtomic drivers which need to inspect and adjust more state should instead use the ”…”�”}”(hj€ h²hh³Nh´Nubj3 )�”}”(hŒ**atomic_check**”h]”hŒ atomic_check”…”�”}”(hjˆ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj€ ubhŒ= callback, but note that they’re not perfectly equivalent: ”…”�”}”(hj€ h²hh³Nh´Nubj3 )�”}”(hŒ**mode_valid**”h]”hŒ mode_valid”…”�”}”(hjš h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj€ ubhŒ7 is called from drm_atomic_helper_check_modeset(), but ”…”�”}”(hj€ h²hh³Nh´Nubj3 )�”}”(hŒ**atomic_check**”h]”hŒ atomic_check”…”�”}”(hj¬ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj€ ubhŒo is called from drm_atomic_helper_check_planes(), because originally it was meant for plane update checks only.”…”�”}”(hj€ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´K¨hj¾ ubhÎ)�”}”(hXLAlso beware that userspace can request its own custom modes, neither core nor helpers filter modes to the list of probe modes reported by the GETCONNECTOR IOCTL and stored in :c:type:`drm_connector.modes `. To ensure that modes are filtered consistently put any CRTC constraints and limits checks into **mode_valid**.”h]”(hŒ¯Also beware that userspace can request its own custom modes, neither core nor helpers filter modes to the list of probe modes reported by the GETCONNECTOR IOCTL and stored in ”…”�”}”(hjÅ h²hh³Nh´Nubh)�”}”(hŒ-:c:type:`drm_connector.modes `”h]”jˆ )�”}”(hjÏ h]”hŒdrm_connector.modes”…”�”}”(hjÑ h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÍ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_connector”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´K¯hjÅ ubhŒa. To ensure that modes are filtered consistently put any CRTC constraints and limits checks into ”…”�”}”(hjÅ h²hh³Nh´Nubj3 )�”}”(hŒ**mode_valid**”h]”hŒ mode_valid”…”�”}”(hjñ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÅ ubhŒ.”…”�”}”(hjÅ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jì h´K¯hj¾ ubhÎ)�”}”(hŒRETURNS:”h]”hŒRETURNS:”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Kµhj¾ ubhÎ)�”}”(hŒcTrue if an acceptable configuration is possible, false if the modeset operation should be rejected.”h]”hŒcTrue if an acceptable configuration is possible, false if the modeset operation should be rejected.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´K·hj¾ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¢ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j½ h´K¸hjx ubj| )�”}”(hX ``mode_set`` This callback is used by the legacy CRTC helpers to set a new mode, position and framebuffer. Since it ties the primary plane to every mode change it is incompatible with universal plane support. And since it can't update other planes it's incompatible with atomic modeset support. This callback is only used by CRTC helpers and deprecated. RETURNS: 0 on success or a negative error code on failure. ”h]”(j‚ )�”}”(hŒ ``mode_set``”h]”jˆ )�”}”(hj9h]”hŒmode_set”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´KËhj3ubjž )�”}”(hhh]”(hÎ)�”}”(hXThis callback is used by the legacy CRTC helpers to set a new mode, position and framebuffer. Since it ties the primary plane to every mode change it is incompatible with universal plane support. And since it can't update other planes it's incompatible with atomic modeset support.”h]”hXThis callback is used by the legacy CRTC helpers to set a new mode, position and framebuffer. Since it ties the primary plane to every mode change it is incompatible with universal plane support. And since it can’t update other planes it’s incompatible with atomic modeset support.”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´KÁhjOubhÎ)�”}”(hŒ:This callback is only used by CRTC helpers and deprecated.”h]”hŒ:This callback is only used by CRTC helpers and deprecated.”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´KÇhjOubhÎ)�”}”(hŒRETURNS:”h]”hŒRETURNS:”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´KÉhjOubhÎ)�”}”(hŒ10 on success or a negative error code on failure.”h]”hŒ10 on success or a negative error code on failure.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jNh´KËhjOubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jNh´KËhjx ubj| )�”}”(hXZ``mode_set_nofb`` This callback is used to update the display mode of a CRTC without changing anything of the primary plane configuration. This fits the requirement of atomic and hence is used by the atomic helpers. Note that the display pipe is completely off when this function is called. Atomic drivers which need hardware to be running before they program the new display mode (e.g. because they implement runtime PM) should not use this hook. This is because the helper library calls this hook only once per mode change and not every time the display pipeline is suspended using either DPMS or the new "ACTIVE" property. Which means register values set in this callback might get reset when the CRTC is suspended, but not restored. Such drivers should instead move all their CRTC setup into the **atomic_enable** callback. This callback is optional. ”h]”(j‚ )�”}”(hŒ``mode_set_nofb``”h]”jˆ )�”}”(hjŸh]”hŒ mode_set_nofb”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Kâhj™ubjž )�”}”(hhh]”(hÎ)�”}”(hŒÅThis callback is used to update the display mode of a CRTC without changing anything of the primary plane configuration. This fits the requirement of atomic and hence is used by the atomic helpers.”h]”hŒÅThis callback is used to update the display mode of a CRTC without changing anything of the primary plane configuration. This fits the requirement of atomic and hence is used by the atomic helpers.”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´KÔhjµubhÎ)�”}”(hXdNote that the display pipe is completely off when this function is called. Atomic drivers which need hardware to be running before they program the new display mode (e.g. because they implement runtime PM) should not use this hook. This is because the helper library calls this hook only once per mode change and not every time the display pipeline is suspended using either DPMS or the new "ACTIVE" property. Which means register values set in this callback might get reset when the CRTC is suspended, but not restored. Such drivers should instead move all their CRTC setup into the **atomic_enable** callback.”h]”(hXMNote that the display pipe is completely off when this function is called. Atomic drivers which need hardware to be running before they program the new display mode (e.g. because they implement runtime PM) should not use this hook. This is because the helper library calls this hook only once per mode change and not every time the display pipeline is suspended using either DPMS or the new “ACTIVEâ€� property. Which means register values set in this callback might get reset when the CRTC is suspended, but not restored. Such drivers should instead move all their CRTC setup into the ”…”�”}”(hjÇh²hh³Nh´Nubj3 )�”}”(hŒ**atomic_enable**”h]”hŒ atomic_enable”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÇubhŒ callback.”…”�”}”(hjÇh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´KØhjµubhÎ)�”}”(hŒThis callback is optional.”h]”hŒThis callback is optional.”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j´h´Kâhjµubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j´h´Kâhjx ubj| )�”}”(hX0``mode_set_base`` This callback is used by the legacy CRTC helpers to set a new framebuffer and scanout position. It is optional and used as an optimized fast-path instead of a full mode set operation with all the resulting flickering. If it is not present drm_crtc_helper_set_config() will fall back to a full modeset, using the **mode_set** callback. Since it can't update other planes it's incompatible with atomic modeset support. This callback is only used by the CRTC helpers and deprecated. RETURNS: 0 on success or a negative error code on failure. ”h]”(j‚ )�”}”(hŒ``mode_set_base``”h]”jˆ )�”}”(hjh]”hŒ mode_set_base”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Kõhjubjž )�”}”(hhh]”(hÎ)�”}”(hX This callback is used by the legacy CRTC helpers to set a new framebuffer and scanout position. It is optional and used as an optimized fast-path instead of a full mode set operation with all the resulting flickering. If it is not present drm_crtc_helper_set_config() will fall back to a full modeset, using the **mode_set** callback. Since it can't update other planes it's incompatible with atomic modeset support.”h]”(hX8This callback is used by the legacy CRTC helpers to set a new framebuffer and scanout position. It is optional and used as an optimized fast-path instead of a full mode set operation with all the resulting flickering. If it is not present drm_crtc_helper_set_config() will fall back to a full modeset, using the ”…”�”}”(hj!h²hh³Nh´Nubj3 )�”}”(hŒ **mode_set**”h]”hŒmode_set”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj!ubhŒ` callback. Since it can’t update other planes it’s incompatible with atomic modeset support.”…”�”}”(hj!h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´KéhjubhÎ)�”}”(hŒ>This callback is only used by the CRTC helpers and deprecated.”h]”hŒ>This callback is only used by the CRTC helpers and deprecated.”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´KñhjubhÎ)�”}”(hŒRETURNS:”h]”hŒRETURNS:”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´KóhjubhÎ)�”}”(hŒ10 on success or a negative error code on failure.”h]”hŒ10 on success or a negative error code on failure.”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jh´Kõhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jh´Kõhjx ubj| )�”}”(hXd``disable`` This callback should be used to disable the CRTC. With the atomic drivers it is called after all encoders connected to this CRTC have been shut off already using their own :c:type:`drm_encoder_helper_funcs.disable ` hook. If that sequence is too simple drivers can just add their own hooks and call it from this CRTC callback here by looping over all encoders connected to it using for_each_encoder_on_crtc(). This hook is used both by legacy CRTC helpers and atomic helpers. Atomic drivers don't need to implement it if there's no need to disable anything at the CRTC level. To ensure that runtime PM handling (using either DPMS or the new "ACTIVE" property) works **disable** must be the inverse of **atomic_enable** for atomic drivers. Atomic drivers should consider to use **atomic_disable** instead of this one. NOTE: With legacy CRTC helpers there's a big semantic difference between **disable** and other hooks (like **prepare** or **dpms**) used to shut down a CRTC: **disable** is only called when also logically disabling the display pipeline and needs to release any resources acquired in **mode_set** (like shared PLLs, or again release pinned framebuffers). Therefore **disable** must be the inverse of **mode_set** plus **commit** for drivers still using legacy CRTC helpers, which is different from the rules under atomic. ”h]”(j‚ )�”}”(hŒ ``disable``”h]”jˆ )�”}”(hj€h]”hŒdisable”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mhjzubjž )�”}”(hhh]”(hÎ)�”}”(hX³This callback should be used to disable the CRTC. With the atomic drivers it is called after all encoders connected to this CRTC have been shut off already using their own :c:type:`drm_encoder_helper_funcs.disable ` hook. If that sequence is too simple drivers can just add their own hooks and call it from this CRTC callback here by looping over all encoders connected to it using for_each_encoder_on_crtc().”h]”(hŒ¬This callback should be used to disable the CRTC. With the atomic drivers it is called after all encoders connected to this CRTC have been shut off already using their own ”…”�”}”(hj™h²hh³Nh´Nubh)�”}”(hŒE:c:type:`drm_encoder_helper_funcs.disable `”h]”jˆ )�”}”(hj£h]”hŒ drm_encoder_helper_funcs.disable”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj¡ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_encoder_helper_funcs”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Kýhj™ubhŒÂ hook. If that sequence is too simple drivers can just add their own hooks and call it from this CRTC callback here by looping over all encoders connected to it using for_each_encoder_on_crtc().”…”�”}”(hj™h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÀh´Kýhj–ubhÎ)�”}”(hX–This hook is used both by legacy CRTC helpers and atomic helpers. Atomic drivers don't need to implement it if there's no need to disable anything at the CRTC level. To ensure that runtime PM handling (using either DPMS or the new "ACTIVE" property) works **disable** must be the inverse of **atomic_enable** for atomic drivers. Atomic drivers should consider to use **atomic_disable** instead of this one.”h]”(hXThis hook is used both by legacy CRTC helpers and atomic helpers. Atomic drivers don’t need to implement it if there’s no need to disable anything at the CRTC level. To ensure that runtime PM handling (using either DPMS or the new “ACTIVEâ€� property) works ”…”�”}”(hjËh²hh³Nh´Nubj3 )�”}”(hŒ **disable**”h]”hŒdisable”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjËubhŒ must be the inverse of ”…”�”}”(hjËh²hh³Nh´Nubj3 )�”}”(hŒ**atomic_enable**”h]”hŒ atomic_enable”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjËubhŒ; for atomic drivers. Atomic drivers should consider to use ”…”�”}”(hjËh²hh³Nh´Nubj3 )�”}”(hŒ**atomic_disable**”h]”hŒatomic_disable”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjËubhŒ instead of this one.”…”�”}”(hjËh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mhj–ubhÎ)�”}”(hŒNOTE:”h]”hŒNOTE:”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M hj–ubhÎ)�”}”(hX[With legacy CRTC helpers there's a big semantic difference between **disable** and other hooks (like **prepare** or **dpms**) used to shut down a CRTC: **disable** is only called when also logically disabling the display pipeline and needs to release any resources acquired in **mode_set** (like shared PLLs, or again release pinned framebuffers).”h]”(hŒEWith legacy CRTC helpers there’s a big semantic difference between ”…”�”}”(hjh²hh³Nh´Nubj3 )�”}”(hŒ **disable**”h]”hŒdisable”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjubhŒ and other hooks (like ”…”�”}”(hjh²hh³Nh´Nubj3 )�”}”(hŒ **prepare**”h]”hŒprepare”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjubhŒ or ”…”�”}”(hjh²hh³Nh´Nubj3 )�”}”(hŒ**dpms**”h]”hŒdpms”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjubhŒ) used to shut down a CRTC: ”…”�”}”(hjh²hh³Nh´Nubj3 )�”}”(hŒ **disable**”h]”hŒdisable”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjubhŒr is only called when also logically disabling the display pipeline and needs to release any resources acquired in ”…”�”}”(hjh²hh³Nh´Nubj3 )�”}”(hŒ **mode_set**”h]”hŒmode_set”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjubhŒ: (like shared PLLs, or again release pinned framebuffers).”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mhj–ubhÎ)�”}”(hŒ¦Therefore **disable** must be the inverse of **mode_set** plus **commit** for drivers still using legacy CRTC helpers, which is different from the rules under atomic.”h]”(hŒ Therefore ”…”�”}”(hjˆh²hh³Nh´Nubj3 )�”}”(hŒ **disable**”h]”hŒdisable”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjˆubhŒ must be the inverse of ”…”�”}”(hjˆh²hh³Nh´Nubj3 )�”}”(hŒ **mode_set**”h]”hŒmode_set”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjˆubhŒ plus ”…”�”}”(hjˆh²hh³Nh´Nubj3 )�”}”(hŒ **commit**”h]”hŒcommit”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjˆubhŒ] for drivers still using legacy CRTC helpers, which is different from the rules under atomic.”…”�”}”(hjˆh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mhj–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjzubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j•h´Mhjx ubj| )�”}”(hXÔ``atomic_check`` Drivers should check plane-update related CRTC constraints in this hook. They can also check mode related limitations but need to be aware of the calling order, since this hook is used by drm_atomic_helper_check_planes() whereas the preparations needed to check output routing and the display mode is done in drm_atomic_helper_check_modeset(). Therefore drivers that want to check output routing and display mode constraints in this callback must ensure that drm_atomic_helper_check_modeset() has been called beforehand. This is calling order used by the default helper implementation in drm_atomic_helper_check(). When using drm_atomic_helper_check_planes() this hook is called after the :c:type:`drm_plane_helper_funcs.atomic_check ` hook for planes, which allows drivers to assign shared resources requested by planes in this callback here. For more complicated dependencies the driver can call the provided check helpers multiple times until the computed state has a final configuration and everything has been checked. This function is also allowed to inspect any other object's state and can add more state objects to the atomic commit if needed. Care must be taken though to ensure that state check and compute functions for these added states are all called, and derived state in other objects all updated. Again the recommendation is to just call check helpers until a maximal configuration is reached. This callback is used by the atomic modeset helpers, but it is optional. NOTE: This function is called in the check phase of an atomic update. The driver is not allowed to change anything outside of the free-standing state object passed-in. Also beware that userspace can request its own custom modes, neither core nor helpers filter modes to the list of probe modes reported by the GETCONNECTOR IOCTL and stored in :c:type:`drm_connector.modes `. To ensure that modes are filtered consistently put any CRTC constraints and limits checks into **mode_valid**. RETURNS: 0 on success, -EINVAL if the state or the transition can't be supported, -ENOMEM on memory allocation failure and -EDEADLK if an attempt to obtain another state object ran into a :c:type:`drm_modeset_lock` deadlock. ”h]”(j‚ )�”}”(hŒ``atomic_check``”h]”jˆ )�”}”(hjßh]”hŒ atomic_check”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÝubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MKhjÙubjž )�”}”(hhh]”(hÎ)�”}”(hXfDrivers should check plane-update related CRTC constraints in this hook. They can also check mode related limitations but need to be aware of the calling order, since this hook is used by drm_atomic_helper_check_planes() whereas the preparations needed to check output routing and the display mode is done in drm_atomic_helper_check_modeset(). Therefore drivers that want to check output routing and display mode constraints in this callback must ensure that drm_atomic_helper_check_modeset() has been called beforehand. This is calling order used by the default helper implementation in drm_atomic_helper_check().”h]”hXfDrivers should check plane-update related CRTC constraints in this hook. They can also check mode related limitations but need to be aware of the calling order, since this hook is used by drm_atomic_helper_check_planes() whereas the preparations needed to check output routing and the display mode is done in drm_atomic_helper_check_modeset(). Therefore drivers that want to check output routing and display mode constraints in this callback must ensure that drm_atomic_helper_check_modeset() has been called beforehand. This is calling order used by the default helper implementation in drm_atomic_helper_check().”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MhjõubhÎ)�”}”(hX°When using drm_atomic_helper_check_planes() this hook is called after the :c:type:`drm_plane_helper_funcs.atomic_check ` hook for planes, which allows drivers to assign shared resources requested by planes in this callback here. For more complicated dependencies the driver can call the provided check helpers multiple times until the computed state has a final configuration and everything has been checked.”h]”(hŒJWhen using drm_atomic_helper_check_planes() this hook is called after the ”…”�”}”(hjh²hh³Nh´Nubh)�”}”(hŒF:c:type:`drm_plane_helper_funcs.atomic_check `”h]”jˆ )�”}”(hjh]”hŒ#drm_plane_helper_funcs.atomic_check”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_plane_helper_funcs”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M)hjubhX  hook for planes, which allows drivers to assign shared resources requested by planes in this callback here. For more complicated dependencies the driver can call the provided check helpers multiple times until the computed state has a final configuration and everything has been checked.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j.h´M)hjõubhÎ)�”}”(hXƒThis function is also allowed to inspect any other object's state and can add more state objects to the atomic commit if needed. Care must be taken though to ensure that state check and compute functions for these added states are all called, and derived state in other objects all updated. Again the recommendation is to just call check helpers until a maximal configuration is reached.”h]”hX…This function is also allowed to inspect any other object’s state and can add more state objects to the atomic commit if needed. Care must be taken though to ensure that state check and compute functions for these added states are all called, and derived state in other objects all updated. Again the recommendation is to just call check helpers until a maximal configuration is reached.”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M0hjõubhÎ)�”}”(hŒHThis callback is used by the atomic modeset helpers, but it is optional.”h]”hŒHThis callback is used by the atomic modeset helpers, but it is optional.”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M7hjõubhÎ)�”}”(hŒNOTE:”h]”hŒNOTE:”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M:hjõubhÎ)�”}”(hŒ¡This function is called in the check phase of an atomic update. The driver is not allowed to change anything outside of the free-standing state object passed-in.”h]”hŒ¡This function is called in the check phase of an atomic update. The driver is not allowed to change anything outside of the free-standing state object passed-in.”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M<hjõubhÎ)�”}”(hXLAlso beware that userspace can request its own custom modes, neither core nor helpers filter modes to the list of probe modes reported by the GETCONNECTOR IOCTL and stored in :c:type:`drm_connector.modes `. To ensure that modes are filtered consistently put any CRTC constraints and limits checks into **mode_valid**.”h]”(hŒ¯Also beware that userspace can request its own custom modes, neither core nor helpers filter modes to the list of probe modes reported by the GETCONNECTOR IOCTL and stored in ”…”�”}”(hjuh²hh³Nh´Nubh)�”}”(hŒ-:c:type:`drm_connector.modes `”h]”jˆ )�”}”(hjh]”hŒdrm_connector.modes”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj}ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_connector”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M@hjuubhŒa. To ensure that modes are filtered consistently put any CRTC constraints and limits checks into ”…”�”}”(hjuh²hh³Nh´Nubj3 )�”}”(hŒ**mode_valid**”h]”hŒ mode_valid”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjuubhŒ.”…”�”}”(hjuh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jœh´M@hjõubhÎ)�”}”(hŒRETURNS:”h]”hŒRETURNS:”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MFhjõubhÎ)�”}”(hŒ×0 on success, -EINVAL if the state or the transition can't be supported, -ENOMEM on memory allocation failure and -EDEADLK if an attempt to obtain another state object ran into a :c:type:`drm_modeset_lock` deadlock.”h]”(hŒµ0 on success, -EINVAL if the state or the transition can’t be supported, -ENOMEM on memory allocation failure and -EDEADLK if an attempt to obtain another state object ran into a ”…”�”}”(hjÈh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_modeset_lock`”h]”jˆ )�”}”(hjÒh]”hŒdrm_modeset_lock”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÐubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_modeset_lock”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MHhjÈubhŒ deadlock.”…”�”}”(hjÈh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jïh´MHhjõubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÙubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jôh´MKhjx ubj| )�”}”(hX‹``atomic_begin`` Drivers should prepare for an atomic update of multiple planes on a CRTC in this hook. Depending upon hardware this might be vblank evasion, blocking updates by setting bits or doing preparatory work for e.g. manual update display. This hook is called before any plane commit functions are called. Note that the power state of the display pipe when this function is called depends upon the exact helpers and calling sequence the driver has picked. See drm_atomic_helper_commit_planes() for a discussion of the tradeoffs and variants of plane commit helpers. This callback is used by the atomic modeset helpers, but it is optional. ”h]”(j‚ )�”}”(hŒ``atomic_begin``”h]”jˆ )�”}”(hj h]”hŒ atomic_begin”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M`hjubjž )�”}”(hhh]”(hÎ)�”}”(hŒçDrivers should prepare for an atomic update of multiple planes on a CRTC in this hook. Depending upon hardware this might be vblank evasion, blocking updates by setting bits or doing preparatory work for e.g. manual update display.”h]”hŒçDrivers should prepare for an atomic update of multiple planes on a CRTC in this hook. Depending upon hardware this might be vblank evasion, blocking updates by setting bits or doing preparatory work for e.g. manual update display.”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MShj"ubhÎ)�”}”(hŒAThis hook is called before any plane commit functions are called.”h]”hŒAThis hook is called before any plane commit functions are called.”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MXhj"ubhÎ)�”}”(hXNote that the power state of the display pipe when this function is called depends upon the exact helpers and calling sequence the driver has picked. See drm_atomic_helper_commit_planes() for a discussion of the tradeoffs and variants of plane commit helpers.”h]”hXNote that the power state of the display pipe when this function is called depends upon the exact helpers and calling sequence the driver has picked. See drm_atomic_helper_commit_planes() for a discussion of the tradeoffs and variants of plane commit helpers.”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MZhj"ubhÎ)�”}”(hŒHThis callback is used by the atomic modeset helpers, but it is optional.”h]”hŒHThis callback is used by the atomic modeset helpers, but it is optional.”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M_hj"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j!h´M`hjx ubj| )�”}”(hXS``atomic_flush`` Drivers should finalize an atomic update of multiple planes on a CRTC in this hook. Depending upon hardware this might include checking that vblank evasion was successful, unblocking updates by setting bits or setting the GO bit to flush out all updates. Simple hardware or hardware with special requirements can commit and flush out all updates for all planes from this hook and forgo all the other commit hooks for plane updates. This hook is called after any plane commit functions are called. Note that the power state of the display pipe when this function is called depends upon the exact helpers and calling sequence the driver has picked. See drm_atomic_helper_commit_planes() for a discussion of the tradeoffs and variants of plane commit helpers. This callback is used by the atomic modeset helpers, but it is optional. ”h]”(j‚ )�”}”(hŒ``atomic_flush``”h]”jˆ )�”}”(hjsh]”hŒ atomic_flush”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjqubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mxhjmubjž )�”}”(hhh]”(hÎ)�”}”(hŒþDrivers should finalize an atomic update of multiple planes on a CRTC in this hook. Depending upon hardware this might include checking that vblank evasion was successful, unblocking updates by setting bits or setting the GO bit to flush out all updates.”h]”hŒþDrivers should finalize an atomic update of multiple planes on a CRTC in this hook. Depending upon hardware this might include checking that vblank evasion was successful, unblocking updates by setting bits or setting the GO bit to flush out all updates.”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mghj‰ubhÎ)�”}”(hŒ°Simple hardware or hardware with special requirements can commit and flush out all updates for all planes from this hook and forgo all the other commit hooks for plane updates.”h]”hŒ°Simple hardware or hardware with special requirements can commit and flush out all updates for all planes from this hook and forgo all the other commit hooks for plane updates.”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mlhj‰ubhÎ)�”}”(hŒ@This hook is called after any plane commit functions are called.”h]”hŒ@This hook is called after any plane commit functions are called.”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mphj‰ubhÎ)�”}”(hXNote that the power state of the display pipe when this function is called depends upon the exact helpers and calling sequence the driver has picked. See drm_atomic_helper_commit_planes() for a discussion of the tradeoffs and variants of plane commit helpers.”h]”hXNote that the power state of the display pipe when this function is called depends upon the exact helpers and calling sequence the driver has picked. See drm_atomic_helper_commit_planes() for a discussion of the tradeoffs and variants of plane commit helpers.”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mrhj‰ubhÎ)�”}”(hŒHThis callback is used by the atomic modeset helpers, but it is optional.”h]”hŒHThis callback is used by the atomic modeset helpers, but it is optional.”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mwhj‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjmubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jˆh´Mxhjx ubj| )�”}”(hX;``atomic_enable`` This callback should be used to enable the CRTC. With the atomic drivers it is called before all encoders connected to this CRTC are enabled through the encoder's own :c:type:`drm_encoder_helper_funcs.enable ` hook. If that sequence is too simple drivers can just add their own hooks and call it from this CRTC callback here by looping over all encoders connected to it using for_each_encoder_on_crtc(). This hook is used only by atomic helpers, for symmetry with **atomic_disable**. Atomic drivers don't need to implement it if there's no need to enable anything at the CRTC level. To ensure that runtime PM handling (using either DPMS or the new "ACTIVE" property) works **atomic_enable** must be the inverse of **atomic_disable** for atomic drivers. This function is optional. ”h]”(j‚ )�”}”(hŒ``atomic_enable``”h]”jˆ )�”}”(hjéh]”hŒ atomic_enable”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjçubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MŽhjãubjž )�”}”(hhh]”(hÎ)�”}”(hX®This callback should be used to enable the CRTC. With the atomic drivers it is called before all encoders connected to this CRTC are enabled through the encoder's own :c:type:`drm_encoder_helper_funcs.enable ` hook. If that sequence is too simple drivers can just add their own hooks and call it from this CRTC callback here by looping over all encoders connected to it using for_each_encoder_on_crtc().”h]”(hŒ©This callback should be used to enable the CRTC. With the atomic drivers it is called before all encoders connected to this CRTC are enabled through the encoder’s own ”…”�”}”(hjh²hh³Nh´Nubh)�”}”(hŒD:c:type:`drm_encoder_helper_funcs.enable `”h]”jˆ )�”}”(hj h]”hŒdrm_encoder_helper_funcs.enable”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_encoder_helper_funcs”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M€hjubhŒÃ hook. If that sequence is too simple drivers can just add their own hooks and call it from this CRTC callback here by looping over all encoders connected to it using for_each_encoder_on_crtc().”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j)h´M€hjÿubhÎ)�”}”(hX\This hook is used only by atomic helpers, for symmetry with **atomic_disable**. Atomic drivers don't need to implement it if there's no need to enable anything at the CRTC level. To ensure that runtime PM handling (using either DPMS or the new "ACTIVE" property) works **atomic_enable** must be the inverse of **atomic_disable** for atomic drivers.”h]”(hŒ` hook. If that sequence is too simple drivers can just add their own hooks and call it from this CRTC callback here by looping over all encoders connected to it using for_each_encoder_on_crtc(). This hook is used only by atomic helpers. Atomic drivers don't need to implement it if there's no need to disable anything at the CRTC level. This function is optional. ”h]”(j‚ )�”}”(hŒ``atomic_disable``”h]”jˆ )�”}”(hj™h]”hŒatomic_disable”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M¢hj“ubjž )�”}”(hhh]”(hÎ)�”}”(hX³This callback should be used to disable the CRTC. With the atomic drivers it is called after all encoders connected to this CRTC have been shut off already using their own :c:type:`drm_encoder_helper_funcs.disable ` hook. If that sequence is too simple drivers can just add their own hooks and call it from this CRTC callback here by looping over all encoders connected to it using for_each_encoder_on_crtc().”h]”(hŒ¬This callback should be used to disable the CRTC. With the atomic drivers it is called after all encoders connected to this CRTC have been shut off already using their own ”…”�”}”(hj²h²hh³Nh´Nubh)�”}”(hŒE:c:type:`drm_encoder_helper_funcs.disable `”h]”jˆ )�”}”(hj¼h]”hŒ drm_encoder_helper_funcs.disable”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjºubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_encoder_helper_funcs”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M–hj²ubhŒÂ hook. If that sequence is too simple drivers can just add their own hooks and call it from this CRTC callback here by looping over all encoders connected to it using for_each_encoder_on_crtc().”…”�”}”(hj²h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÙh´M–hj¯ubhÎ)�”}”(hŒ�This hook is used only by atomic helpers. Atomic drivers don't need to implement it if there's no need to disable anything at the CRTC level.”h]”hŒ‘This hook is used only by atomic helpers. Atomic drivers don’t need to implement it if there’s no need to disable anything at the CRTC level.”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mžhj¯ubhÎ)�”}”(hŒThis function is optional.”h]”hŒThis function is optional.”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j®h´M¢hj¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j®h´M¢hjx ubj| )�”}”(hXD``get_scanout_position`` Called by vblank timestamping code. Returns the current display scanout position from a CRTC and an optional accurate ktime_get() timestamp of when the position was measured. Note that this is a helper callback which is only used if a driver uses drm_crtc_vblank_helper_get_vblank_timestamp() for the **drm_crtc_funcs.get_vblank_timestamp** callback. Parameters: crtc: The CRTC. in_vblank_irq: True when called from drm_crtc_handle_vblank(). Some drivers need to apply some workarounds for gpu-specific vblank irq quirks if the flag is set. vpos: Target location for current vertical scanout position. hpos: Target location for current horizontal scanout position. stime: Target location for timestamp taken immediately before scanout position query. Can be NULL to skip timestamp. etime: Target location for timestamp taken immediately after scanout position query. Can be NULL to skip timestamp. mode: Current display timings. Returns vpos as a positive number while in active scanout area. Returns vpos as a negative number inside vblank, counting the number of scanlines to go until end of vblank, e.g., -1 means "one scanline until start of active scanout / end of vblank." Returns: True on success, false if a reliable scanout position counter could not be read out. ”h]”(j‚ )�”}”(hŒ``get_scanout_position``”h]”jˆ )�”}”(hjh]”hŒget_scanout_position”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MÏhj ubjž )�”}”(hhh]”(hÎ)�”}”(hŒ#Called by vblank timestamping code.”h]”hŒ#Called by vblank timestamping code.”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mªhj)ubhÎ)�”}”(hX:Returns the current display scanout position from a CRTC and an optional accurate ktime_get() timestamp of when the position was measured. Note that this is a helper callback which is only used if a driver uses drm_crtc_vblank_helper_get_vblank_timestamp() for the **drm_crtc_funcs.get_vblank_timestamp** callback.”h]”(hX Returns the current display scanout position from a CRTC and an optional accurate ktime_get() timestamp of when the position was measured. Note that this is a helper callback which is only used if a driver uses drm_crtc_vblank_helper_get_vblank_timestamp() for the ”…”�”}”(hj;h²hh³Nh´Nubj3 )�”}”(hŒ'**drm_crtc_funcs.get_vblank_timestamp**”h]”hŒ#drm_crtc_funcs.get_vblank_timestamp”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj;ubhŒ callback.”…”�”}”(hj;h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M¬hj)ubhÎ)�”}”(hŒ Parameters:”h]”hŒ Parameters:”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M²hj)ubjw )�”}”(hhh]”(j| )�”}”(hŒcrtc: The CRTC.”h]”(j‚ )�”}”(hŒcrtc:”h]”hŒcrtc:”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M´hjnubjž )�”}”(hhh]”hÎ)�”}”(hŒ The CRTC.”h]”hŒ The CRTC.”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mµhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjnubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j€h´M´hjkubj| )�”}”(hŒ¡in_vblank_irq: True when called from drm_crtc_handle_vblank(). Some drivers need to apply some workarounds for gpu-specific vblank irq quirks if the flag is set.”h]”(j‚ )�”}”(hŒin_vblank_irq:”h]”hŒin_vblank_irq:”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M¸hjŸubjž )�”}”(hhh]”hÎ)�”}”(hŒ’True when called from drm_crtc_handle_vblank(). Some drivers need to apply some workarounds for gpu-specific vblank irq quirks if the flag is set.”h]”hŒ’True when called from drm_crtc_handle_vblank(). Some drivers need to apply some workarounds for gpu-specific vblank irq quirks if the flag is set.”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M·hj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjŸubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j±h´M¸hjkubj| )�”}”(hŒhpos: Target location for current horizontal scanout position.”h]”(j‚ )�”}”(hŒhpos:”h]”hŒhpos:”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M¼hjubjž )�”}”(hhh]”hÎ)�”}”(hŒ8Target location for current horizontal scanout position.”h]”hŒ8Target location for current horizontal scanout position.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M½hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jh´M¼hjkubj| )�”}”(hŒtstime: Target location for timestamp taken immediately before scanout position query. Can be NULL to skip timestamp.”h]”(j‚ )�”}”(hŒstime:”h]”hŒstime:”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M¿hj2ubjž )�”}”(hhh]”hÎ)�”}”(hŒmTarget location for timestamp taken immediately before scanout position query. Can be NULL to skip timestamp.”h]”hŒmTarget location for timestamp taken immediately before scanout position query. Can be NULL to skip timestamp.”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jDh´M¿hjEubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jDh´M¿hjkubj| )�”}”(hŒsetime: Target location for timestamp taken immediately after scanout position query. Can be NULL to skip timestamp.”h]”(j‚ )�”}”(hŒetime:”h]”hŒetime:”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MÂhjbubjž )�”}”(hhh]”hÎ)�”}”(hŒlTarget location for timestamp taken immediately after scanout position query. Can be NULL to skip timestamp.”h]”hŒlTarget location for timestamp taken immediately after scanout position query. Can be NULL to skip timestamp.”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jth´MÂhjuubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjbubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jth´MÂhjkubj| )�”}”(hŒmode: Current display timings. ”h]”(j‚ )�”}”(hŒmode:”h]”hŒmode:”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MÅhj’ubjž )�”}”(hhh]”hÎ)�”}”(hŒCurrent display timings.”h]”hŒCurrent display timings.”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¤h´MÅhj¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¤h´MÅhjkubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj)ubhÎ)�”}”(hŒùReturns vpos as a positive number while in active scanout area. Returns vpos as a negative number inside vblank, counting the number of scanlines to go until end of vblank, e.g., -1 means "one scanline until start of active scanout / end of vblank."”h]”hŒýReturns vpos as a positive number while in active scanout area. Returns vpos as a negative number inside vblank, counting the number of scanlines to go until end of vblank, e.g., -1 means “one scanline until start of active scanout / end of vblank.â€�”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MÇhj)ubhÎ)�”}”(hŒReturns:”h]”hŒReturns:”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MÌhj)ubhÎ)�”}”(hŒTTrue on success, false if a reliable scanout position counter could not be read out.”h]”hŒTTrue on success, false if a reliable scanout position counter could not be read out.”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MÎhj)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j(h´MÏhjx ubj| )�”}”(hXe``handle_vblank_timeout`` Handles timeouts of the vblank timer. Called by CRTC's the vblank timer on each timeout. Semantics is equivalient to drm_crtc_handle_vblank(). Implementations should invoke drm_crtc_handle_vblank() as part of processing the timeout. This callback is optional. If unset, the vblank timer invokes drm_crtc_handle_vblank() directly.”h]”(j‚ )�”}”(hŒ``handle_vblank_timeout``”h]”jˆ )�”}”(hjh]”hŒhandle_vblank_timeout”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mßhjubjž )�”}”(hhh]”(hÎ)�”}”(hŒ%Handles timeouts of the vblank timer.”h]”hŒ%Handles timeouts of the vblank timer.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MÙhjubhÎ)�”}”(hŒÂCalled by CRTC's the vblank timer on each timeout. Semantics is equivalient to drm_crtc_handle_vblank(). Implementations should invoke drm_crtc_handle_vblank() as part of processing the timeout.”h]”hŒÄCalled by CRTC’s the vblank timer on each timeout. Semantics is equivalient to drm_crtc_handle_vblank(). Implementations should invoke drm_crtc_handle_vblank() as part of processing the timeout.”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MÛhjubhÎ)�”}”(hŒ`This callback is optional. If unset, the vblank timer invokes drm_crtc_handle_vblank() directly.”h]”hŒ`This callback is optional. If unset, the vblank timer invokes drm_crtc_handle_vblank() directly.”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jh´Mßhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jh´Mßhjx ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj* ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjH h²hh³j— h´NubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjgh]”hŒ Description”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjeubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MãhjH h²hubhÎ)�”}”(hŒWThese hooks are used by the legacy CRTC helpers and the new atomic modesetting helpers.”h]”hŒWThese hooks are used by the legacy CRTC helpers and the new atomic modesetting helpers.”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´K9hjH h²hubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ drm_crtc_helper_add (C function)”Œc.drm_crtc_helper_add”hNt”auh1j† hjH h²hh³j— h´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ[void drm_crtc_helper_add (struct drm_crtc *crtc, const struct drm_crtc_helper_funcs *funcs)”h]”j¤ )�”}”(hŒZvoid drm_crtc_helper_add(struct drm_crtc *crtc, const struct drm_crtc_helper_funcs *funcs)”h]”(hŒdesc_sig_keyword_type”“”)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”Œkt”ah"]”h$]”h&]”uh1j¥hj¡h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”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Œdrm_crtc_helper_add”h]”jÓ )�”}”(hŒdrm_crtc_helper_add”h]”hŒdrm_crtc_helper_add”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÅubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj¡h²hh³j¶h´MåubhŒdesc_parameterlist”“”)�”}”(hŒB(struct drm_crtc *crtc, const struct drm_crtc_helper_funcs *funcs)”h]”(hŒdesc_parameter”“”)�”}”(hŒstruct drm_crtc *crtc”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Œdrm_crtc”h]”hŒdrm_crtc”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”Œ identifier”Œ reftarget”j Œmodname”NŒ classname”Njé jì )�”}”jï ]”jê Œ ASTIdentifier”“”)�”}”jjËsbŒc.drm_crtc_helper_add”†”asbuh1hhjåubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjåubhŒdesc_sig_punctuation”“”)�”}”(hjOh]”hŒ*”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”Œp”ah"]”h$]”h&]”uh1j8hjåubjÓ )�”}”(hŒcrtc”h]”hŒcrtc”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjåubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjßubjä)�”}”(hŒ)const struct drm_crtc_helper_funcs *funcs”h]”(jª )�”}”(hŒconst”h]”hŒconst”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj]ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj]ubjª )�”}”(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Œdrm_crtc_helper_funcs”h]”hŒdrm_crtc_helper_funcs”…”�”}”(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.drm_crtc_helper_add”†”asbuh1hhj]ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj]ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj]ubjÓ )�”}”(hŒfuncs”h]”hŒfuncs”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj]ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjßubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj¡h²hh³j¶h´Måubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ!sets the helper vtable for a crtc”h]”hŒ!sets the helper vtable for a crtc”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”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# jj$ jj% ‰j& ‰j' ‰uh1j˜ h²hhjH h³j— h´Nubj) )�”}”(hŒ‡**Parameters** ``struct drm_crtc *crtc`` DRM CRTC ``const struct drm_crtc_helper_funcs *funcs`` helper vtable to set for **crtc**”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj h]”hŒ Parameters”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Méhjubjw )�”}”(hhh]”(j| )�”}”(hŒ#``struct drm_crtc *crtc`` DRM CRTC ”h]”(j‚ )�”}”(hŒ``struct drm_crtc *crtc``”h]”jˆ )�”}”(hj?h]”hŒstruct drm_crtc *crtc”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mæhj9ubjž )�”}”(hhh]”hÎ)�”}”(hŒDRM CRTC”h]”hŒDRM CRTC”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jTh´MæhjUubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jTh´Mæhj6ubj| )�”}”(hŒO``const struct drm_crtc_helper_funcs *funcs`` helper vtable to set for **crtc**”h]”(j‚ )�”}”(hŒ-``const struct drm_crtc_helper_funcs *funcs``”h]”jˆ )�”}”(hjxh]”hŒ)const struct drm_crtc_helper_funcs *funcs”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjvubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mèhjrubjž )�”}”(hhh]”hÎ)�”}”(hŒ!helper vtable to set for **crtc**”h]”(hŒhelper vtable to set for ”…”�”}”(hj‘h²hh³Nh´Nubj3 )�”}”(hŒ**crtc**”h]”hŒcrtc”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´•MçhjŽubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjrubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j�h´Mèhj6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjH h²hh³j— h´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ#drm_encoder_helper_funcs (C struct)”Œc.drm_encoder_helper_funcs”hNt”auh1j† hjH h²hh³j— h´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒdrm_encoder_helper_funcs”h]”j¤ )�”}”(hŒstruct drm_encoder_helper_funcs”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjÜh²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”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Œdrm_encoder_helper_funcs”h]”jÓ )�”}”(hjÚh]”hŒdrm_encoder_helper_funcs”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjüubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÜh²hh³jíh´Mìubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œhelper operations for encoders”h]”hŒhelper operations for encoders”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mðhjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÕh²hh³jíh´Mìubeh}”(h]”h ]”(j Œstruct”eh"]”h$]”h&]”j" j j# j:j$ j:j% ‰j& ‰j' ‰uh1j˜ h²hhjH h³j— h´Nubj) )�”}”(hX­4**Definition**:: struct drm_encoder_helper_funcs { void (*dpms)(struct drm_encoder *encoder, int mode); enum drm_mode_status (*mode_valid)(struct drm_encoder *crtc, const struct drm_display_mode *mode); bool (*mode_fixup)(struct drm_encoder *encoder, const struct drm_display_mode *mode, struct drm_display_mode *adjusted_mode); void (*prepare)(struct drm_encoder *encoder); void (*commit)(struct drm_encoder *encoder); void (*mode_set)(struct drm_encoder *encoder, struct drm_display_mode *mode, struct drm_display_mode *adjusted_mode); void (*atomic_mode_set)(struct drm_encoder *encoder, struct drm_crtc_state *crtc_state, struct drm_connector_state *conn_state); enum drm_connector_status (*detect)(struct drm_encoder *encoder, struct drm_connector *connector); void (*atomic_disable)(struct drm_encoder *encoder, struct drm_atomic_commit *state); void (*atomic_enable)(struct drm_encoder *encoder, struct drm_atomic_commit *state); void (*disable)(struct drm_encoder *encoder); void (*enable)(struct drm_encoder *encoder); int (*atomic_check)(struct drm_encoder *encoder, struct drm_crtc_state *crtc_state, struct drm_connector_state *conn_state); }; **Members** ``dpms`` Callback to control power levels on the encoder. If the mode passed in is unsupported, the provider must use the next lowest power level. This is used by the legacy encoder helpers to implement DPMS functionality in drm_helper_connector_dpms(). This callback is also used to disable an encoder by calling it with DRM_MODE_DPMS_OFF if the **disable** hook isn't used. This callback is used by the legacy CRTC helpers. Atomic helpers also support using this hook for enabling and disabling an encoder to facilitate transitions to atomic, but it is deprecated. Instead **enable** and **disable** should be used. ``mode_valid`` This callback is used to check if a specific mode is valid in this encoder. This should be implemented if the encoder has some sort of restriction in the modes it can display. For example, a given encoder may be responsible to set a clock value. If the clock can not produce all the values for the available modes then this callback can be used to restrict the number of modes to only the ones that can be displayed. This hook is used by the probe helpers to filter the mode list in drm_helper_probe_single_connector_modes(), and it is used by the atomic helpers to validate modes supplied by userspace in drm_atomic_helper_check_modeset(). This function is optional. NOTE: Since this function is both called from the check phase of an atomic commit, and the mode validation in the probe paths it is not allowed to look at anything else but the passed-in mode, and validate it against configuration-invariant hardware constraints. Any further limits which depend upon the configuration can only be checked in **mode_fixup** or **atomic_check**. RETURNS: drm_mode_status Enum ``mode_fixup`` This callback is used to validate and adjust a mode. The parameter mode is the display mode that should be fed to the next element in the display chain, either the final :c:type:`drm_connector` or a :c:type:`drm_bridge`. The parameter adjusted_mode is the input mode the encoder requires. It can be modified by this callback and does not need to match mode. See also :c:type:`drm_crtc_state.adjusted_mode ` for more details. This function is used by both legacy CRTC helpers and atomic helpers. This hook is optional. NOTE: This function is called in the check phase of atomic modesets, which can be aborted for any reason (including on userspace's request to just check whether a configuration would be possible). Atomic drivers MUST NOT touch any persistent state (hardware or software) or data structures except the passed in adjusted_mode parameter. This is in contrast to the legacy CRTC helpers where this was allowed. Atomic drivers which need to inspect and adjust more state should instead use the **atomic_check** callback. If **atomic_check** is used, this hook isn't called since **atomic_check** allows a strict superset of the functionality of **mode_fixup**. Also beware that userspace can request its own custom modes, neither core nor helpers filter modes to the list of probe modes reported by the GETCONNECTOR IOCTL and stored in :c:type:`drm_connector.modes `. To ensure that modes are filtered consistently put any encoder constraints and limits checks into **mode_valid**. RETURNS: True if an acceptable configuration is possible, false if the modeset operation should be rejected. ``prepare`` This callback should prepare the encoder for a subsequent modeset, which in practice means the driver should disable the encoder if it is running. Most drivers ended up implementing this by calling their **dpms** hook with DRM_MODE_DPMS_OFF. This callback is used by the legacy CRTC helpers. Atomic helpers also support using this hook for disabling an encoder to facilitate transitions to atomic, but it is deprecated. Instead **disable** should be used. ``commit`` This callback should commit the new mode on the encoder after a modeset, which in practice means the driver should enable the encoder. Most drivers ended up implementing this by calling their **dpms** hook with DRM_MODE_DPMS_ON. This callback is used by the legacy CRTC helpers. Atomic helpers also support using this hook for enabling an encoder to facilitate transitions to atomic, but it is deprecated. Instead **enable** should be used. ``mode_set`` This callback is used to update the display mode of an encoder. Note that the display pipe is completely off when this function is called. Drivers which need hardware to be running before they program the new display mode (because they implement runtime PM) should not use this hook, because the helper library calls it only once and not every time the display pipeline is suspend using either DPMS or the new "ACTIVE" property. Such drivers should instead move all their encoder setup into the **enable** callback. This callback is used both by the legacy CRTC helpers and the atomic modeset helpers. It is optional in the atomic helpers. NOTE: If the driver uses the atomic modeset helpers and needs to inspect the connector state or connector display info during mode setting, **atomic_mode_set** can be used instead. ``atomic_mode_set`` This callback is used to update the display mode of an encoder. Note that the display pipe is completely off when this function is called. Drivers which need hardware to be running before they program the new display mode (because they implement runtime PM) should not use this hook, because the helper library calls it only once and not every time the display pipeline is suspended using either DPMS or the new "ACTIVE" property. Such drivers should instead move all their encoder setup into the **enable** callback. This callback is used by the atomic modeset helpers in place of the **mode_set** callback, if set by the driver. It is optional and should be used instead of **mode_set** if the driver needs to inspect the connector state or display info, since there is no direct way to go from the encoder to the current connector. ``detect`` This callback can be used by drivers who want to do detection on the encoder object instead of in connector functions. It is not used by any helper and therefore has purely driver-specific semantics. New drivers shouldn't use this and instead just implement their own private callbacks. FIXME: This should just be converted into a pile of driver vfuncs. Currently radeon, amdgpu and nouveau are using it. ``atomic_disable`` This callback should be used to disable the encoder. With the atomic drivers it is called before this encoder's CRTC has been shut off using their own :c:type:`drm_crtc_helper_funcs.atomic_disable ` hook. If that sequence is too simple drivers can just add their own driver private encoder hooks and call them from CRTC's callback by looping over all encoders connected to it using for_each_encoder_on_crtc(). This callback is a variant of **disable** that provides the atomic state to the driver. If **atomic_disable** is implemented, **disable** is not called by the helpers. This hook is only used by atomic helpers. Atomic drivers don't need to implement it if there's no need to disable anything at the encoder level. To ensure that runtime PM handling (using either DPMS or the new "ACTIVE" property) works **atomic_disable** must be the inverse of **atomic_enable**. ``atomic_enable`` This callback should be used to enable the encoder. It is called after this encoder's CRTC has been enabled using their own :c:type:`drm_crtc_helper_funcs.atomic_enable ` hook. If that sequence is too simple drivers can just add their own driver private encoder hooks and call them from CRTC's callback by looping over all encoders connected to it using for_each_encoder_on_crtc(). This callback is a variant of **enable** that provides the atomic state to the driver. If **atomic_enable** is implemented, **enable** is not called by the helpers. This hook is only used by atomic helpers, it is the opposite of **atomic_disable**. Atomic drivers don't need to implement it if there's no need to enable anything at the encoder level. To ensure that runtime PM handling works **atomic_enable** must be the inverse of **atomic_disable**. ``disable`` This callback should be used to disable the encoder. With the atomic drivers it is called before this encoder's CRTC has been shut off using their own :c:type:`drm_crtc_helper_funcs.disable ` hook. If that sequence is too simple drivers can just add their own driver private encoder hooks and call them from CRTC's callback by looping over all encoders connected to it using for_each_encoder_on_crtc(). This hook is used both by legacy CRTC helpers and atomic helpers. Atomic drivers don't need to implement it if there's no need to disable anything at the encoder level. To ensure that runtime PM handling (using either DPMS or the new "ACTIVE" property) works **disable** must be the inverse of **enable** for atomic drivers. For atomic drivers also consider **atomic_disable** and save yourself from having to read the NOTE below! NOTE: With legacy CRTC helpers there's a big semantic difference between **disable** and other hooks (like **prepare** or **dpms**) used to shut down a encoder: **disable** is only called when also logically disabling the display pipeline and needs to release any resources acquired in **mode_set** (like shared PLLs, or again release pinned framebuffers). Therefore **disable** must be the inverse of **mode_set** plus **commit** for drivers still using legacy CRTC helpers, which is different from the rules under atomic. ``enable`` This callback should be used to enable the encoder. With the atomic drivers it is called after this encoder's CRTC has been enabled using their own :c:type:`drm_crtc_helper_funcs.enable ` hook. If that sequence is too simple drivers can just add their own driver private encoder hooks and call them from CRTC's callback by looping over all encoders connected to it using for_each_encoder_on_crtc(). This hook is only used by atomic helpers, it is the opposite of **disable**. Atomic drivers don't need to implement it if there's no need to enable anything at the encoder level. To ensure that runtime PM handling (using either DPMS or the new "ACTIVE" property) works **enable** must be the inverse of **disable** for atomic drivers. ``atomic_check`` This callback is used to validate encoder state for atomic drivers. Since the encoder is the object connecting the CRTC and connector it gets passed both states, to be able to validate interactions and update the CRTC to match what the encoder needs for the requested connector. Since this provides a strict superset of the functionality of **mode_fixup** (the requested and adjusted modes are both available through the passed in :c:type:`struct drm_crtc_state `) **mode_fixup** is not called when **atomic_check** is implemented. This function is used by the atomic helpers, but it is optional. NOTE: This function is called in the check phase of an atomic update. The driver is not allowed to change anything outside of the free-standing state objects passed-in or assembled in the overall :c:type:`drm_atomic_commit` update tracking structure. Also beware that userspace can request its own custom modes, neither core nor helpers filter modes to the list of probe modes reported by the GETCONNECTOR IOCTL and stored in :c:type:`drm_connector.modes `. To ensure that modes are filtered consistently put any encoder constraints and limits checks into **mode_valid**. RETURNS: 0 on success, -EINVAL if the state or the transition can't be supported, -ENOMEM on memory allocation failure and -EDEADLK if an attempt to obtain another state object ran into a :c:type:`drm_modeset_lock` deadlock.”h]”(hÎ)�”}”(hŒ**Definition**::”h]”(j3 )�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjBubhŒ:”…”�”}”(hjBh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Môhj>ubjN )�”}”(hX¦struct drm_encoder_helper_funcs { void (*dpms)(struct drm_encoder *encoder, int mode); enum drm_mode_status (*mode_valid)(struct drm_encoder *crtc, const struct drm_display_mode *mode); bool (*mode_fixup)(struct drm_encoder *encoder, const struct drm_display_mode *mode, struct drm_display_mode *adjusted_mode); void (*prepare)(struct drm_encoder *encoder); void (*commit)(struct drm_encoder *encoder); void (*mode_set)(struct drm_encoder *encoder, struct drm_display_mode *mode, struct drm_display_mode *adjusted_mode); void (*atomic_mode_set)(struct drm_encoder *encoder, struct drm_crtc_state *crtc_state, struct drm_connector_state *conn_state); enum drm_connector_status (*detect)(struct drm_encoder *encoder, struct drm_connector *connector); void (*atomic_disable)(struct drm_encoder *encoder, struct drm_atomic_commit *state); void (*atomic_enable)(struct drm_encoder *encoder, struct drm_atomic_commit *state); void (*disable)(struct drm_encoder *encoder); void (*enable)(struct drm_encoder *encoder); int (*atomic_check)(struct drm_encoder *encoder, struct drm_crtc_state *crtc_state, struct drm_connector_state *conn_state); };”h]”hX¦struct drm_encoder_helper_funcs { void (*dpms)(struct drm_encoder *encoder, int mode); enum drm_mode_status (*mode_valid)(struct drm_encoder *crtc, const struct drm_display_mode *mode); bool (*mode_fixup)(struct drm_encoder *encoder, const struct drm_display_mode *mode, struct drm_display_mode *adjusted_mode); void (*prepare)(struct drm_encoder *encoder); void (*commit)(struct drm_encoder *encoder); void (*mode_set)(struct drm_encoder *encoder, struct drm_display_mode *mode, struct drm_display_mode *adjusted_mode); void (*atomic_mode_set)(struct drm_encoder *encoder, struct drm_crtc_state *crtc_state, struct drm_connector_state *conn_state); enum drm_connector_status (*detect)(struct drm_encoder *encoder, struct drm_connector *connector); void (*atomic_disable)(struct drm_encoder *encoder, struct drm_atomic_commit *state); void (*atomic_enable)(struct drm_encoder *encoder, struct drm_atomic_commit *state); void (*disable)(struct drm_encoder *encoder); void (*enable)(struct drm_encoder *encoder); int (*atomic_check)(struct drm_encoder *encoder, struct drm_crtc_state *crtc_state, struct drm_connector_state *conn_state); };”…”�”}”hj_sbah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jM h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Möhj>ubhÎ)�”}”(hŒ **Members**”h]”j3 )�”}”(hjph]”hŒMembers”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjnubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mhj>ubjw )�”}”(hhh]”(j| )�”}”(hXn``dpms`` Callback to control power levels on the encoder. If the mode passed in is unsupported, the provider must use the next lowest power level. This is used by the legacy encoder helpers to implement DPMS functionality in drm_helper_connector_dpms(). This callback is also used to disable an encoder by calling it with DRM_MODE_DPMS_OFF if the **disable** hook isn't used. This callback is used by the legacy CRTC helpers. Atomic helpers also support using this hook for enabling and disabling an encoder to facilitate transitions to atomic, but it is deprecated. Instead **enable** and **disable** should be used. ”h]”(j‚ )�”}”(hŒ``dpms``”h]”jˆ )�”}”(hj�h]”hŒdpms”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mhj‰ubjž )�”}”(hhh]”(hÎ)�”}”(hŒõCallback to control power levels on the encoder. If the mode passed in is unsupported, the provider must use the next lowest power level. This is used by the legacy encoder helpers to implement DPMS functionality in drm_helper_connector_dpms().”h]”hŒõCallback to control power levels on the encoder. If the mode passed in is unsupported, the provider must use the next lowest power level. This is used by the legacy encoder helpers to implement DPMS functionality in drm_helper_connector_dpms().”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Møhj¥ubhÎ)�”}”(hŒyThis callback is also used to disable an encoder by calling it with DRM_MODE_DPMS_OFF if the **disable** hook isn't used.”h]”(hŒ]This callback is also used to disable an encoder by calling it with DRM_MODE_DPMS_OFF if the ”…”�”}”(hj·h²hh³Nh´Nubj3 )�”}”(hŒ **disable**”h]”hŒdisable”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj·ubhŒ hook isn’t used.”…”�”}”(hj·h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mýhj¥ubhÎ)�”}”(hŒòThis callback is used by the legacy CRTC helpers. Atomic helpers also support using this hook for enabling and disabling an encoder to facilitate transitions to atomic, but it is deprecated. Instead **enable** and **disable** should be used.”h]”(hŒÈThis callback is used by the legacy CRTC helpers. Atomic helpers also support using this hook for enabling and disabling an encoder to facilitate transitions to atomic, but it is deprecated. Instead ”…”�”}”(hjØh²hh³Nh´Nubj3 )�”}”(hŒ **enable**”h]”hŒenable”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjØubhŒ and ”…”�”}”(hjØh²hh³Nh´Nubj3 )�”}”(hŒ **disable**”h]”hŒdisable”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjØubhŒ should be used.”…”�”}”(hjØh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mhj¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¤h´Mhj†ubj| )�”}”(hXH``mode_valid`` This callback is used to check if a specific mode is valid in this encoder. This should be implemented if the encoder has some sort of restriction in the modes it can display. For example, a given encoder may be responsible to set a clock value. If the clock can not produce all the values for the available modes then this callback can be used to restrict the number of modes to only the ones that can be displayed. This hook is used by the probe helpers to filter the mode list in drm_helper_probe_single_connector_modes(), and it is used by the atomic helpers to validate modes supplied by userspace in drm_atomic_helper_check_modeset(). This function is optional. NOTE: Since this function is both called from the check phase of an atomic commit, and the mode validation in the probe paths it is not allowed to look at anything else but the passed-in mode, and validate it against configuration-invariant hardware constraints. Any further limits which depend upon the configuration can only be checked in **mode_fixup** or **atomic_check**. RETURNS: drm_mode_status Enum ”h]”(j‚ )�”}”(hŒ``mode_valid``”h]”jˆ )�”}”(hjh]”hŒ mode_valid”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M$hjubjž )�”}”(hhh]”(hÎ)�”}”(hX This callback is used to check if a specific mode is valid in this encoder. This should be implemented if the encoder has some sort of restriction in the modes it can display. For example, a given encoder may be responsible to set a clock value. If the clock can not produce all the values for the available modes then this callback can be used to restrict the number of modes to only the ones that can be displayed.”h]”hX This callback is used to check if a specific mode is valid in this encoder. This should be implemented if the encoder has some sort of restriction in the modes it can display. For example, a given encoder may be responsible to set a clock value. If the clock can not produce all the values for the available modes then this callback can be used to restrict the number of modes to only the ones that can be displayed.”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M hj3ubhÎ)�”}”(hŒßThis hook is used by the probe helpers to filter the mode list in drm_helper_probe_single_connector_modes(), and it is used by the atomic helpers to validate modes supplied by userspace in drm_atomic_helper_check_modeset().”h]”hŒßThis hook is used by the probe helpers to filter the mode list in drm_helper_probe_single_connector_modes(), and it is used by the atomic helpers to validate modes supplied by userspace in drm_atomic_helper_check_modeset().”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mhj3ubhÎ)�”}”(hŒThis function is optional.”h]”hŒThis function is optional.”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mhj3ubhÎ)�”}”(hŒNOTE:”h]”hŒNOTE:”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mhj3ubhÎ)�”}”(hXrSince this function is both called from the check phase of an atomic commit, and the mode validation in the probe paths it is not allowed to look at anything else but the passed-in mode, and validate it against configuration-invariant hardware constraints. Any further limits which depend upon the configuration can only be checked in **mode_fixup** or **atomic_check**.”h]”(hXOSince this function is both called from the check phase of an atomic commit, and the mode validation in the probe paths it is not allowed to look at anything else but the passed-in mode, and validate it against configuration-invariant hardware constraints. Any further limits which depend upon the configuration can only be checked in ”…”�”}”(hjrh²hh³Nh´Nubj3 )�”}”(hŒ**mode_fixup**”h]”hŒ mode_fixup”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjrubhŒ or ”…”�”}”(hjrh²hh³Nh´Nubj3 )�”}”(hŒ**atomic_check**”h]”hŒ atomic_check”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjrubhŒ.”…”�”}”(hjrh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mhj3ubhÎ)�”}”(hŒRETURNS:”h]”hŒRETURNS:”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M"hj3ubhÎ)�”}”(hŒdrm_mode_status Enum”h]”hŒdrm_mode_status Enum”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j2h´M$hj3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j2h´M$hj†ubj| )�”}”(hXz``mode_fixup`` This callback is used to validate and adjust a mode. The parameter mode is the display mode that should be fed to the next element in the display chain, either the final :c:type:`drm_connector` or a :c:type:`drm_bridge`. The parameter adjusted_mode is the input mode the encoder requires. It can be modified by this callback and does not need to match mode. See also :c:type:`drm_crtc_state.adjusted_mode ` for more details. This function is used by both legacy CRTC helpers and atomic helpers. This hook is optional. NOTE: This function is called in the check phase of atomic modesets, which can be aborted for any reason (including on userspace's request to just check whether a configuration would be possible). Atomic drivers MUST NOT touch any persistent state (hardware or software) or data structures except the passed in adjusted_mode parameter. This is in contrast to the legacy CRTC helpers where this was allowed. Atomic drivers which need to inspect and adjust more state should instead use the **atomic_check** callback. If **atomic_check** is used, this hook isn't called since **atomic_check** allows a strict superset of the functionality of **mode_fixup**. Also beware that userspace can request its own custom modes, neither core nor helpers filter modes to the list of probe modes reported by the GETCONNECTOR IOCTL and stored in :c:type:`drm_connector.modes `. To ensure that modes are filtered consistently put any encoder constraints and limits checks into **mode_valid**. RETURNS: True if an acceptable configuration is possible, false if the modeset operation should be rejected. ”h]”(j‚ )�”}”(hŒ``mode_fixup``”h]”jˆ )�”}”(hjÔh]”hŒ mode_fixup”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÒubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MOhjÎubjž )�”}”(hhh]”(hÎ)�”}”(hX¸This callback is used to validate and adjust a mode. The parameter mode is the display mode that should be fed to the next element in the display chain, either the final :c:type:`drm_connector` or a :c:type:`drm_bridge`. The parameter adjusted_mode is the input mode the encoder requires. It can be modified by this callback and does not need to match mode. See also :c:type:`drm_crtc_state.adjusted_mode ` for more details.”h]”(hŒªThis callback is used to validate and adjust a mode. The parameter mode is the display mode that should be fed to the next element in the display chain, either the final ”…”�”}”(hjíh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_connector`”h]”jˆ )�”}”(hj÷h]”hŒ drm_connector”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjõubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œ drm_connector”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M,hjíubhŒ or a ”…”�”}”(hjíh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_bridge`”h]”jˆ )�”}”(hjh]”hŒ drm_bridge”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œ drm_bridge”uh1hh³jh´M,hjíubhŒ”. The parameter adjusted_mode is the input mode the encoder requires. It can be modified by this callback and does not need to match mode. See also ”…”�”}”(hjíh²hh³Nh´Nubh)�”}”(hŒ7:c:type:`drm_crtc_state.adjusted_mode `”h]”jˆ )�”}”(hj>h]”hŒdrm_crtc_state.adjusted_mode”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj<ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_crtc_state”uh1hh³jh´M,hjíubhŒ for more details.”…”�”}”(hjíh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jh´M,hjêubhÎ)�”}”(hŒ\This function is used by both legacy CRTC helpers and atomic helpers. This hook is optional.”h]”hŒ\This function is used by both legacy CRTC helpers and atomic helpers. This hook is optional.”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M3hjêubhÎ)�”}”(hŒNOTE:”h]”hŒNOTE:”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M6hjêubhÎ)�”}”(hXIThis function is called in the check phase of atomic modesets, which can be aborted for any reason (including on userspace's request to just check whether a configuration would be possible). Atomic drivers MUST NOT touch any persistent state (hardware or software) or data structures except the passed in adjusted_mode parameter.”h]”hXKThis function is called in the check phase of atomic modesets, which can be aborted for any reason (including on userspace’s request to just check whether a configuration would be possible). Atomic drivers MUST NOT touch any persistent state (hardware or software) or data structures except the passed in adjusted_mode parameter.”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M8hjêubhÎ)�”}”(hŒFThis is in contrast to the legacy CRTC helpers where this was allowed.”h]”hŒFThis is in contrast to the legacy CRTC helpers where this was allowed.”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M>hjêubhÎ)�”}”(hŒøAtomic drivers which need to inspect and adjust more state should instead use the **atomic_check** callback. If **atomic_check** is used, this hook isn't called since **atomic_check** allows a strict superset of the functionality of **mode_fixup**.”h]”(hŒRAtomic drivers which need to inspect and adjust more state should instead use the ”…”�”}”(hj¡h²hh³Nh´Nubj3 )�”}”(hŒ**atomic_check**”h]”hŒ atomic_check”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¡ubhŒ callback. If ”…”�”}”(hj¡h²hh³Nh´Nubj3 )�”}”(hŒ**atomic_check**”h]”hŒ atomic_check”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¡ubhŒ) is used, this hook isn’t called since ”…”�”}”(hj¡h²hh³Nh´Nubj3 )�”}”(hŒ**atomic_check**”h]”hŒ atomic_check”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¡ubhŒ2 allows a strict superset of the functionality of ”…”�”}”(hj¡h²hh³Nh´Nubj3 )�”}”(hŒ**mode_fixup**”h]”hŒ mode_fixup”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¡ubhŒ.”…”�”}”(hj¡h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MAhjêubhÎ)�”}”(hXOAlso beware that userspace can request its own custom modes, neither core nor helpers filter modes to the list of probe modes reported by the GETCONNECTOR IOCTL and stored in :c:type:`drm_connector.modes `. To ensure that modes are filtered consistently put any encoder constraints and limits checks into **mode_valid**.”h]”(hŒ¯Also beware that userspace can request its own custom modes, neither core nor helpers filter modes to the list of probe modes reported by the GETCONNECTOR IOCTL and stored in ”…”�”}”(hjøh²hh³Nh´Nubh)�”}”(hŒ-:c:type:`drm_connector.modes `”h]”jˆ )�”}”(hjh]”hŒdrm_connector.modes”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_connector”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MFhjøubhŒd. To ensure that modes are filtered consistently put any encoder constraints and limits checks into ”…”�”}”(hjøh²hh³Nh´Nubj3 )�”}”(hŒ**mode_valid**”h]”hŒ mode_valid”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjøubhŒ.”…”�”}”(hjøh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jh´MFhjêubhÎ)�”}”(hŒRETURNS:”h]”hŒRETURNS:”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MLhjêubhÎ)�”}”(hŒcTrue if an acceptable configuration is possible, false if the modeset operation should be rejected.”h]”hŒcTrue if an acceptable configuration is possible, false if the modeset operation should be rejected.”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MNhjêubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÎubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jéh´MOhj†ubj| )�”}”(hXÖ``prepare`` This callback should prepare the encoder for a subsequent modeset, which in practice means the driver should disable the encoder if it is running. Most drivers ended up implementing this by calling their **dpms** hook with DRM_MODE_DPMS_OFF. This callback is used by the legacy CRTC helpers. Atomic helpers also support using this hook for disabling an encoder to facilitate transitions to atomic, but it is deprecated. Instead **disable** should be used. ”h]”(j‚ )�”}”(hŒ ``prepare``”h]”jˆ )�”}”(hjlh]”hŒprepare”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjjubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M`hjfubjž )�”}”(hhh]”(hÎ)�”}”(hŒñThis callback should prepare the encoder for a subsequent modeset, which in practice means the driver should disable the encoder if it is running. Most drivers ended up implementing this by calling their **dpms** hook with DRM_MODE_DPMS_OFF.”h]”(hŒÌThis callback should prepare the encoder for a subsequent modeset, which in practice means the driver should disable the encoder if it is running. Most drivers ended up implementing this by calling their ”…”�”}”(hj…h²hh³Nh´Nubj3 )�”}”(hŒ**dpms**”h]”hŒdpms”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj…ubhŒ hook with DRM_MODE_DPMS_OFF.”…”�”}”(hj…h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MXhj‚ubhÎ)�”}”(hŒÖThis callback is used by the legacy CRTC helpers. Atomic helpers also support using this hook for disabling an encoder to facilitate transitions to atomic, but it is deprecated. Instead **disable** should be used.”h]”(hŒ»This callback is used by the legacy CRTC helpers. Atomic helpers also support using this hook for disabling an encoder to facilitate transitions to atomic, but it is deprecated. Instead ”…”�”}”(hj¦h²hh³Nh´Nubj3 )�”}”(hŒ **disable**”h]”hŒdisable”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¦ubhŒ should be used.”…”�”}”(hj¦h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M]hj‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjfubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j�h´M`hj†ubj| )�”}”(hXÇ``commit`` This callback should commit the new mode on the encoder after a modeset, which in practice means the driver should enable the encoder. Most drivers ended up implementing this by calling their **dpms** hook with DRM_MODE_DPMS_ON. This callback is used by the legacy CRTC helpers. Atomic helpers also support using this hook for enabling an encoder to facilitate transitions to atomic, but it is deprecated. Instead **enable** should be used. ”h]”(j‚ )�”}”(hŒ ``commit``”h]”jˆ )�”}”(hjÙh]”hŒcommit”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj×ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MohjÓubjž )�”}”(hhh]”(hÎ)�”}”(hŒåThis callback should commit the new mode on the encoder after a modeset, which in practice means the driver should enable the encoder. Most drivers ended up implementing this by calling their **dpms** hook with DRM_MODE_DPMS_ON.”h]”(hŒÁThis callback should commit the new mode on the encoder after a modeset, which in practice means the driver should enable the encoder. Most drivers ended up implementing this by calling their ”…”�”}”(hjòh²hh³Nh´Nubj3 )�”}”(hŒ**dpms**”h]”hŒdpms”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjòubhŒ hook with DRM_MODE_DPMS_ON.”…”�”}”(hjòh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MghjïubhÎ)�”}”(hŒÔThis callback is used by the legacy CRTC helpers. Atomic helpers also support using this hook for enabling an encoder to facilitate transitions to atomic, but it is deprecated. Instead **enable** should be used.”h]”(hŒºThis callback is used by the legacy CRTC helpers. Atomic helpers also support using this hook for enabling an encoder to facilitate transitions to atomic, but it is deprecated. Instead ”…”�”}”(hjh²hh³Nh´Nubj3 )�”}”(hŒ **enable**”h]”hŒenable”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjubhŒ should be used.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mlhjïubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÓubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jîh´Mohj†ubj| )�”}”(hXF``mode_set`` This callback is used to update the display mode of an encoder. Note that the display pipe is completely off when this function is called. Drivers which need hardware to be running before they program the new display mode (because they implement runtime PM) should not use this hook, because the helper library calls it only once and not every time the display pipeline is suspend using either DPMS or the new "ACTIVE" property. Such drivers should instead move all their encoder setup into the **enable** callback. This callback is used both by the legacy CRTC helpers and the atomic modeset helpers. It is optional in the atomic helpers. NOTE: If the driver uses the atomic modeset helpers and needs to inspect the connector state or connector display info during mode setting, **atomic_mode_set** can be used instead. ”h]”(j‚ )�”}”(hŒ ``mode_set``”h]”jˆ )�”}”(hjFh]”hŒmode_set”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjDubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M‡hj@ubjž )�”}”(hhh]”(hÎ)�”}”(hŒ?This callback is used to update the display mode of an encoder.”h]”hŒ?This callback is used to update the display mode of an encoder.”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mvhj\ubhÎ)�”}”(hXÃNote that the display pipe is completely off when this function is called. Drivers which need hardware to be running before they program the new display mode (because they implement runtime PM) should not use this hook, because the helper library calls it only once and not every time the display pipeline is suspend using either DPMS or the new "ACTIVE" property. Such drivers should instead move all their encoder setup into the **enable** callback.”h]”(hX³Note that the display pipe is completely off when this function is called. Drivers which need hardware to be running before they program the new display mode (because they implement runtime PM) should not use this hook, because the helper library calls it only once and not every time the display pipeline is suspend using either DPMS or the new “ACTIVEâ€� property. Such drivers should instead move all their encoder setup into the ”…”�”}”(hjnh²hh³Nh´Nubj3 )�”}”(hŒ **enable**”h]”hŒenable”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjnubhŒ callback.”…”�”}”(hjnh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mxhj\ubhÎ)�”}”(hŒ{This callback is used both by the legacy CRTC helpers and the atomic modeset helpers. It is optional in the atomic helpers.”h]”hŒ{This callback is used both by the legacy CRTC helpers and the atomic modeset helpers. It is optional in the atomic helpers.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M€hj\ubhÎ)�”}”(hŒNOTE:”h]”hŒNOTE:”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mƒhj\ubhÎ)�”}”(hŒ®If the driver uses the atomic modeset helpers and needs to inspect the connector state or connector display info during mode setting, **atomic_mode_set** can be used instead.”h]”(hŒ†If the driver uses the atomic modeset helpers and needs to inspect the connector state or connector display info during mode setting, ”…”�”}”(hj­h²hh³Nh´Nubj3 )�”}”(hŒ**atomic_mode_set**”h]”hŒatomic_mode_set”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj­ubhŒ can be used instead.”…”�”}”(hj­h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M…hj\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j[h´M‡hj†ubj| )�”}”(hXY``atomic_mode_set`` This callback is used to update the display mode of an encoder. Note that the display pipe is completely off when this function is called. Drivers which need hardware to be running before they program the new display mode (because they implement runtime PM) should not use this hook, because the helper library calls it only once and not every time the display pipeline is suspended using either DPMS or the new "ACTIVE" property. Such drivers should instead move all their encoder setup into the **enable** callback. This callback is used by the atomic modeset helpers in place of the **mode_set** callback, if set by the driver. It is optional and should be used instead of **mode_set** if the driver needs to inspect the connector state or display info, since there is no direct way to go from the encoder to the current connector. ”h]”(j‚ )�”}”(hŒ``atomic_mode_set``”h]”jˆ )�”}”(hjàh]”hŒatomic_mode_set”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÞubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MžhjÚubjž )�”}”(hhh]”(hÎ)�”}”(hŒ?This callback is used to update the display mode of an encoder.”h]”hŒ?This callback is used to update the display mode of an encoder.”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M�hjöubhÎ)�”}”(hXÅNote that the display pipe is completely off when this function is called. Drivers which need hardware to be running before they program the new display mode (because they implement runtime PM) should not use this hook, because the helper library calls it only once and not every time the display pipeline is suspended using either DPMS or the new "ACTIVE" property. Such drivers should instead move all their encoder setup into the **enable** callback.”h]”(hXµNote that the display pipe is completely off when this function is called. Drivers which need hardware to be running before they program the new display mode (because they implement runtime PM) should not use this hook, because the helper library calls it only once and not every time the display pipeline is suspended using either DPMS or the new “ACTIVEâ€� property. Such drivers should instead move all their encoder setup into the ”…”�”}”(hjh²hh³Nh´Nubj3 )�”}”(hŒ **enable**”h]”hŒenable”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjubhŒ callback.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M’hjöubhÎ)�”}”(hX<This callback is used by the atomic modeset helpers in place of the **mode_set** callback, if set by the driver. It is optional and should be used instead of **mode_set** if the driver needs to inspect the connector state or display info, since there is no direct way to go from the encoder to the current connector.”h]”(hŒDThis callback is used by the atomic modeset helpers in place of the ”…”�”}”(hj)h²hh³Nh´Nubj3 )�”}”(hŒ **mode_set**”h]”hŒmode_set”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj)ubhŒN callback, if set by the driver. It is optional and should be used instead of ”…”�”}”(hj)h²hh³Nh´Nubj3 )�”}”(hŒ **mode_set**”h]”hŒmode_set”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj)ubhŒ’ if the driver needs to inspect the connector state or display info, since there is no direct way to go from the encoder to the current connector.”…”�”}”(hj)h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mšhjöubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÚubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jõh´Mžhj†ubj| )�”}”(hX£``detect`` This callback can be used by drivers who want to do detection on the encoder object instead of in connector functions. It is not used by any helper and therefore has purely driver-specific semantics. New drivers shouldn't use this and instead just implement their own private callbacks. FIXME: This should just be converted into a pile of driver vfuncs. Currently radeon, amdgpu and nouveau are using it. ”h]”(j‚ )�”}”(hŒ ``detect``”h]”jˆ )�”}”(hjnh]”hŒdetect”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjlubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M±hjhubjž )�”}”(hhh]”(hÎ)�”}”(hŒvThis callback can be used by drivers who want to do detection on the encoder object instead of in connector functions.”h]”hŒvThis callback can be used by drivers who want to do detection on the encoder object instead of in connector functions.”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M§hj„ubhÎ)�”}”(hŒ§It is not used by any helper and therefore has purely driver-specific semantics. New drivers shouldn't use this and instead just implement their own private callbacks.”h]”hŒ©It is not used by any helper and therefore has purely driver-specific semantics. New drivers shouldn’t use this and instead just implement their own private callbacks.”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mªhj„ubhÎ)�”}”(hŒFIXME:”h]”hŒFIXME:”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M®hj„ubhÎ)�”}”(hŒnThis should just be converted into a pile of driver vfuncs. Currently radeon, amdgpu and nouveau are using it.”h]”hŒnThis should just be converted into a pile of driver vfuncs. Currently radeon, amdgpu and nouveau are using it.”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M°hj„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjhubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jƒh´M±hj†ubj| )�”}”(hX–``atomic_disable`` This callback should be used to disable the encoder. With the atomic drivers it is called before this encoder's CRTC has been shut off using their own :c:type:`drm_crtc_helper_funcs.atomic_disable ` hook. If that sequence is too simple drivers can just add their own driver private encoder hooks and call them from CRTC's callback by looping over all encoders connected to it using for_each_encoder_on_crtc(). This callback is a variant of **disable** that provides the atomic state to the driver. If **atomic_disable** is implemented, **disable** is not called by the helpers. This hook is only used by atomic helpers. Atomic drivers don't need to implement it if there's no need to disable anything at the encoder level. To ensure that runtime PM handling (using either DPMS or the new "ACTIVE" property) works **atomic_disable** must be the inverse of **atomic_enable**. ”h]”(j‚ )�”}”(hŒ``atomic_disable``”h]”jˆ )�”}”(hjÕh]”hŒatomic_disable”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÓubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MÈhjÏubjž )�”}”(hhh]”(hÎ)�”}”(hX°This callback should be used to disable the encoder. With the atomic drivers it is called before this encoder's CRTC has been shut off using their own :c:type:`drm_crtc_helper_funcs.atomic_disable ` hook. If that sequence is too simple drivers can just add their own driver private encoder hooks and call them from CRTC's callback by looping over all encoders connected to it using for_each_encoder_on_crtc().”h]”(hŒ™This callback should be used to disable the encoder. With the atomic drivers it is called before this encoder’s CRTC has been shut off using their own ”…”�”}”(hjîh²hh³Nh´Nubh)�”}”(hŒF:c:type:`drm_crtc_helper_funcs.atomic_disable `”h]”jˆ )�”}”(hjøh]”hŒ$drm_crtc_helper_funcs.atomic_disable”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjöubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_crtc_helper_funcs”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M¹hjîubhŒÕ hook. If that sequence is too simple drivers can just add their own driver private encoder hooks and call them from CRTC’s callback by looping over all encoders connected to it using for_each_encoder_on_crtc().”…”�”}”(hjîh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jh´M¹hjëubhÎ)�”}”(hŒ§This callback is a variant of **disable** that provides the atomic state to the driver. If **atomic_disable** is implemented, **disable** is not called by the helpers.”h]”(hŒThis callback is a variant of ”…”�”}”(hj h²hh³Nh´Nubj3 )�”}”(hŒ **disable**”h]”hŒdisable”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj ubhŒ2 that provides the atomic state to the driver. If ”…”�”}”(hj h²hh³Nh´Nubj3 )�”}”(hŒ**atomic_disable**”h]”hŒatomic_disable”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj ubhŒ is implemented, ”…”�”}”(hj h²hh³Nh´Nubj3 )�”}”(hŒ **disable**”h]”hŒdisable”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj ubhŒ is not called by the helpers.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MÀhjëubhÎ)�”}”(hX'This hook is only used by atomic helpers. Atomic drivers don't need to implement it if there's no need to disable anything at the encoder level. To ensure that runtime PM handling (using either DPMS or the new "ACTIVE" property) works **atomic_disable** must be the inverse of **atomic_enable**.”h]”(hŒóThis hook is only used by atomic helpers. Atomic drivers don’t need to implement it if there’s no need to disable anything at the encoder level. To ensure that runtime PM handling (using either DPMS or the new “ACTIVEâ€� property) works ”…”�”}”(hjeh²hh³Nh´Nubj3 )�”}”(hŒ**atomic_disable**”h]”hŒatomic_disable”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjeubhŒ must be the inverse of ”…”�”}”(hjeh²hh³Nh´Nubj3 )�”}”(hŒ**atomic_enable**”h]”hŒ atomic_enable”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjeubhŒ.”…”�”}”(hjeh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MÄhjëubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÏubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jêh´MÈhj†ubj| )�”}”(hXn``atomic_enable`` This callback should be used to enable the encoder. It is called after this encoder's CRTC has been enabled using their own :c:type:`drm_crtc_helper_funcs.atomic_enable ` hook. If that sequence is too simple drivers can just add their own driver private encoder hooks and call them from CRTC's callback by looping over all encoders connected to it using for_each_encoder_on_crtc(). This callback is a variant of **enable** that provides the atomic state to the driver. If **atomic_enable** is implemented, **enable** is not called by the helpers. This hook is only used by atomic helpers, it is the opposite of **atomic_disable**. Atomic drivers don't need to implement it if there's no need to enable anything at the encoder level. To ensure that runtime PM handling works **atomic_enable** must be the inverse of **atomic_disable**. ”h]”(j‚ )�”}”(hŒ``atomic_enable``”h]”jˆ )�”}”(hjªh]”hŒ atomic_enable”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mßhj¤ubjž )�”}”(hhh]”(hÎ)�”}”(hX”This callback should be used to enable the encoder. It is called after this encoder's CRTC has been enabled using their own :c:type:`drm_crtc_helper_funcs.atomic_enable ` hook. If that sequence is too simple drivers can just add their own driver private encoder hooks and call them from CRTC's callback by looping over all encoders connected to it using for_each_encoder_on_crtc().”h]”(hŒ~This callback should be used to enable the encoder. It is called after this encoder’s CRTC has been enabled using their own ”…”�”}”(hjÃh²hh³Nh´Nubh)�”}”(hŒE:c:type:`drm_crtc_helper_funcs.atomic_enable `”h]”jˆ )�”}”(hjÍh]”hŒ#drm_crtc_helper_funcs.atomic_enable”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjËubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_crtc_helper_funcs”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MÐhjÃubhŒÕ hook. If that sequence is too simple drivers can just add their own driver private encoder hooks and call them from CRTC’s callback by looping over all encoders connected to it using for_each_encoder_on_crtc().”…”�”}”(hjÃh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jêh´MÐhjÀubhÎ)�”}”(hŒ¤This callback is a variant of **enable** that provides the atomic state to the driver. If **atomic_enable** is implemented, **enable** is not called by the helpers.”h]”(hŒThis callback is a variant of ”…”�”}”(hjõh²hh³Nh´Nubj3 )�”}”(hŒ **enable**”h]”hŒenable”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjõubhŒ2 that provides the atomic state to the driver. If ”…”�”}”(hjõh²hh³Nh´Nubj3 )�”}”(hŒ**atomic_enable**”h]”hŒ atomic_enable”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjõubhŒ is implemented, ”…”�”}”(hjõh²hh³Nh´Nubj3 )�”}”(hŒ **enable**”h]”hŒenable”…”�”}”(hj! h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjõubhŒ is not called by the helpers.”…”�”}”(hjõh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M×hjÀubhÎ)�”}”(hXThis hook is only used by atomic helpers, it is the opposite of **atomic_disable**. Atomic drivers don't need to implement it if there's no need to enable anything at the encoder level. To ensure that runtime PM handling works **atomic_enable** must be the inverse of **atomic_disable**.”h]”(hŒ@This hook is only used by atomic helpers, it is the opposite of ”…”�”}”(hj: h²hh³Nh´Nubj3 )�”}”(hŒ**atomic_disable**”h]”hŒatomic_disable”…”�”}”(hjB h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj: ubhŒ•. Atomic drivers don’t need to implement it if there’s no need to enable anything at the encoder level. To ensure that runtime PM handling works ”…”�”}”(hj: h²hh³Nh´Nubj3 )�”}”(hŒ**atomic_enable**”h]”hŒ atomic_enable”…”�”}”(hjT h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj: ubhŒ must be the inverse of ”…”�”}”(hj: h²hh³Nh´Nubj3 )�”}”(hŒ**atomic_disable**”h]”hŒatomic_disable”…”�”}”(hjf h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj: ubhŒ.”…”�”}”(hj: h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MÛhjÀubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¿h´Mßhj†ubj| )�”}”(hXw``disable`` This callback should be used to disable the encoder. With the atomic drivers it is called before this encoder's CRTC has been shut off using their own :c:type:`drm_crtc_helper_funcs.disable ` hook. If that sequence is too simple drivers can just add their own driver private encoder hooks and call them from CRTC's callback by looping over all encoders connected to it using for_each_encoder_on_crtc(). This hook is used both by legacy CRTC helpers and atomic helpers. Atomic drivers don't need to implement it if there's no need to disable anything at the encoder level. To ensure that runtime PM handling (using either DPMS or the new "ACTIVE" property) works **disable** must be the inverse of **enable** for atomic drivers. For atomic drivers also consider **atomic_disable** and save yourself from having to read the NOTE below! NOTE: With legacy CRTC helpers there's a big semantic difference between **disable** and other hooks (like **prepare** or **dpms**) used to shut down a encoder: **disable** is only called when also logically disabling the display pipeline and needs to release any resources acquired in **mode_set** (like shared PLLs, or again release pinned framebuffers). Therefore **disable** must be the inverse of **mode_set** plus **commit** for drivers still using legacy CRTC helpers, which is different from the rules under atomic. ”h]”(j‚ )�”}”(hŒ ``disable``”h]”jˆ )�”}”(hj‘ h]”hŒdisable”…”�”}”(hj“ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj� ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mhj‹ ubjž )�”}”(hhh]”(hÎ)�”}”(hXªThis callback should be used to disable the encoder. With the atomic drivers it is called before this encoder's CRTC has been shut off using their own :c:type:`drm_crtc_helper_funcs.disable ` hook. If that sequence is too simple drivers can just add their own driver private encoder hooks and call them from CRTC's callback by looping over all encoders connected to it using for_each_encoder_on_crtc().”h]”(hŒ™This callback should be used to disable the encoder. With the atomic drivers it is called before this encoder’s CRTC has been shut off using their own ”…”�”}”(hjª h²hh³Nh´Nubh)�”}”(hŒ?:c:type:`drm_crtc_helper_funcs.disable `”h]”jˆ )�”}”(hj´ h]”hŒdrm_crtc_helper_funcs.disable”…”�”}”(hj¶ h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj² ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_crtc_helper_funcs”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mçhjª ubhŒÖ hook. If that sequence is too simple drivers can just add their own driver private encoder hooks and call them from CRTC’s callback by looping over all encoders connected to it using for_each_encoder_on_crtc().”…”�”}”(hjª h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÑ h´Mçhj§ ubhÎ)�”}”(hXDThis hook is used both by legacy CRTC helpers and atomic helpers. Atomic drivers don't need to implement it if there's no need to disable anything at the encoder level. To ensure that runtime PM handling (using either DPMS or the new "ACTIVE" property) works **disable** must be the inverse of **enable** for atomic drivers.”h]”(hX This hook is used both by legacy CRTC helpers and atomic helpers. Atomic drivers don’t need to implement it if there’s no need to disable anything at the encoder level. To ensure that runtime PM handling (using either DPMS or the new “ACTIVEâ€� property) works ”…”�”}”(hjÜ h²hh³Nh´Nubj3 )�”}”(hŒ **disable**”•Ôh]”hŒdisable”…”�”}”(hjä h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÜ ubhŒ must be the inverse of ”…”�”}”(hjÜ h²hh³Nh´Nubj3 )�”}”(hŒ **enable**”h]”hŒenable”…”�”}”(hjö h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÜ ubhŒ for atomic drivers.”…”�”}”(hjÜ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mîhj§ ubhÎ)�”}”(hŒiFor atomic drivers also consider **atomic_disable** and save yourself from having to read the NOTE below!”h]”(hŒ!For atomic drivers also consider ”…”�”}”(hj!h²hh³Nh´Nubj3 )�”}”(hŒ**atomic_disable**”h]”hŒatomic_disable”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj!ubhŒ6 and save yourself from having to read the NOTE below!”…”�”}”(hj!h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Môhj§ ubhÎ)�”}”(hŒNOTE:”h]”hŒNOTE:”…”�”}”(hj0!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M÷hj§ ubhÎ)�”}”(hX^With legacy CRTC helpers there's a big semantic difference between **disable** and other hooks (like **prepare** or **dpms**) used to shut down a encoder: **disable** is only called when also logically disabling the display pipeline and needs to release any resources acquired in **mode_set** (like shared PLLs, or again release pinned framebuffers).”h]”(hŒEWith legacy CRTC helpers there’s a big semantic difference between ”…”�”}”(hj?!h²hh³Nh´Nubj3 )�”}”(hŒ **disable**”h]”hŒdisable”…”�”}”(hjG!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj?!ubhŒ and other hooks (like ”…”�”}”(hj?!h²hh³Nh´Nubj3 )�”}”(hŒ **prepare**”h]”hŒprepare”…”�”}”(hjY!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj?!ubhŒ or ”…”�”}”(hj?!h²hh³Nh´Nubj3 )�”}”(hŒ**dpms**”h]”hŒdpms”…”�”}”(hjk!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj?!ubhŒ) used to shut down a encoder: ”…”�”}”(hj?!h²hh³Nh´Nubj3 )�”}”(hŒ **disable**”h]”hŒdisable”…”�”}”(hj}!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj?!ubhŒr is only called when also logically disabling the display pipeline and needs to release any resources acquired in ”…”�”}”(hj?!h²hh³Nh´Nubj3 )�”}”(hŒ **mode_set**”h]”hŒmode_set”…”�”}”(hj�!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj?!ubhŒ: (like shared PLLs, or again release pinned framebuffers).”…”�”}”(hj?!h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mùhj§ ubhÎ)�”}”(hŒ¦Therefore **disable** must be the inverse of **mode_set** plus **commit** for drivers still using legacy CRTC helpers, which is different from the rules under atomic.”h]”(hŒ Therefore ”…”�”}”(hj¨!h²hh³Nh´Nubj3 )�”}”(hŒ **disable**”h]”hŒdisable”…”�”}”(hj°!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¨!ubhŒ must be the inverse of ”…”�”}”(hj¨!h²hh³Nh´Nubj3 )�”}”(hŒ **mode_set**”h]”hŒmode_set”…”�”}”(hjÂ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¨!ubhŒ plus ”…”�”}”(hj¨!h²hh³Nh´Nubj3 )�”}”(hŒ **commit**”h]”hŒcommit”…”�”}”(hjÔ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¨!ubhŒ] for drivers still using legacy CRTC helpers, which is different from the rules under atomic.”…”�”}”(hj¨!h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mÿhj§ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj‹ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¦ h´Mhj†ubj| )�”}”(hX``enable`` This callback should be used to enable the encoder. With the atomic drivers it is called after this encoder's CRTC has been enabled using their own :c:type:`drm_crtc_helper_funcs.enable ` hook. If that sequence is too simple drivers can just add their own driver private encoder hooks and call them from CRTC's callback by looping over all encoders connected to it using for_each_encoder_on_crtc(). This hook is only used by atomic helpers, it is the opposite of **disable**. Atomic drivers don't need to implement it if there's no need to enable anything at the encoder level. To ensure that runtime PM handling (using either DPMS or the new "ACTIVE" property) works **enable** must be the inverse of **disable** for atomic drivers. ”h]”(j‚ )�”}”(hŒ ``enable``”h]”jˆ )�”}”(hjÿ!h]”hŒenable”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjý!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mhjù!ubjž )�”}”(hhh]”(hÎ)�”}”(hX¦This callback should be used to enable the encoder. With the atomic drivers it is called after this encoder's CRTC has been enabled using their own :c:type:`drm_crtc_helper_funcs.enable ` hook. If that sequence is too simple drivers can just add their own driver private encoder hooks and call them from CRTC's callback by looping over all encoders connected to it using for_each_encoder_on_crtc().”h]”(hŒ–This callback should be used to enable the encoder. With the atomic drivers it is called after this encoder’s CRTC has been enabled using their own ”…”�”}”(hj"h²hh³Nh´Nubh)�”}”(hŒ>:c:type:`drm_crtc_helper_funcs.enable `”h]”jˆ )�”}”(hj""h]”hŒdrm_crtc_helper_funcs.enable”…”�”}”(hj$"h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj "ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_crtc_helper_funcs”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mhj"ubhŒÖ hook. If that sequence is too simple drivers can just add their own driver private encoder hooks and call them from CRTC’s callback by looping over all encoders connected to it using for_each_encoder_on_crtc().”…”�”}”(hj"h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j?"h´Mhj"ubhÎ)�”}”(hXNThis hook is only used by atomic helpers, it is the opposite of **disable**. Atomic drivers don't need to implement it if there's no need to enable anything at the encoder level. To ensure that runtime PM handling (using either DPMS or the new "ACTIVE" property) works **enable** must be the inverse of **disable** for atomic drivers.”h]”(hŒ@This hook is only used by atomic helpers, it is the opposite of ”…”�”}”(hjJ"h²hh³Nh´Nubj3 )�”}”(hŒ **disable**”h]”hŒdisable”…”�”}”(hjR"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjJ"ubhŒÊ. Atomic drivers don’t need to implement it if there’s no need to enable anything at the encoder level. To ensure that runtime PM handling (using either DPMS or the new “ACTIVEâ€� property) works ”…”�”}”(hjJ"h²hh³Nh´Nubj3 )�”}”(hŒ **enable**”h]”hŒenable”…”�”}”(hjd"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjJ"ubhŒ must be the inverse of ”…”�”}”(hjJ"h²hh³Nh´Nubj3 )�”}”(hŒ **disable**”h]”hŒdisable”…”�”}”(hjv"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjJ"ubhŒ for atomic drivers.”…”�”}”(hjJ"h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mhj"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjù!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j"h´Mhj†ubj| )�”}”(hX¨``atomic_check`` This callback is used to validate encoder state for atomic drivers. Since the encoder is the object connecting the CRTC and connector it gets passed both states, to be able to validate interactions and update the CRTC to match what the encoder needs for the requested connector. Since this provides a strict superset of the functionality of **mode_fixup** (the requested and adjusted modes are both available through the passed in :c:type:`struct drm_crtc_state `) **mode_fixup** is not called when **atomic_check** is implemented. This function is used by the atomic helpers, but it is optional. NOTE: This function is called in the check phase of an atomic update. The driver is not allowed to change anything outside of the free-standing state objects passed-in or assembled in the overall :c:type:`drm_atomic_commit` update tracking structure. Also beware that userspace can request its own custom modes, neither core nor helpers filter modes to the list of probe modes reported by the GETCONNECTOR IOCTL and stored in :c:type:`drm_connector.modes `. To ensure that modes are filtered consistently put any encoder constraints and limits checks into **mode_valid**. RETURNS: 0 on success, -EINVAL if the state or the transition can't be supported, -ENOMEM on memory allocation failure and -EDEADLK if an attempt to obtain another state object ran into a :c:type:`drm_modeset_lock` deadlock.”h]”(j‚ )�”}”(hŒ``atomic_check``”h]”jˆ )�”}”(hj¡"h]”hŒ atomic_check”…”�”}”(hj£"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjŸ"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M8hj›"ubjž )�”}”(hhh]”(hÎ)�”}”(hXThis callback is used to validate encoder state for atomic drivers. Since the encoder is the object connecting the CRTC and connector it gets passed both states, to be able to validate interactions and update the CRTC to match what the encoder needs for the requested connector.”h]”hXThis callback is used to validate encoder state for atomic drivers. Since the encoder is the object connecting the CRTC and connector it gets passed both states, to be able to validate interactions and update the CRTC to match what the encoder needs for the requested connector.”…”�”}”(hjº"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mhj·"ubhÎ)�”}”(hX Since this provides a strict superset of the functionality of **mode_fixup** (the requested and adjusted modes are both available through the passed in :c:type:`struct drm_crtc_state `) **mode_fixup** is not called when **atomic_check** is implemented.”h]”(hŒ>Since this provides a strict superset of the functionality of ”…”�”}”(hjÉ"h²hh³Nh´Nubj3 )�”}”(hŒ**mode_fixup**”h]”hŒ mode_fixup”…”�”}”(hjÑ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÉ"ubhŒL (the requested and adjusted modes are both available through the passed in ”…”�”}”(hjÉ"h²hh³Nh´Nubh)�”}”(hŒ0:c:type:`struct drm_crtc_state `”h]”jˆ )�”}”(hjå"h]”hŒstruct drm_crtc_state”…”�”}”(hjç"h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjã"ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_crtc_state”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M hjÉ"ubhŒ) ”…”�”}”(hjÉ"h²hh³Nh´Nubj3 )�”}”(hŒ**mode_fixup**”h]”hŒ mode_fixup”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÉ"ubhŒ is not called when ”…”�”}”(hjÉ"h²hh³Nh´Nubj3 )�”}”(hŒ**atomic_check**”h]”hŒ atomic_check”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÉ"ubhŒ is implemented.”…”�”}”(hjÉ"h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j#h´M hj·"ubhÎ)�”}”(hŒ@This function is used by the atomic helpers, but it is optional.”h]”hŒ@This function is used by the atomic helpers, but it is optional.”…”�”}”(hj1#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M%hj·"ubhÎ)�”}”(hŒNOTE:”h]”hŒNOTE:”…”�”}”(hj@#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M'hj·"ubhÎ)�”}”(hŒôThis function is called in the check phase of an atomic update. The driver is not allowed to change anything outside of the free-standing state objects passed-in or assembled in the overall :c:type:`drm_atomic_commit` update tracking structure.”h]”(hŒ¾This function is called in the check phase of an atomic update. The driver is not allowed to change anything outside of the free-standing state objects passed-in or assembled in the overall ”…”�”}”(hjO#h²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_atomic_commit`”h]”jˆ )�”}”(hjY#h]”hŒdrm_atomic_commit”…”�”}”(hj[#h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjW#ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_atomic_commit”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M)hjO#ubhŒ update tracking structure.”…”�”}”(hjO#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jv#h´M)hj·"ubhÎ)�”}”(hXOAlso beware that userspace can request its own custom modes, neither core nor helpers filter modes to the list of probe modes reported by the GETCONNECTOR IOCTL and stored in :c:type:`drm_connector.modes `. To ensure that modes are filtered consistently put any encoder constraints and limits checks into **mode_valid**.”h]”(hŒ¯Also beware that userspace can request its own custom modes, neither core nor helpers filter modes to the list of probe modes reported by the GETCONNECTOR IOCTL and stored in ”…”�”}”(hj�#h²hh³Nh´Nubh)�”}”(hŒ-:c:type:`drm_connector.modes `”h]”jˆ )�”}”(hj‹#h]”hŒdrm_connector.modes”…”�”}”(hj�#h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj‰#ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_connector”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M.hj�#ubhŒd. To ensure that modes are filtered consistently put any encoder constraints and limits checks into ”…”�”}”(hj�#h²hh³Nh´Nubj3 )�”}”(hŒ**mode_valid**”h]”hŒ mode_valid”…”�”}”(hj­#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj�#ubhŒ.”…”�”}”(hj�#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¨#h´M.hj·"ubhÎ)�”}”(hŒRETURNS:”h]”hŒRETURNS:”…”�”}”(hjÅ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M4hj·"ubhÎ)�”}”(hŒ×0 on success, -EINVAL if the state or the transition can't be supported, -ENOMEM on memory allocation failure and -EDEADLK if an attempt to obtain another state object ran into a :c:type:`drm_modeset_lock` deadlock.”h]”(hŒµ0 on success, -EINVAL if the state or the transition can’t be supported, -ENOMEM on memory allocation failure and -EDEADLK if an attempt to obtain another state object ran into a ”…”�”}”(hjÔ#h²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_modeset_lock`”h]”jˆ )�”}”(hjÞ#h]”hŒdrm_modeset_lock”…”�”}”(hjà#h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÜ#ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_modeset_lock”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M6hjÔ#ubhŒ deadlock.”…”�”}”(hjÔ#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jû#h´M6hj·"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj›"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¶"h´M8hj†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj>ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjH h²hh³j— h´NubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj!$h]”hŒ Description”…”�”}”(hj#$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M<hjH h²hubhÎ)�”}”(hŒWThese hooks are used by the legacy CRTC helpers and the new atomic modesetting helpers.”h]”hŒWThese hooks are used by the legacy CRTC helpers and the new atomic modesetting helpers.”…”�”}”(hj7$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MñhjH h²hubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ#drm_encoder_helper_add (C function)”Œc.drm_encoder_helper_add”hNt”auh1j† hjH h²hh³j— h´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒgvoid drm_encoder_helper_add (struct drm_encoder *encoder, const struct drm_encoder_helper_funcs *funcs)”h]”j¤ )�”}”(hŒfvoid drm_encoder_helper_add(struct drm_encoder *encoder, const struct drm_encoder_helper_funcs *funcs)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj_$h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj[$h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MBubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjn$h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj[$h²hh³jm$h´MBubjÍ )�”}”(hŒdrm_encoder_helper_add”h]”jÓ )�”}”(hŒdrm_encoder_helper_add”h]”hŒdrm_encoder_helper_add”…”�”}”(hj€$h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj|$ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj[$h²hh³jm$h´MBubjÞ)�”}”(hŒK(struct drm_encoder *encoder, const struct drm_encoder_helper_funcs *funcs)”h]”(jä)�”}”(hŒstruct drm_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Œ drm_encoder”h]”hŒ drm_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%)�”}”jj‚$sbŒc.drm_encoder_helper_add”†”asbuh1hhj˜$ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚ$h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj˜$ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjè$h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj˜$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”ˆjê jë uh1jãhj”$ubjä)�”}”(hŒ,const struct drm_encoder_helper_funcs *funcs”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj)%h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj %ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6%h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj %ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_encoder_helper_funcs”h]”hŒdrm_encoder_helper_funcs”…”�”}”(hjG%h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjD%ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jI%Œmodname”NŒ classname”Njé jì )�”}”jï ]”jÖ$Œc.drm_encoder_helper_add”†”asbuh1hhj %ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hje%h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj %ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjs%h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj %ubjÓ )�”}”(hŒfuncs”h]”hŒfuncs”…”�”}”(hj€%h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj %ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj”$ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj[$h²hh³jm$h´MBubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjW$h²hh³jm$h´MBubah}”(h]”jR$ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jm$h´MBhjT$h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ%sets the helper vtable for an encoder”h]”hŒ%sets the helper vtable for an encoder”…”�”}”(hjª%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MBhj§%h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjT$h²hh³jm$h´MBubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jÂ%j$ jÂ%j% ‰j& ‰j' ‰uh1j˜ h²hhjH h³j— h´Nubj) )�”}”(hŒ–**Parameters** ``struct drm_encoder *encoder`` DRM encoder ``const struct drm_encoder_helper_funcs *funcs`` helper vtable to set for **encoder**”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjÌ%h]”hŒ Parameters”…”�”}”(hjÎ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÊ%ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MFhjÆ%ubjw )�”}”(hhh]”(j| )�”}”(hŒ,``struct drm_encoder *encoder`` DRM encoder ”h]”(j‚ )�”}”(hŒ``struct drm_encoder *encoder``”h]”jˆ )�”}”(hjë%h]”hŒstruct drm_encoder *encoder”…”�”}”(hjí%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjé%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MChjå%ubjž )�”}”(hhh]”hÎ)�”}”(hŒ DRM encoder”h]”hŒ DRM encoder”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j&h´MChj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjå%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j&h´MChjâ%ubj| )�”}”(hŒU``const struct drm_encoder_helper_funcs *funcs`` helper vtable to set for **encoder**”h]”(j‚ )�”}”(hŒ0``const struct drm_encoder_helper_funcs *funcs``”h]”jˆ )�”}”(hj$&h]”hŒ,const struct drm_encoder_helper_funcs *funcs”…”�”}”(hj&&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj"&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MEhj&ubjž )�”}”(hhh]”hÎ)�”}”(hŒ$helper vtable to set for **encoder**”h]”(hŒhelper vtable to set for ”…”�”}”(hj=&h²hh³Nh´Nubj3 )�”}”(hŒ **encoder**”h]”hŒencoder”…”�”}”(hjE&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj=&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MDhj:&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j9&h´MEhjâ%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÆ%ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjH h²hh³j— h´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ%drm_connector_helper_funcs (C struct)”Œc.drm_connector_helper_funcs”hNt”auh1j† hjH h²hh³j— h´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒdrm_connector_helper_funcs”h]”j¤ )�”}”(hŒ!struct drm_connector_helper_funcs”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjŒ&h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjˆ&h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MIubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjš&h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjˆ&h²hh³j™&h´MIubjÍ )�”}”(hŒdrm_connector_helper_funcs”h]”jÓ )�”}”(hj†&h]”hŒdrm_connector_helper_funcs”…”�”}”(hj¬&h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¨&ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjˆ&h²hh³j™&h´MIubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj„&h²hh³j™&h´MIubah}”(h]”j&ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j™&h´MIhj�&h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ helper operations for connectors”h]”hŒ helper operations for connectors”…”�”}”(hjÎ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MMhjË&h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj�&h²hh³j™&h´MIubeh}”(h]”h ]”(j Œstruct”eh"]”h$]”h&]”j" j j# jæ&j$ jæ&j% ‰j& ‰j' ‰uh1j˜ h²hhjH h³j— h´Nubj) )�”}”(hXX0**Definition**:: struct drm_connector_helper_funcs { int (*get_modes)(struct drm_connector *connector); int (*detect_ctx)(struct drm_connector *connector, struct drm_modeset_acquire_ctx *ctx, bool force); enum drm_mode_status (*mode_valid)(struct drm_connector *connector, const struct drm_display_mode *mode); int (*mode_valid_ctx)(struct drm_connector *connector, const struct drm_display_mode *mode, struct drm_modeset_acquire_ctx *ctx, enum drm_mode_status *status); struct drm_encoder *(*best_encoder)(struct drm_connector *connector); struct drm_encoder *(*atomic_best_encoder)(struct drm_connector *connector, struct drm_atomic_commit *state); int (*atomic_check)(struct drm_connector *connector, struct drm_atomic_commit *state); void (*atomic_commit)(struct drm_connector *connector, struct drm_atomic_commit *state); int (*prepare_writeback_job)(struct drm_writeback_connector *connector, struct drm_writeback_job *job); void (*cleanup_writeback_job)(struct drm_writeback_connector *connector, struct drm_writeback_job *job); void (*enable_hpd)(struct drm_connector *connector); void (*disable_hpd)(struct drm_connector *connector); }; **Members** ``get_modes`` This function should fill in all modes currently valid for the sink into the :c:type:`drm_connector.probed_modes ` list. It should also update the EDID property by calling drm_connector_update_edid_property(). The usual way to implement this is to cache the EDID retrieved in the probe callback somewhere in the driver-private connector structure. In this function drivers then parse the modes in the EDID and add them by calling drm_add_edid_modes(). But connectors that drive a fixed panel can also manually add specific modes using drm_mode_probed_add(). Drivers which manually add modes should also make sure that the :c:type:`drm_connector.display_info `, :c:type:`drm_connector.width_mm ` and :c:type:`drm_connector.height_mm ` fields are filled in. Note that the caller function will automatically add standard VESA DMT modes up to 1024x768 if the .get_modes() helper operation returns no mode and if the connector status is connector_status_connected or connector_status_unknown. There is no need to call drm_add_modes_noedid() manually in that case. Virtual drivers that just want some standard VESA mode with a given resolution can call drm_add_modes_noedid(), and mark the preferred one using drm_set_preferred_mode(). This function is only called after the **detect** hook has indicated that a sink is connected and when the EDID isn't overridden through sysfs or the kernel commandline. This callback is used by the probe helpers in e.g. drm_helper_probe_single_connector_modes(). To avoid races with concurrent connector state updates, the helper libraries always call this with the :c:type:`drm_mode_config.connection_mutex ` held. Because of this it's safe to inspect :c:type:`drm_connector->state `. RETURNS: The number of modes added by calling drm_mode_probed_add(). Return 0 on failures (no modes) instead of negative error codes. ``detect_ctx`` Check to see if anything is attached to the connector. The parameter force is set to false whilst polling, true when checking the connector due to a user request. force can be used by the driver to avoid expensive, destructive operations during automated probing. This callback is optional, if not implemented the connector will be considered as always being attached. This is the atomic version of :c:type:`drm_connector_funcs.detect `. To avoid races against concurrent connector state updates, the helper libraries always call this with ctx set to a valid context, and :c:type:`drm_mode_config.connection_mutex ` will always be locked with the ctx parameter set to this ctx. This allows taking additional locks as required. RETURNS: :c:type:`drm_connector_status` indicating the connector's status, or the error code returned by drm_modeset_lock(), -EDEADLK. ``mode_valid`` Callback to validate a mode for a connector, irrespective of the specific display configuration. This callback is used by the probe helpers to filter the mode list (which is usually derived from the EDID data block from the sink). See e.g. drm_helper_probe_single_connector_modes(). This function is optional. NOTE: This only filters the mode list supplied to userspace in the GETCONNECTOR IOCTL. Compared to :c:type:`drm_encoder_helper_funcs.mode_valid `, :c:type:`drm_crtc_helper_funcs.mode_valid ` and :c:type:`drm_bridge_funcs.mode_valid `, which are also called by the atomic helpers from drm_atomic_helper_check_modeset(). This allows userspace to force and ignore sink constraint (like the pixel clock limits in the screen's EDID), which is useful for e.g. testing, or working around a broken EDID. Any source hardware constraint (which always need to be enforced) therefore should be checked in one of the above callbacks, and not this one here. To avoid races with concurrent connector state updates, the helper libraries always call this with the :c:type:`drm_mode_config.connection_mutex ` held. Because of this it's safe to inspect :c:type:`drm_connector->state `. RETURNS: Either :c:type:`drm_mode_status.MODE_OK ` or one of the failure reasons in :c:type:`enum drm_mode_status `. ``mode_valid_ctx`` Callback to validate a mode for a connector, irrespective of the specific display configuration. This callback is used by the probe helpers to filter the mode list (which is usually derived from the EDID data block from the sink). See e.g. drm_helper_probe_single_connector_modes(). This function is optional, and is the atomic version of :c:type:`drm_connector_helper_funcs.mode_valid `. To allow for accessing the atomic state of modesetting objects, the helper libraries always call this with ctx set to a valid context, and :c:type:`drm_mode_config.connection_mutex ` will always be locked with the ctx parameter set to **ctx**. This allows for taking additional locks as required. Even though additional locks may be acquired, this callback is still expected not to take any constraints into account which would be influenced by the currently set display state - such constraints should be handled in the driver's atomic check. For example, if a connector shares display bandwidth with other connectors then it would be ok to validate the minimum bandwidth requirement of a mode against the maximum possible bandwidth of the connector. But it wouldn't be ok to take the current bandwidth usage of other connectors into account, as this would change depending on the display state. Returns: 0 if :c:type:`drm_connector_helper_funcs.mode_valid_ctx ` succeeded and wrote the :c:type:`enum drm_mode_status ` value to **status**, or a negative error code otherwise. ``best_encoder`` This function should select the best encoder for the given connector. This function is used by both the atomic helpers (in the drm_atomic_helper_check_modeset() function) and in the legacy CRTC helpers. NOTE: In atomic drivers this function is called in the check phase of an atomic update. The driver is not allowed to change or inspect anything outside of arguments passed-in. Atomic drivers which need to inspect dynamic configuration state should instead use **atomic_best_encoder**. You can leave this function to NULL if the connector is only attached to a single encoder. In this case, the core will call drm_connector_get_single_encoder() for you. RETURNS: Encoder that should be used for the given connector and connector state, or NULL if no suitable encoder exists. Note that the helpers will ensure that encoders aren't used twice, drivers should not check for this. ``atomic_best_encoder`` This is the atomic version of **best_encoder** for atomic drivers which need to select the best encoder depending upon the desired configuration and can't select it statically. This function is used by drm_atomic_helper_check_modeset(). If it is not implemented, the core will fallback to **best_encoder** (or drm_connector_get_single_encoder() if **best_encoder** is NULL). NOTE: This function is called in the check phase of an atomic update. The driver is not allowed to change anything outside of the :c:type:`drm_atomic_commit` update tracking structure passed in. RETURNS: Encoder that should be used for the given connector and connector state, or NULL if no suitable encoder exists. Note that the helpers will ensure that encoders aren't used twice, drivers should not check for this. ``atomic_check`` This hook is used to validate connector state. This function is called from :c:type:`drm_atomic_helper_check_modeset`, and is called when a connector property is set, or a modeset on the crtc is forced. Because :c:type:`drm_atomic_helper_check_modeset` may be called multiple times, this function should handle being called multiple times as well. This function is also allowed to inspect any other object's state and can add more state objects to the atomic commit if needed. Care must be taken though to ensure that state check and compute functions for these added states are all called, and derived state in other objects all updated. Again the recommendation is to just call check helpers until a maximal configuration is reached. NOTE: This function is called in the check phase of an atomic update. The driver is not allowed to change anything outside of the free-standing state objects passed-in or assembled in the overall :c:type:`drm_atomic_commit` update tracking structure. RETURNS: 0 on success, -EINVAL if the state or the transition can't be supported, -ENOMEM on memory allocation failure and -EDEADLK if an attempt to obtain another state object ran into a :c:type:`drm_modeset_lock` deadlock. ``atomic_commit`` This hook is to be used by drivers implementing writeback connectors that need a point when to commit the writeback job to the hardware. The writeback_job to commit is available in the new connector state, in :c:type:`drm_connector_state.writeback_job `. This hook is optional. This callback is used by the atomic modeset helpers. ``prepare_writeback_job`` As writeback jobs contain a framebuffer, drivers may need to prepare and clean them up the same way they can prepare and clean up framebuffers for planes. This optional connector operation is used to support the preparation of writeback jobs. The job prepare operation is called from drm_atomic_helper_prepare_planes() for struct :c:type:`drm_writeback_connector` connectors only. This operation is optional. This callback is used by the atomic modeset helpers. ``cleanup_writeback_job`` This optional connector operation is used to support the cleanup of writeback jobs. The job cleanup operation is called from the existing drm_writeback_cleanup_job() function, invoked both when destroying the job as part of an aborted commit, or when the job completes. This operation is optional. This callback is used by the atomic modeset helpers. ``enable_hpd`` Enable hot-plug detection for the connector. This operation is optional. This callback is used by the drm_kms_helper_poll_enable() helpers. This operation does not need to perform any hpd state tracking as the DRM core handles that maintenance and ensures the calls to enable and disable hpd are balanced. ``disable_hpd`` Disable hot-plug detection for the connector. This operation is optional. This callback is used by the drm_kms_helper_poll_disable() helpers. This operation does not need to perform any hpd state tracking as the DRM core handles that maintenance and ensures the calls to enable and disable hpd are balanced.”h]”(hÎ)�”}”(hŒ**Definition**::”h]”(j3 )�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjò&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjî&ubhŒ:”…”�”}”(hjî&h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MQhjê&ubjN )�”}”(hX˜struct drm_connector_helper_funcs { int (*get_modes)(struct drm_connector *connector); int (*detect_ctx)(struct drm_connector *connector, struct drm_modeset_acquire_ctx *ctx, bool force); enum drm_mode_status (*mode_valid)(struct drm_connector *connector, const struct drm_display_mode *mode); int (*mode_valid_ctx)(struct drm_connector *connector, const struct drm_display_mode *mode, struct drm_modeset_acquire_ctx *ctx, enum drm_mode_status *status); struct drm_encoder *(*best_encoder)(struct drm_connector *connector); struct drm_encoder *(*atomic_best_encoder)(struct drm_connector *connector, struct drm_atomic_commit *state); int (*atomic_check)(struct drm_connector *connector, struct drm_atomic_commit *state); void (*atomic_commit)(struct drm_connector *connector, struct drm_atomic_commit *state); int (*prepare_writeback_job)(struct drm_writeback_connector *connector, struct drm_writeback_job *job); void (*cleanup_writeback_job)(struct drm_writeback_connector *connector, struct drm_writeback_job *job); void (*enable_hpd)(struct drm_connector *connector); void (*disable_hpd)(struct drm_connector *connector); };”h]”hX˜struct drm_connector_helper_funcs { int (*get_modes)(struct drm_connector *connector); int (*detect_ctx)(struct drm_connector *connector, struct drm_modeset_acquire_ctx *ctx, bool force); enum drm_mode_status (*mode_valid)(struct drm_connector *connector, const struct drm_display_mode *mode); int (*mode_valid_ctx)(struct drm_connector *connector, const struct drm_display_mode *mode, struct drm_modeset_acquire_ctx *ctx, enum drm_mode_status *status); struct drm_encoder *(*best_encoder)(struct drm_connector *connector); struct drm_encoder *(*atomic_best_encoder)(struct drm_connector *connector, struct drm_atomic_commit *state); int (*atomic_check)(struct drm_connector *connector, struct drm_atomic_commit *state); void (*atomic_commit)(struct drm_connector *connector, struct drm_atomic_commit *state); int (*prepare_writeback_job)(struct drm_writeback_connector *connector, struct drm_writeback_job *job); void (*cleanup_writeback_job)(struct drm_writeback_connector *connector, struct drm_writeback_job *job); void (*enable_hpd)(struct drm_connector *connector); void (*disable_hpd)(struct drm_connector *connector); };”…”�”}”hj 'sbah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jM h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MShjê&ubhÎ)�”}”(hŒ **Members**”h]”j3 )�”}”(hj'h]”hŒMembers”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mbhjê&ubjw )�”}”(hhh]”(j| )�”}”(hX­``get_modes`` This function should fill in all modes currently valid for the sink into the :c:type:`drm_connector.probed_modes ` list. It should also update the EDID property by calling drm_connector_update_edid_property(). The usual way to implement this is to cache the EDID retrieved in the probe callback somewhere in the driver-private connector structure. In this function drivers then parse the modes in the EDID and add them by calling drm_add_edid_modes(). But connectors that drive a fixed panel can also manually add specific modes using drm_mode_probed_add(). Drivers which manually add modes should also make sure that the :c:type:`drm_connector.display_info `, :c:type:`drm_connector.width_mm ` and :c:type:`drm_connector.height_mm ` fields are filled in. Note that the caller function will automatically add standard VESA DMT modes up to 1024x768 if the .get_modes() helper operation returns no mode and if the connector status is connector_status_connected or connector_status_unknown. There is no need to call drm_add_modes_noedid() manually in that case. Virtual drivers that just want some standard VESA mode with a given resolution can call drm_add_modes_noedid(), and mark the preferred one using drm_set_preferred_mode(). This function is only called after the **detect** hook has indicated that a sink is connected and when the EDID isn't overridden through sysfs or the kernel commandline. This callback is used by the probe helpers in e.g. drm_helper_probe_single_connector_modes(). To avoid races with concurrent connector state updates, the helper libraries always call this with the :c:type:`drm_mode_config.connection_mutex ` held. Because of this it's safe to inspect :c:type:`drm_connector->state `. RETURNS: The number of modes added by calling drm_mode_probed_add(). Return 0 on failures (no modes) instead of negative error codes. ”h]”(j‚ )�”}”(hŒ ``get_modes``”h]”jˆ )�”}”(hj;'h]”hŒ get_modes”…”�”}”(hj='h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj9'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M{hj5'ubjž )�”}”(hhh]”(hÎ)�”}”(hŒàThis function should fill in all modes currently valid for the sink into the :c:type:`drm_connector.probed_modes ` list. It should also update the EDID property by calling drm_connector_update_edid_property().”h]”(hŒMThis function should fill in all modes currently valid for the sink into the ”…”�”}”(hjT'h²hh³Nh´Nubh)�”}”(hŒ4:c:type:`drm_connector.probed_modes `”h]”jˆ )�”}”(hj^'h]”hŒdrm_connector.probed_modes”…”�”}”(hj`'h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj\'ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_connector”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MUhjT'ubhŒ_ list. It should also update the EDID property by calling drm_connector_update_edid_property().”…”�”}”(hjT'h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j{'h´MUhjQ'ubhÎ)�”}”(hXNThe usual way to implement this is to cache the EDID retrieved in the probe callback somewhere in the driver-private connector structure. In this function drivers then parse the modes in the EDID and add them by calling drm_add_edid_modes(). But connectors that drive a fixed panel can also manually add specific modes using drm_mode_probed_add(). Drivers which manually add modes should also make sure that the :c:type:`drm_connector.display_info `, :c:type:`drm_connector.width_mm ` and :c:type:`drm_connector.height_mm ` fields are filled in.”h]”(hXœThe usual way to implement this is to cache the EDID retrieved in the probe callback somewhere in the driver-private connector structure. In this function drivers then parse the modes in the EDID and add them by calling drm_add_edid_modes(). But connectors that drive a fixed panel can also manually add specific modes using drm_mode_probed_add(). Drivers which manually add modes should also make sure that the ”…”�”}”(hj†'h²hh³Nh´Nubh)�”}”(hŒ4:c:type:`drm_connector.display_info `”h]”jˆ )�”}”(hj�'h]”hŒdrm_connector.display_info”…”�”}”(hj’'h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjŽ'ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_connector”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MYhj†'ubhŒ, ”…”�”}”(hj†'h²hh³Nh´Nubh)�”}”(hŒ0:c:type:`drm_connector.width_mm `”h]”jˆ )�”}”(hj´'h]”hŒdrm_connector.width_mm”…”�”}”(hj¶'h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj²'ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_connector”uh1hh³j­'h´MYhj†'ubhŒ and ”…”�”}”(hj†'h²hh³Nh´Nubh)�”}”(hŒ1:c:type:`drm_connector.height_mm `”h]”jˆ )�”}”(hj×'h]”hŒdrm_connector.height_mm”…”�”}”(hjÙ'h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÕ'ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_connector”uh1hh³j­'h´MYhj†'ubhŒ fields are filled in.”…”�”}”(hj†'h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j­'h´MYhjQ'ubhÎ)�”}”(hX.Note that the caller function will automatically add standard VESA DMT modes up to 1024x768 if the .get_modes() helper operation returns no mode and if the connector status is connector_status_connected or connector_status_unknown. There is no need to call drm_add_modes_noedid() manually in that case.”h]”hX.Note that the caller function will automatically add standard VESA DMT modes up to 1024x768 if the .get_modes() helper operation returns no mode and if the connector status is connector_status_connected or connector_status_unknown. There is no need to call drm_add_modes_noedid() manually in that case.”…”�”}”(hjþ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MchjQ'ubhÎ)�”}”(hŒªVirtual drivers that just want some standard VESA mode with a given resolution can call drm_add_modes_noedid(), and mark the preferred one using drm_set_preferred_mode().”h]”hŒªVirtual drivers that just want some standard VESA mode with a given resolution can call drm_add_modes_noedid(), and mark the preferred one using drm_set_preferred_mode().”…”�”}”(hj (h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MihjQ'ubhÎ)�”}”(hŒ©This function is only called after the **detect** hook has indicated that a sink is connected and when the EDID isn't overridden through sysfs or the kernel commandline.”h]”(hŒ'This function is only called after the ”…”�”}”(hj(h²hh³Nh´Nubj3 )�”}”(hŒ **detect**”h]”hŒdetect”…”�”}”(hj$(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj(ubhŒz hook has indicated that a sink is connected and when the EDID isn’t overridden through sysfs or the kernel commandline.”…”�”}”(hj(h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MmhjQ'ubhÎ)�”}”(hŒ]This callback is used by the probe helpers in e.g. drm_helper_probe_single_connector_modes().”h]”hŒ]This callback is used by the probe helpers in e.g. drm_helper_probe_single_connector_modes().”…”�”}”(hj=(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MqhjQ'ubhÎ)�”}”(hŒþTo avoid races with concurrent connector state updates, the helper libraries always call this with the :c:type:`drm_mode_config.connection_mutex ` held. Because of this it's safe to inspect :c:type:`drm_connector->state `.”h]”(hŒgTo avoid races with concurrent connector state updates, the helper libraries always call this with the ”…”�”}”(hjL(h²hh³Nh´Nubh)�”}”(hŒ<:c:type:`drm_mode_config.connection_mutex `”h]”jˆ )�”}”(hjV(h]”hŒ drm_mode_config.connection_mutex”…”�”}”(hjX(h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjT(ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_mode_config”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MthjL(ubhŒ. held. Because of this it’s safe to inspect ”…”�”}”(hjL(h²hh³Nh´Nubh)�”}”(hŒ.:c:type:`drm_connector->state `”h]”jˆ )�”}”(hjz(h]”hŒdrm_connector->state”…”�”}”(hj|(h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjx(ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_connector”uh1hh³js(h´MthjL(ubhŒ.”…”�”}”(hjL(h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³js(h´MthjQ'ubhÎ)�”}”(hŒRETURNS:”h]”hŒRETURNS:”…”�”}”(hj¡(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MxhjQ'ubhÎ)�”}”(hŒ|The number of modes added by calling drm_mode_probed_add(). Return 0 on failures (no modes) instead of negative error codes.”h]”hŒ|The number of modes added by calling drm_mode_probed_add(). Return 0 on failures (no modes) instead of negative error codes.”…”�”}”(hj°(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MzhjQ'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj5'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jP'h´M{hj2'ubj| )�”}”(hX˜``detect_ctx`` Check to see if anything is attached to the connector. The parameter force is set to false whilst polling, true when checking the connector due to a user request. force can be used by the driver to avoid expensive, destructive operations during automated probing. This callback is optional, if not implemented the connector will be considered as always being attached. This is the atomic version of :c:type:`drm_connector_funcs.detect `. To avoid races against concurrent connector state updates, the helper libraries always call this with ctx set to a valid context, and :c:type:`drm_mode_config.connection_mutex ` will always be locked with the ctx parameter set to this ctx. This allows taking additional locks as required. RETURNS: :c:type:`drm_connector_status` indicating the connector's status, or the error code returned by drm_modeset_lock(), -EDEADLK. ”h]”(j‚ )�”}”(hŒ``detect_ctx``”h]”jˆ )�”}”(hjÑ(h]”hŒ detect_ctx”…”�”}”(hjÓ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÏ(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M•hjË(ubjž )�”}”(hhh]”(hÎ)�”}”(hXCheck to see if anything is attached to the connector. The parameter force is set to false whilst polling, true when checking the connector due to a user request. force can be used by the driver to avoid expensive, destructive operations during automated probing.”h]”hXCheck to see if anything is attached to the connector. The parameter force is set to false whilst polling, true when checking the connector due to a user request. force can be used by the driver to avoid expensive, destructive operations during automated probing.”…”�”}”(hjê(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M‚hjç(ubhÎ)�”}”(hŒhThis callback is optional, if not implemented the connector will be considered as always being attached.”h]”hŒhThis callback is optional, if not implemented the connector will be considered as always being attached.”…”�”}”(hjù(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M‡hjç(ubhÎ)�”}”(hŒYThis is the atomic version of :c:type:`drm_connector_funcs.detect `.”h]”(hŒThis is the atomic version of ”…”�”}”(hj)h²hh³Nh´Nubh)�”}”(hŒ::c:type:`drm_connector_funcs.detect `”h]”jˆ )�”}”(hj)h]”hŒdrm_connector_funcs.detect”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj)ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_connector_funcs”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MŠhj)ubhŒ.”…”�”}”(hj)h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j/)h´MŠhjç(ubhÎ)�”}”(hX1To avoid races against concurrent connector state updates, the helper libraries always call this with ctx set to a valid context, and :c:type:`drm_mode_config.connection_mutex ` will always be locked with the ctx parameter set to this ctx. This allows taking additional locks as required.”h]”(hŒ†To avoid races against concurrent connector state updates, the helper libraries always call this with ctx set to a valid context, and ”…”�”}”(hj:)h²hh³Nh´Nubh)�”}”(hŒ<:c:type:`drm_mode_config.connection_mutex `”h]”jˆ )�”}”(hjD)h]”hŒ drm_mode_config.connection_mutex”…”�”}”(hjF)h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjB)ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_mode_config”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MŒhj:)ubhŒo will always be locked with the ctx parameter set to this ctx. This allows taking additional locks as required.”…”�”}”(hj:)h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³ja)h´MŒhjç(ubhÎ)�”}”(hŒRETURNS:”h]”hŒRETURNS:”…”�”}”(hjl)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M’hjç(ubhÎ)�”}”(hŒ}:c:type:`drm_connector_status` indicating the connector's status, or the error code returned by drm_modeset_lock(), -EDEADLK.”h]”(h)�”}”(hŒ:c:type:`drm_connector_status`”h]”jˆ )�”}”(hj�)h]”hŒdrm_connector_status”…”�”}”(hjƒ)h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj)ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_connector_status”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M”hj{)ubhŒa indicating the connector’s status, or the error code returned by drm_modeset_lock(), -EDEADLK.”…”�”}”(hj{)h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jž)h´M”hjç(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjË(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jæ(h´M•hj2'ubj| )�”}”(hX©``mode_valid`` Callback to validate a mode for a connector, irrespective of the specific display configuration. This callback is used by the probe helpers to filter the mode list (which is usually derived from the EDID data block from the sink). See e.g. drm_helper_probe_single_connector_modes(). This function is optional. NOTE: This only filters the mode list supplied to userspace in the GETCONNECTOR IOCTL. Compared to :c:type:`drm_encoder_helper_funcs.mode_valid `, :c:type:`drm_crtc_helper_funcs.mode_valid ` and :c:type:`drm_bridge_funcs.mode_valid `, which are also called by the atomic helpers from drm_atomic_helper_check_modeset(). This allows userspace to force and ignore sink constraint (like the pixel clock limits in the screen's EDID), which is useful for e.g. testing, or working around a broken EDID. Any source hardware constraint (which always need to be enforced) therefore should be checked in one of the above callbacks, and not this one here. To avoid races with concurrent connector state updates, the helper libraries always call this with the :c:type:`drm_mode_config.connection_mutex ` held. Because of this it's safe to inspect :c:type:`drm_connector->state `. RETURNS: Either :c:type:`drm_mode_status.MODE_OK ` or one of the failure reasons in :c:type:`enum drm_mode_status `. ”h]”(j‚ )�”}”(hŒ``mode_valid``”h]”jˆ )�”}”(hj»)h]”hŒ mode_valid”…”�”}”(hj½)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¹)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M»hjµ)ubjž )�”}”(hhh]”(hÎ)�”}”(hŒ`Callback to validate a mode for a connector, irrespective of the specific display configuration.”h]”hŒ`Callback to validate a mode for a connector, irrespective of the specific display configuration.”…”�”}”(hjÔ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MžhjÑ)ubhÎ)�”}”(hŒ¹This callback is used by the probe helpers to filter the mode list (which is usually derived from the EDID data block from the sink). See e.g. drm_helper_probe_single_connector_modes().”h]”hŒ¹This callback is used by the probe helpers to filter the mode list (which is usually derived from the EDID data block from the sink). See e.g. drm_helper_probe_single_connector_modes().”…”�”}”(hjã)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M¡hjÑ)ubhÎ)�”}”(hŒThis function is optional.”h]”hŒThis function is optional.”…”�”}”(hjò)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M¥hjÑ)ubhÎ)�”}”(hŒNOTE:”h]”hŒNOTE:”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M§hjÑ)ubhÎ)�”}”(hXÀThis only filters the mode list supplied to userspace in the GETCONNECTOR IOCTL. Compared to :c:type:`drm_encoder_helper_funcs.mode_valid `, :c:type:`drm_crtc_helper_funcs.mode_valid ` and :c:type:`drm_bridge_funcs.mode_valid `, which are also called by the atomic helpers from drm_atomic_helper_check_modeset(). This allows userspace to force and ignore sink constraint (like the pixel clock limits in the screen's EDID), which is useful for e.g. testing, or working around a broken EDID. Any source hardware constraint (which always need to be enforced) therefore should be checked in one of the above callbacks, and not this one here.”h]”(hŒ]This only filters the mode list supplied to userspace in the GETCONNECTOR IOCTL. Compared to ”…”�”}”(hj*h²hh³Nh´Nubh)�”}”(hŒH:c:type:`drm_encoder_helper_funcs.mode_valid `”h]”jˆ )�”}”(hj*h]”hŒ#drm_encoder_helper_funcs.mode_valid”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj*ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_encoder_helper_funcs”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M©hj*ubhŒ, ”…”�”}”(hj*h²hh³Nh´Nubh)�”}”(hŒB:c:type:`drm_crtc_helper_funcs.mode_valid `”h]”jˆ )�”}”(hj>*h]”hŒ drm_crtc_helper_funcs.mode_valid”…”�”}”(hj@*h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj<*ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_crtc_helper_funcs”uh1hh³j7*h´M©hj*ubhŒ and ”…”�”}”(hj*h²hh³Nh´Nubh)�”}”(hŒ8:c:type:`drm_bridge_funcs.mode_valid `”h]”jˆ )�”}”(hja*h]”hŒdrm_bridge_funcs.mode_valid”…”�”}”(hjc*h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj_*ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³j7*h´M©hj*ubhXœ, which are also called by the atomic helpers from drm_atomic_helper_check_modeset(). This allows userspace to force and ignore sink constraint (like the pixel clock limits in the screen’s EDID), which is useful for e.g. testing, or working around a broken EDID. Any source hardware constraint (which always need to be enforced) therefore should be checked in one of the above callbacks, and not this one here.”…”�”}”(hj*h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j7*h´M©hjÑ)ubhÎ)�”}”(hŒþTo avoid races with concurrent connector state updates, the helper libraries always call this with the :c:type:`drm_mode_config.connection_mutex ` held. Because of this it's safe to inspect :c:type:`drm_connector->state `.”h]”(hŒgTo avoid races with concurrent connector state updates, the helper libraries always call this with the ”…”�”}”(hjˆ*h²hh³Nh´Nubh)�”}”(hŒ<:c:type:`drm_mode_config.connection_mutex `”h]”jˆ )�”}”(hj’*h]”hŒ drm_mode_config.connection_mutex”…”�”}”(hj”*h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj�*ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_mode_config”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M´hjˆ*ubhŒ. held. Because of this it’s safe to inspect ”…”�”}”(hjˆ*h²hh³Nh´Nubh)�”}”(hŒ.:c:type:`drm_connector->state `”h]”jˆ )�”}”(hj¶*h]”hŒdrm_connector->state”…”�”}”(hj¸*h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj´*ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_connector”uh1hh³j¯*h´M´hjˆ*ubhŒ.”…”�”}”(hjˆ*h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¯*h´M´hjÑ)ubhÎ)�”}”(hŒRETURNS:”h]”hŒRETURNS:”…”�”}”(hjÝ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M¸hjÑ)ubhÎ)�”}”(hŒ�Either :c:type:`drm_mode_status.MODE_OK ` or one of the failure reasons in :c:type:`enum drm_mode_status `.”h]”(hŒEither ”…”�”}”(hjì*h²hh³Nh´Nubh)�”}”(hŒ3:c:type:`drm_mode_status.MODE_OK `”h]”jˆ )�”}”(hjö*h]”hŒdrm_mode_status.MODE_OK”…”�”}”(hjø*h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjô*ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_mode_status”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mºhjì*ubhŒ" or one of the failure reasons in ”…”�”}”(hjì*h²hh³Nh´Nubh)�”}”(hŒ0:c:type:`enum drm_mode_status `”h]”jˆ )�”}”(hj+h]”hŒenum drm_mode_status”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj+ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_mode_status”uh1hh³j+h´Mºhjì*ubhŒ.”…”�”}”(hjì*h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j+h´MºhjÑ)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjµ)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÐ)h´M»hj2'ubj| )�”}”(hX,``mode_valid_ctx`` Callback to validate a mode for a connector, irrespective of the specific display configuration. This callback is used by the probe helpers to filter the mode list (which is usually derived from the EDID data block from the sink). See e.g. drm_helper_probe_single_connector_modes(). This function is optional, and is the atomic version of :c:type:`drm_connector_helper_funcs.mode_valid `. To allow for accessing the atomic state of modesetting objects, the helper libraries always call this with ctx set to a valid context, and :c:type:`drm_mode_config.connection_mutex ` will always be locked with the ctx parameter set to **ctx**. This allows for taking additional locks as required. Even though additional locks may be acquired, this callback is still expected not to take any constraints into account which would be influenced by the currently set display state - such constraints should be handled in the driver's atomic check. For example, if a connector shares display bandwidth with other connectors then it would be ok to validate the minimum bandwidth requirement of a mode against the maximum possible bandwidth of the connector. But it wouldn't be ok to take the current bandwidth usage of other connectors into account, as this would change depending on the display state. Returns: 0 if :c:type:`drm_connector_helper_funcs.mode_valid_ctx ` succeeded and wrote the :c:type:`enum drm_mode_status ` value to **status**, or a negative error code otherwise. ”•h]”(j‚ )�”}”(hŒ``mode_valid_ctx``”h]”jˆ )�”}”(hjS+h]”hŒmode_valid_ctx”…”�”}”(hjU+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjQ+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MáhjM+ubjž )�”}”(hhh]”(hÎ)�”}”(hŒ`Callback to validate a mode for a connector, irrespective of the specific display configuration.”h]”hŒ`Callback to validate a mode for a connector, irrespective of the specific display configuration.”…”�”}”(hjl+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MÃhji+ubhÎ)�”}”(hŒ¹This callback is used by the probe helpers to filter the mode list (which is usually derived from the EDID data block from the sink). See e.g. drm_helper_probe_single_connector_modes().”h]”hŒ¹This callback is used by the probe helpers to filter the mode list (which is usually derived from the EDID data block from the sink). See e.g. drm_helper_probe_single_connector_modes().”…”�”}”(hj{+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MÆhji+ubhÎ)�”}”(hŒ…This function is optional, and is the atomic version of :c:type:`drm_connector_helper_funcs.mode_valid `.”h]”(hŒ8This function is optional, and is the atomic version of ”…”�”}”(hjŠ+h²hh³Nh´Nubh)�”}”(hŒL:c:type:`drm_connector_helper_funcs.mode_valid `”h]”jˆ )�”}”(hj”+h]”hŒ%drm_connector_helper_funcs.mode_valid”…”�”}”(hj–+h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj’+ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_connector_helper_funcs”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MÊhjŠ+ubhŒ.”…”�”}”(hjŠ+h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j±+h´MÊhji+ubhÎ)�”}”(hX9To allow for accessing the atomic state of modesetting objects, the helper libraries always call this with ctx set to a valid context, and :c:type:`drm_mode_config.connection_mutex ` will always be locked with the ctx parameter set to **ctx**. This allows for taking additional locks as required.”h]”(hŒ‹To allow for accessing the atomic state of modesetting objects, the helper libraries always call this with ctx set to a valid context, and ”…”�”}”(hj¼+h²hh³Nh´Nubh)�”}”(hŒ<:c:type:`drm_mode_config.connection_mutex `”h]”jˆ )�”}”(hjÆ+h]”hŒ drm_mode_config.connection_mutex”…”�”}”(hjÈ+h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÄ+ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_mode_config”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MÍhj¼+ubhŒ5 will always be locked with the ctx parameter set to ”…”�”}”(hj¼+h²hh³Nh´Nubj3 )�”}”(hŒ**ctx**”h]”hŒctx”…”�”}”(hjè+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¼+ubhŒ6. This allows for taking additional locks as required.”…”�”}”(hj¼+h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jã+h´MÍhji+ubhÎ)�”}”(hXWEven though additional locks may be acquired, this callback is still expected not to take any constraints into account which would be influenced by the currently set display state - such constraints should be handled in the driver's atomic check. For example, if a connector shares display bandwidth with other connectors then it would be ok to validate the minimum bandwidth requirement of a mode against the maximum possible bandwidth of the connector. But it wouldn't be ok to take the current bandwidth usage of other connectors into account, as this would change depending on the display state.”h]”hX[Even though additional locks may be acquired, this callback is still expected not to take any constraints into account which would be influenced by the currently set display state - such constraints should be handled in the driver’s atomic check. For example, if a connector shares display bandwidth with other connectors then it would be ok to validate the minimum bandwidth requirement of a mode against the maximum possible bandwidth of the connector. But it wouldn’t be ok to take the current bandwidth usage of other connectors into account, as this would change depending on the display state.”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MÓhji+ubhÎ)�”}”(hŒàReturns: 0 if :c:type:`drm_connector_helper_funcs.mode_valid_ctx ` succeeded and wrote the :c:type:`enum drm_mode_status ` value to **status**, or a negative error code otherwise.”h]”(hŒReturns: 0 if ”…”�”}”(hj,h²hh³Nh´Nubh)�”}”(hŒP:c:type:`drm_connector_helper_funcs.mode_valid_ctx `”h]”jˆ )�”}”(hj,h]”hŒ)drm_connector_helper_funcs.mode_valid_ctx”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj,ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_connector_helper_funcs”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MÞhj,ubhŒ succeeded and wrote the ”…”�”}”(hj,h²hh³Nh´Nubh)�”}”(hŒ0:c:type:`enum drm_mode_status `”h]”jˆ )�”}”(hj=,h]”hŒenum drm_mode_status”…”�”}”(hj?,h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj;,ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_mode_status”uh1hh³j6,h´MÞhj,ubhŒ value to ”…”�”}”(hj,h²hh³Nh´Nubj3 )�”}”(hŒ **status**”h]”hŒstatus”…”�”}”(hj^,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj,ubhŒ%, or a negative error code otherwise.”…”�”}”(hj,h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j6,h´MÞhji+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjM+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jh+h´Máhj2'ubj| )�”}”(hX†``best_encoder`` This function should select the best encoder for the given connector. This function is used by both the atomic helpers (in the drm_atomic_helper_check_modeset() function) and in the legacy CRTC helpers. NOTE: In atomic drivers this function is called in the check phase of an atomic update. The driver is not allowed to change or inspect anything outside of arguments passed-in. Atomic drivers which need to inspect dynamic configuration state should instead use **atomic_best_encoder**. You can leave this function to NULL if the connector is only attached to a single encoder. In this case, the core will call drm_connector_get_single_encoder() for you. RETURNS: Encoder that should be used for the given connector and connector state, or NULL if no suitable encoder exists. Note that the helpers will ensure that encoders aren't used twice, drivers should not check for this. ”h]”(j‚ )�”}”(hŒ``best_encoder``”h]”jˆ )�”}”(hjˆ,h]”hŒ best_encoder”…”�”}”(hjŠ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj†,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mhj‚,ubjž )�”}”(hhh]”(hÎ)�”}”(hŒEThis function should select the best encoder for the given connector.”h]”hŒEThis function should select the best encoder for the given connector.”…”�”}”(hj¡,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mìhjž,ubhÎ)�”}”(hŒ„This function is used by both the atomic helpers (in the drm_atomic_helper_check_modeset() function) and in the legacy CRTC helpers.”h]”hŒ„This function is used by both the atomic helpers (in the drm_atomic_helper_check_modeset() function) and in the legacy CRTC helpers.”…”�”}”(hj°,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mîhjž,ubhÎ)�”}”(hŒNOTE:”h]”hŒNOTE:”…”�”}”(hj¿,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mòhjž,ubhÎ)�”}”(hXIn atomic drivers this function is called in the check phase of an atomic update. The driver is not allowed to change or inspect anything outside of arguments passed-in. Atomic drivers which need to inspect dynamic configuration state should instead use **atomic_best_encoder**.”h]”(hŒþIn atomic drivers this function is called in the check phase of an atomic update. The driver is not allowed to change or inspect anything outside of arguments passed-in. Atomic drivers which need to inspect dynamic configuration state should instead use ”…”�”}”(hjÎ,h²hh³Nh´Nubj3 )�”}”(hŒ**atomic_best_encoder**”h]”hŒatomic_best_encoder”…”�”}”(hjÖ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÎ,ubhŒ.”…”�”}”(hjÎ,h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Môhjž,ubhÎ)�”}”(hŒ§You can leave this function to NULL if the connector is only attached to a single encoder. In this case, the core will call drm_connector_get_single_encoder() for you.”h]”hŒ§You can leave this function to NULL if the connector is only attached to a single encoder. In this case, the core will call drm_connector_get_single_encoder() for you.”…”�”}”(hjï,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Múhjž,ubhÎ)�”}”(hŒRETURNS:”h]”hŒRETURNS:”…”�”}”(hjþ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mþhjž,ubhÎ)�”}”(hŒÕEncoder that should be used for the given connector and connector state, or NULL if no suitable encoder exists. Note that the helpers will ensure that encoders aren't used twice, drivers should not check for this.”h]”hŒ×Encoder that should be used for the given connector and connector state, or NULL if no suitable encoder exists. Note that the helpers will ensure that encoders aren’t used twice, drivers should not check for this.”…”�”}”(hj -h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mhjž,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj‚,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j�,h´Mhj2'ubj| )�”}”(hX6``atomic_best_encoder`` This is the atomic version of **best_encoder** for atomic drivers which need to select the best encoder depending upon the desired configuration and can't select it statically. This function is used by drm_atomic_helper_check_modeset(). If it is not implemented, the core will fallback to **best_encoder** (or drm_connector_get_single_encoder() if **best_encoder** is NULL). NOTE: This function is called in the check phase of an atomic update. The driver is not allowed to change anything outside of the :c:type:`drm_atomic_commit` update tracking structure passed in. RETURNS: Encoder that should be used for the given connector and connector state, or NULL if no suitable encoder exists. Note that the helpers will ensure that encoders aren't used twice, drivers should not check for this. ”h]”(j‚ )�”}”(hŒ``atomic_best_encoder``”h]”jˆ )�”}”(hj.-h]”hŒatomic_best_encoder”…”�”}”(hj0-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj,-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mhj(-ubjž )�”}”(hhh]”(hÎ)�”}”(hŒ°This is the atomic version of **best_encoder** for atomic drivers which need to select the best encoder depending upon the desired configuration and can't select it statically.”h]”(hŒThis is the atomic version of ”…”�”}”(hjG-h²hh³Nh´Nubj3 )�”}”(hŒ**best_encoder**”h]”hŒ best_encoder”…”�”}”(hjO-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjG-ubhŒ„ for atomic drivers which need to select the best encoder depending upon the desired configuration and can’t select it statically.”…”�”}”(hjG-h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M hjD-ubhÎ)�”}”(hŒÅThis function is used by drm_atomic_helper_check_modeset(). If it is not implemented, the core will fallback to **best_encoder** (or drm_connector_get_single_encoder() if **best_encoder** is NULL).”h]”(hŒpThis function is used by drm_atomic_helper_check_modeset(). If it is not implemented, the core will fallback to ”…”�”}”(hjh-h²hh³Nh´Nubj3 )�”}”(hŒ**best_encoder**”h]”hŒ best_encoder”…”�”}”(hjp-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjh-ubhŒ+ (or drm_connector_get_single_encoder() if ”…”�”}”(hjh-h²hh³Nh´Nubj3 )�”}”(hŒ**best_encoder**”h]”hŒ best_encoder”…”�”}”(hj‚-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjh-ubhŒ is NULL).”…”�”}”(hjh-h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MhjD-ubhÎ)�”}”(hŒNOTE:”h]”hŒNOTE:”…”�”}”(hj›-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MhjD-ubhÎ)�”}”(hŒ¼This function is called in the check phase of an atomic update. The driver is not allowed to change anything outside of the :c:type:`drm_atomic_commit` update tracking structure passed in.”h]”(hŒ|This function is called in the check phase of an atomic update. The driver is not allowed to change anything outside of the ”…”�”}”(hjª-h²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_atomic_commit`”h]”jˆ )�”}”(hj´-h]”hŒdrm_atomic_commit”…”�”}”(hj¶-h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj²-ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_atomic_commit”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mhjª-ubhŒ% update tracking structure passed in.”…”�”}”(hjª-h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÑ-h´MhjD-ubhÎ)�”}”(hŒRETURNS:”h]”hŒRETURNS:”…”�”}”(hjÜ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MhjD-ubhÎ)�”}”(hŒÕEncoder that should be used for the given connector and connector state, or NULL if no suitable encoder exists. Note that the helpers will ensure that encoders aren't used twice, drivers should not check for this.”h]”hŒ×Encoder that should be used for the given connector and connector state, or NULL if no suitable encoder exists. Note that the helpers will ensure that encoders aren’t used twice, drivers should not check for this.”…”�”}”(hjë-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MhjD-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj(-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jC-h´Mhj2'ubj| )�”}”(hXÓ``atomic_check`` This hook is used to validate connector state. This function is called from :c:type:`drm_atomic_helper_check_modeset`, and is called when a connector property is set, or a modeset on the crtc is forced. Because :c:type:`drm_atomic_helper_check_modeset` may be called multiple times, this function should handle being called multiple times as well. This function is also allowed to inspect any other object's state and can add more state objects to the atomic commit if needed. Care must be taken though to ensure that state check and compute functions for these added states are all called, and derived state in other objects all updated. Again the recommendation is to just call check helpers until a maximal configuration is reached. NOTE: This function is called in the check phase of an atomic update. The driver is not allowed to change anything outside of the free-standing state objects passed-in or assembled in the overall :c:type:`drm_atomic_commit` update tracking structure. RETURNS: 0 on success, -EINVAL if the state or the transition can't be supported, -ENOMEM on memory allocation failure and -EDEADLK if an attempt to obtain another state object ran into a :c:type:`drm_modeset_lock` deadlock. ”h]”(j‚ )�”}”(hŒ``atomic_check``”h]”jˆ )�”}”(hj .h]”hŒ atomic_check”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj .ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M?hj.ubjž )�”}”(hhh]”(hÎ)�”}”(hŒÊThis hook is used to validate connector state. This function is called from :c:type:`drm_atomic_helper_check_modeset`, and is called when a connector property is set, or a modeset on the crtc is forced.”h]”(hŒLThis hook is used to validate connector state. This function is called from ”…”�”}”(hj%.h²hh³Nh´Nubh)�”}”(hŒ):c:type:`drm_atomic_helper_check_modeset`”h]”jˆ )�”}”(hj/.h]”hŒdrm_atomic_helper_check_modeset”…”�”}”(hj1.h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj-.ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_atomic_helper_check_modeset”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M%hj%.ubhŒU, and is called when a connector property is set, or a modeset on the crtc is forced.”…”�”}”(hj%.h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jL.h´M%hj".ubhÎ)�”}”(hŒ�Because :c:type:`drm_atomic_helper_check_modeset` may be called multiple times, this function should handle being called multiple times as well.”h]”(hŒBecause ”…”�”}”(hjW.h²hh³Nh´Nubh)�”}”(hŒ):c:type:`drm_atomic_helper_check_modeset`”h]”jˆ )�”}”(hja.h]”hŒdrm_atomic_helper_check_modeset”…”�”}”(hjc.h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj_.ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_atomic_helper_check_modeset”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M)hjW.ubhŒ_ may be called multiple times, this function should handle being called multiple times as well.”…”�”}”(hjW.h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j~.h´M)hj".ubhÎ)�”}”(hXƒThis function is also allowed to inspect any other object's state and can add more state objects to the atomic commit if needed. Care must be taken though to ensure that state check and compute functions for these added states are all called, and derived state in other objects all updated. Again the recommendation is to just call check helpers until a maximal configuration is reached.”h]”hX…This function is also allowed to inspect any other object’s state and can add more state objects to the atomic commit if needed. Care must be taken though to ensure that state check and compute functions for these added states are all called, and derived state in other objects all updated. Again the recommendation is to just call check helpers until a maximal configuration is reached.”…”�”}”(hj‰.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M,hj".ubhÎ)�”}”(hŒNOTE:”h]”hŒNOTE:”…”�”}”(hj˜.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M3hj".ubhÎ)�”}”(hŒôThis function is called in the check phase of an atomic update. The driver is not allowed to change anything outside of the free-standing state objects passed-in or assembled in the overall :c:type:`drm_atomic_commit` update tracking structure.”h]”(hŒ¾This function is called in the check phase of an atomic update. The driver is not allowed to change anything outside of the free-standing state objects passed-in or assembled in the overall ”…”�”}”(hj§.h²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_atomic_commit`”h]”jˆ )�”}”(hj±.h]”hŒdrm_atomic_commit”…”�”}”(hj³.h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj¯.ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_atomic_commit”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M5hj§.ubhŒ update tracking structure.”…”�”}”(hj§.h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÎ.h´M5hj".ubhÎ)�”}”(hŒRETURNS:”h]”hŒRETURNS:”…”�”}”(hjÙ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M:hj".ubhÎ)�”}”(hŒ×0 on success, -EINVAL if the state or the transition can't be supported, -ENOMEM on memory allocation failure and -EDEADLK if an attempt to obtain another state object ran into a :c:type:`drm_modeset_lock` deadlock.”h]”(hŒµ0 on success, -EINVAL if the state or the transition can’t be supported, -ENOMEM on memory allocation failure and -EDEADLK if an attempt to obtain another state object ran into a ”…”�”}”(hjè.h²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_modeset_lock`”h]”jˆ )�”}”(hjò.h]”hŒdrm_modeset_lock”…”�”}”(hjô.h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjð.ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_modeset_lock”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M<hjè.ubhŒ deadlock.”…”�”}”(hjè.h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j/h´M<hj".ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j!.h´M?hj2'ubj| )�”}”(hXt``atomic_commit`` This hook is to be used by drivers implementing writeback connectors that need a point when to commit the writeback job to the hardware. The writeback_job to commit is available in the new connector state, in :c:type:`drm_connector_state.writeback_job `. This hook is optional. This callback is used by the atomic modeset helpers. ”h]”(j‚ )�”}”(hŒ``atomic_commit``”h]”jˆ )�”}”(hj,/h]”hŒ atomic_commit”…”�”}”(hj./h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj*/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MNhj&/ubjž )�”}”(hhh]”(hÎ)�”}”(hXThis hook is to be used by drivers implementing writeback connectors that need a point when to commit the writeback job to the hardware. The writeback_job to commit is available in the new connector state, in :c:type:`drm_connector_state.writeback_job `.”h]”(hŒÑThis hook is to be used by drivers implementing writeback connectors that need a point when to commit the writeback job to the hardware. The writeback_job to commit is available in the new connector state, in ”…”�”}”(hjE/h²hh³Nh´Nubh)�”}”(hŒA:c:type:`drm_connector_state.writeback_job `”h]”jˆ )�”}”(hjO/h]”hŒ!drm_connector_state.writeback_job”…”�”}”(hjQ/h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjM/ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_connector_state”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MGhjE/ubhŒ.”…”�”}”(hjE/h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jl/h´MGhjB/ubhÎ)�”}”(hŒThis hook is optional.”h]”hŒThis hook is optional.”…”�”}”(hjw/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MLhjB/ubhÎ)�”}”(hŒ4This callback is used by the atomic modeset helpers.”h]”hŒ4This callback is used by the atomic modeset helpers.”…”�”}”(hj†/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jA/h´MNhjB/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj&/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jA/h´MNhj2'ubj| )�”}”(hXê``prepare_writeback_job`` As writeback jobs contain a framebuffer, drivers may need to prepare and clean them up the same way they can prepare and clean up framebuffers for planes. This optional connector operation is used to support the preparation of writeback jobs. The job prepare operation is called from drm_atomic_helper_prepare_planes() for struct :c:type:`drm_writeback_connector` connectors only. This operation is optional. This callback is used by the atomic modeset helpers. ”h]”(j‚ )�”}”(hŒ``prepare_writeback_job``”h]”jˆ )�”}”(hj¦/h]”hŒprepare_writeback_job”…”�”}”(hj¨/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¤/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M_hj /ubjž )�”}”(hhh]”(hÎ)�”}”(hX|As writeback jobs contain a framebuffer, drivers may need to prepare and clean them up the same way they can prepare and clean up framebuffers for planes. This optional connector operation is used to support the preparation of writeback jobs. The job prepare operation is called from drm_atomic_helper_prepare_planes() for struct :c:type:`drm_writeback_connector` connectors only.”h]”(hXJAs writeback jobs contain a framebuffer, drivers may need to prepare and clean them up the same way they can prepare and clean up framebuffers for planes. This optional connector operation is used to support the preparation of writeback jobs. The job prepare operation is called from drm_atomic_helper_prepare_planes() for struct ”…”�”}”(hj¿/h²hh³Nh´Nubh)�”}”(hŒ!:c:type:`drm_writeback_connector`”h]”jˆ )�”}”(hjÉ/h]”hŒdrm_writeback_connector”…”�”}”(hjË/h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÇ/ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_writeback_connector”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MVhj¿/ubhŒ connectors only.”…”�”}”(hj¿/h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jæ/h´MVhj¼/ubhÎ)�”}”(hŒThis operation is optional.”h]”hŒThis operation is optional.”…”�”}”(hjñ/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M]hj¼/ubhÎ)�”}”(hŒ4This callback is used by the atomic modeset helpers.”h]”hŒ4This callback is used by the atomic modeset helpers.”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j»/h´M_hj¼/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj /ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j»/h´M_hj2'ubj| )�”}”(hX{``cleanup_writeback_job`` This optional connector operation is used to support the cleanup of writeback jobs. The job cleanup operation is called from the existing drm_writeback_cleanup_job() function, invoked both when destroying the job as part of an aborted commit, or when the job completes. This operation is optional. This callback is used by the atomic modeset helpers. ”h]”(j‚ )�”}”(hŒ``cleanup_writeback_job``”h]”jˆ )�”}”(hj 0h]”hŒcleanup_writeback_job”…”�”}”(hj"0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mnhj0ubjž )�”}”(hhh]”(hÎ)�”}”(hX This optional connector operation is used to support the cleanup of writeback jobs. The job cleanup operation is called from the existing drm_writeback_cleanup_job() function, invoked both when destroying the job as part of an aborted commit, or when the job completes.”h]”hX This optional connector operation is used to support the cleanup of writeback jobs. The job cleanup operation is called from the existing drm_writeback_cleanup_job() function, invoked both when destroying the job as part of an aborted commit, or when the job completes.”…”�”}”(hj90h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mfhj60ubhÎ)�”}”(hŒThis operation is optional.”h]”hŒThis operation is optional.”…”�”}”(hjH0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mlhj60ubhÎ)�”}”(hŒ4This callback is used by the atomic modeset helpers.”h]”hŒ4This callback is used by the atomic modeset helpers.”…”�”}”(hjW0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j50h´Mnhj60ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j50h´Mnhj2'ubj| )�”}”(hXD``enable_hpd`` Enable hot-plug detection for the connector. This operation is optional. This callback is used by the drm_kms_helper_poll_enable() helpers. This operation does not need to perform any hpd state tracking as the DRM core handles that maintenance and ensures the calls to enable and disable hpd are balanced. ”h]”(j‚ )�”}”(hŒ``enable_hpd``”h]”jˆ )�”}”(hjw0h]”hŒ enable_hpd”…”�”}”(hjy0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hju0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M~hjq0ubjž )�”}”(hhh]”(hÎ)�”}”(hŒ,Enable hot-plug detection for the connector.”h]”hŒ,Enable hot-plug detection for the connector.”…”�”}”(hj�0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mvhj�0ubhÎ)�”}”(hŒThis operation is optional.”h]”hŒThis operation is optional.”…”�”}”(hjŸ0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mxhj�0ubhÎ)�”}”(hŒBThis callback is used by the drm_kms_helper_poll_enable() helpers.”h]”hŒBThis callback is used by the drm_kms_helper_poll_enable() helpers.”…”�”}”(hj®0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mzhj�0ubhÎ)�”}”(hŒ¥This operation does not need to perform any hpd state tracking as the DRM core handles that maintenance and ensures the calls to enable and disable hpd are balanced.”h]”hŒ¥This operation does not need to perform any hpd state tracking as the DRM core handles that maintenance and ensures the calls to enable and disable hpd are balanced.”…”�”}”(hj½0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M|hj�0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjq0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jŒ0h´M~hj2'ubj| )�”}”(hXF``disable_hpd`` Disable hot-plug detection for the connector. This operation is optional. This callback is used by the drm_kms_helper_poll_disable() helpers. This operation does not need to perform any hpd state tracking as the DRM core handles that maintenance and ensures the calls to enable and disable hpd are balanced.”h]”(j‚ )�”}”(hŒ``disable_hpd``”h]”jˆ )�”}”(hjÞ0h]”hŒ disable_hpd”…”�”}”(hjà0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÜ0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M�hjØ0ubjž )�”}”(hhh]”(hÎ)�”}”(hŒ-Disable hot-plug detection for the connector.”h]”hŒ-Disable hot-plug detection for the connector.”…”�”}”(hj÷0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M†hjô0ubhÎ)�”}”(hŒThis operation is optional.”h]”hŒThis operation is optional.”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mˆhjô0ubhÎ)�”}”(hŒCThis callback is used by the drm_kms_helper_poll_disable() helpers.”h]”hŒCThis callback is used by the drm_kms_helper_poll_disable() helpers.”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MŠhjô0ubhÎ)�”}”(hŒ¥This operation does not need to perform any hpd state tracking as the DRM core handles that maintenance and ensures the calls to enable and disable hpd are balanced.”h]”hŒ¥This operation does not need to perform any hpd state tracking as the DRM core handles that maintenance and ensures the calls to enable and disable hpd are balanced.”…”�”}”(hj$1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MŒhjô0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjØ0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jó0h´M�hj2'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjê&ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjH h²hh³j— h´NubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjN1h]”hŒ Description”…”�”}”(hjP1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjL1ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M‘hjH h²hubhÎ)�”}”(hŒ[These functions are used by the atomic and legacy modeset helpers and by the probe helpers.”h]”hŒ[These functions are used by the atomic and legacy modeset helpers and by the probe helpers.”…”�”}”(hjd1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MNhjH h²hubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ%drm_connector_helper_add (C function)”Œc.drm_connector_helper_add”hNt”auh1j† hjH h²hh³j— h´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒovoid drm_connector_helper_add (struct drm_connector *connector, const struct drm_connector_helper_funcs *funcs)”h]”j¤ )�”}”(hŒnvoid drm_connector_helper_add(struct drm_connector *connector, const struct drm_connector_helper_funcs *funcs)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjŒ1h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjˆ1h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M–ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›1h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjˆ1h²hh³jš1h´M–ubjÍ )�”}”(hŒdrm_connector_helper_add”h]”jÓ )�”}”(hŒdrm_connector_helper_add”h]”hŒdrm_connector_helper_add”…”�”}”(hj­1h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj©1ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjˆ1h²hh³jš1h´M–ubjÞ)�”}”(hŒQ(struct drm_connector *connector, const struct drm_connector_helper_funcs *funcs)”h]”(jä)�”}”(hŒstruct drm_connector *connector”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjÉ1h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjÅ1ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖ1h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÅ1ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_connector”h]”hŒ drm_connector”…”�”}”(hjç1h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjä1ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jé1Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj¯1sbŒc.drm_connector_helper_add”†”asbuh1hhjÅ1ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÅ1ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÅ1ubjÓ )�”}”(hŒ connector”h]”hŒ connector”…”�”}”(hj"2h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÅ1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÁ1ubjä)�”}”(hŒ.const struct drm_connector_helper_funcs *funcs”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hj;2h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj72ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjH2h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj72ubjª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjV2h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj72ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjc2h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj72ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_connector_helper_funcs”h]”hŒdrm_connector_helper_funcs”…”�”}”(hjt2h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjq2ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jv2Œmodname”NŒ classname”Njé jì )�”}”jï ]”j2Œc.drm_connector_helper_add”†”asbuh1hhj72ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’2h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj72ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj 2h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj72ubjÓ )�”}”(hŒfuncs”h]”hŒfuncs”…”�”}”(hj­2h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj72ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÁ1ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjˆ1h²hh³jš1h´M–ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj„1h²hh³jš1h´M–ubah}”(h]”j1ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jš1h´M–hj�1h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ&sets the helper vtable for a connector”h]”hŒ&sets the helper vtable for a connector”…”�”}”(hj×2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M–hjÔ2h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj�1h²hh³jš1h´M–ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jï2j$ jï2j% ‰j& ‰j' ‰uh1j˜ h²hhjH h³j— h´Nubj) )�”}”(hŒ **Parameters** ``struct drm_connector *connector`` DRM connector ``const struct drm_connector_helper_funcs *funcs`` helper vtable to set for **connector**”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjù2h]”hŒ Parameters”…”�”}”(hjû2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj÷2ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mšhjó2ubjw )�”}”(hhh]”(j| )�”}”(hŒ2``struct drm_connector *connector`` DRM connector ”h]”(j‚ )�”}”(hŒ#``struct drm_connector *connector``”h]”jˆ )�”}”(hj3h]”hŒstruct drm_connector *connector”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M—hj3ubjž )�”}”(hhh]”hÎ)�”}”(hŒ DRM connector”h]”hŒ DRM connector”…”�”}”(hj13h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j-3h´M—hj.3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j-3h´M—hj3ubj| )�”}”(hŒY``const struct drm_connector_helper_funcs *funcs`` helper vtable to set for **connector**”h]”(j‚ )�”}”(hŒ2``const struct drm_connector_helper_funcs *funcs``”h]”jˆ )�”}”(hjQ3h]”hŒ.const struct drm_connector_helper_funcs *funcs”…”�”}”(hjS3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjO3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M™hjK3ubjž )�”}”(hhh]”hÎ)�”}”(hŒ&helper vtable to set for **connector**”h]”(hŒhelper vtable to set for ”…”�”}”(hjj3h²hh³Nh´Nubj3 )�”}”(hŒ **connector**”h]”hŒ connector”…”�”}”(hjr3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjj3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M˜hjg3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjK3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jf3h´M™hj3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjó2ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjH h²hh³j— h´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ!drm_plane_helper_funcs (C struct)”Œc.drm_plane_helper_funcs”hNt”auh1j† hjH h²hh³j— h´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒdrm_plane_helper_funcs”h]”j¤ )�”}”(hŒstruct drm_plane_helper_funcs”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj¹3h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjµ3h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M�ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇ3h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjµ3h²hh³jÆ3h´M�ubjÍ )�”}”(hŒdrm_plane_helper_funcs”h]”jÓ )�”}”(hj³3h]”hŒdrm_plane_helper_funcs”…”�”}”(hjÙ3h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÕ3ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjµ3h²hh³jÆ3h´M�ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj±3h²hh³jÆ3h´M�ubah}”(h]”j¬3ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jÆ3h´M�hj®3h²hubj )�”}”(hhh]”hÎ)�”}”(hŒhelper operations for planes”h]”hŒhelper operations for planes”…”�”}”(hjû3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M¡hjø3h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj®3h²hh³jÆ3h´M�ubeh}”(h]”h ]”(j Œstruct”eh"]”h$]”h&]”j" j j# j4j$ j4j% ‰j& ‰j' ‰uh1j˜ h²hhjH h³j— h´Nubj) )�”}”(hX"/**Definition**:: struct drm_plane_helper_funcs { int (*prepare_fb)(struct drm_plane *plane, struct drm_plane_state *new_state); void (*cleanup_fb)(struct drm_plane *plane, struct drm_plane_state *old_state); int (*begin_fb_access)(struct drm_plane *plane, struct drm_plane_state *new_plane_state); void (*end_fb_access)(struct drm_plane *plane, struct drm_plane_state *new_plane_state); int (*atomic_check)(struct drm_plane *plane, struct drm_atomic_commit *state); void (*atomic_update)(struct drm_plane *plane, struct drm_atomic_commit *state); void (*atomic_enable)(struct drm_plane *plane, struct drm_atomic_commit *state); void (*atomic_disable)(struct drm_plane *plane, struct drm_atomic_commit *state); int (*atomic_async_check)(struct drm_plane *plane, struct drm_atomic_commit *state, bool flip); void (*atomic_async_update)(struct drm_plane *plane, struct drm_atomic_commit *state); int (*get_scanout_buffer)(struct drm_plane *plane, struct drm_scanout_buffer *sb); void (*panic_flush)(struct drm_plane *plane); }; **Members** ``prepare_fb`` This hook is to prepare a framebuffer for scanout by e.g. pinning its backing storage or relocating it into a contiguous block of VRAM. Other possible preparatory work includes flushing caches. This function must not block for outstanding rendering, since it is called in the context of the atomic IOCTL even for async commits to be able to return any errors to userspace. Instead the recommended way is to fill out the :c:type:`drm_plane_state.fence ` of the passed-in :c:type:`drm_plane_state`. If the driver doesn't support native fences then equivalent functionality should be implemented through private members in the plane structure. For GEM drivers who neither have a **prepare_fb** nor **cleanup_fb** hook set drm_gem_plane_helper_prepare_fb() is called automatically to implement this. Other drivers which need additional plane processing can call drm_gem_plane_helper_prepare_fb() from their **prepare_fb** hook. The resources acquired in **prepare_fb** persist after the end of the atomic commit. Resources that can be release at the commit's end should be acquired in **begin_fb_access** and released in **end_fb_access**. For example, a GEM buffer's pin operation belongs into **prepare_fb** to keep the buffer pinned after the commit. But a vmap operation for shadow-plane helpers belongs into **begin_fb_access**, so that atomic helpers remove the mapping at the end of the commit. The helpers will call **cleanup_fb** with matching arguments for every successful call to this hook. This callback is used by the atomic modeset helpers, but it is optional. See **begin_fb_access** for preparing per-commit resources. RETURNS: 0 on success or one of the following negative error codes allowed by the :c:type:`drm_mode_config_funcs.atomic_commit ` vfunc. When using helpers this callback is the only one which can fail an atomic commit, everything else must complete successfully. ``cleanup_fb`` This hook is called to clean up any resources allocated for the given framebuffer and plane configuration in **prepare_fb**. This callback is used by the atomic modeset helpers, but it is optional. ``begin_fb_access`` This hook prepares the plane for access during an atomic commit. In contrast to **prepare_fb**, resources acquired in **begin_fb_access**, are released at the end of the atomic commit in **end_fb_access**. For example, with shadow-plane helpers, the GEM buffer's vmap operation belongs into **begin_fb_access**, so that the buffer's memory will be unmapped at the end of the commit in **end_fb_access**. But a GEM buffer's pin operation belongs into **prepare_fb** to keep the buffer pinned after the commit. The callback is used by the atomic modeset helpers, but it is optional. See **end_fb_cleanup** for undoing the effects of **begin_fb_access** and **prepare_fb** for acquiring resources until the next pageflip. Returns: 0 on success, or a negative errno code otherwise. ``end_fb_access`` This hook cleans up resources allocated by **begin_fb_access**. It it called at the end of a commit for the new plane state. ``atomic_check`` Drivers should check plane specific constraints in this hook. When using drm_atomic_helper_check_planes() plane's **atomic_check** hooks are called before the ones for CRTCs, which allows drivers to request shared resources that the CRTC controls here. For more complicated dependencies the driver can call the provided check helpers multiple times until the computed state has a final configuration and everything has been checked. This function is also allowed to inspect any other object's state and can add more state objects to the atomic commit if needed. Care must be taken though to ensure that state check and compute functions for these added states are all called, and derived state in other objects all updated. Again the recommendation is to just call check helpers until a maximal configuration is reached. This callback is used by the atomic modeset helpers, but it is optional. NOTE: This function is called in the check phase of an atomic update. The driver is not allowed to change anything outside of the :c:type:`drm_atomic_commit` update tracking structure. RETURNS: 0 on success, -EINVAL if the state or the transition can't be supported, -ENOMEM on memory allocation failure and -EDEADLK if an attempt to obtain another state object ran into a :c:type:`drm_modeset_lock` deadlock. ``atomic_update`` Drivers should use this function to update the plane state. This hook is called in-between the :c:type:`drm_crtc_helper_funcs.atomic_begin ` and drm_crtc_helper_funcs.atomic_flush callbacks. Note that the power state of the display pipe when this function is called depends upon the exact helpers and calling sequence the driver has picked. See drm_atomic_helper_commit_planes() for a discussion of the tradeoffs and variants of plane commit helpers. This callback is used by the atomic modeset helpers, but it is optional. ``atomic_enable`` Drivers should use this function to unconditionally enable a plane. This hook is called in-between the :c:type:`drm_crtc_helper_funcs.atomic_begin ` and drm_crtc_helper_funcs.atomic_flush callbacks. It is called after **atomic_update**, which will be called for all enabled planes. Drivers that use **atomic_enable** should set up a plane in **atomic_update** and afterwards enable the plane in **atomic_enable**. If a plane needs to be enabled before installing the scanout buffer, drivers can still do so in **atomic_update**. Note that the power state of the display pipe when this function is called depends upon the exact helpers and calling sequence the driver has picked. See drm_atomic_helper_commit_planes() for a discussion of the tradeoffs and variants of plane commit helpers. This callback is used by the atomic modeset helpers, but it is optional. If implemented, **atomic_enable** should be the inverse of **atomic_disable**. Drivers that don't want to use either can still implement the complete plane update in **atomic_update**. ``atomic_disable`` Drivers should use this function to unconditionally disable a plane. This hook is called in-between the :c:type:`drm_crtc_helper_funcs.atomic_begin ` and drm_crtc_helper_funcs.atomic_flush callbacks. It is an alternative to **atomic_update**, which will be called for disabling planes, too, if the **atomic_disable** hook isn't implemented. This hook is also useful to disable planes in preparation of a modeset, by calling drm_atomic_helper_disable_planes_on_crtc() from the :c:type:`drm_crtc_helper_funcs.disable ` hook. Note that the power state of the display pipe when this function is called depends upon the exact helpers and calling sequence the driver has picked. See drm_atomic_helper_commit_planes() for a discussion of the tradeoffs and variants of plane commit helpers. This callback is used by the atomic modeset helpers, but it is optional. It's intended to reverse the effects of **atomic_enable**. ``atomic_async_check`` Drivers should set this function pointer to check if the plane's atomic state can be updated in a async fashion. Here async means "not vblank synchronized". This hook is called by drm_atomic_async_check() to establish if a given update can be committed asynchronously, that is, if it can jump ahead of the state currently queued for update. This function is also used by drm_atomic_set_property() to determine if the plane can be flipped in async. The flip flag is used to distinguish if the function is used for just the plane state or for a flip. RETURNS: Return 0 on success and any error returned indicates that the update can not be applied in asynchronous manner. ``atomic_async_update`` Drivers should set this function pointer to perform asynchronous updates of planes, that is, jump ahead of the currently queued state and update the plane. Here async means "not vblank synchronized". This hook is called by drm_atomic_helper_async_commit(). An async update will happen on legacy cursor updates. An async update won't happen if there is an outstanding commit modifying the same plane. When doing async_update drivers shouldn't replace the :c:type:`drm_plane_state` but update the current one with the new plane configurations in the new plane_state. Drivers should also swap the framebuffers between current plane state (:c:type:`drm_plane.state `) and new_state. This is required since cleanup for async commits is performed on the new state, rather than old state like for traditional commits. Since we want to give up the reference on the current (old) fb instead of our brand new one, swap them in the driver during the async commit. FIXME: - It only works for single plane updates - Async Pageflips are not supported yet - Some hw might still scan out the old buffer until the next vblank, however we let go of the fb references as soon as we run this hook. For now drivers must implement their own workers for deferring if needed, until a common solution is created. ``get_scanout_buffer`` Get the current scanout buffer, to display a message with drm_panic. The driver should do the minimum changes to provide a buffer, that can be used to display the panic screen. Currently only linear buffers are supported. Non-linear buffer support is on the TODO list. The device :c:type:`dev.mode_config `.panic_lock is taken before calling this function, so you can safely access the :c:type:`plane.state ` It is called from a panic callback, and must follow its restrictions. Please look the documentation at drm_panic_trylock() for an in-depth discussions of what's safe and what is not allowed. It's a best effort mode, so it's expected that in some complex cases the panic screen won't be displayed. The returned :c:type:`drm_scanout_buffer.map ` must be valid if no error code is returned. Return: ``0`` on success, negative errno on failure. ``panic_flush`` It is used by drm_panic, and is called after the panic screen is drawn to the scanout buffer. In this function, the driver can send additional commands to the hardware, to make the scanout buffer visible. It is only called if get_scanout_buffer() returned successfully, and the :c:type:`dev.mode_config `.panic_lock is held during the entire sequence. It is called from a panic callback, and must follow its restrictions. Please look the documentation at drm_panic_trylock() for an in-depth discussions of what's safe and what is not allowed.”h]”(hÎ)�”}”(hŒ**Definition**::”h]”(j3 )�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj4ubhŒ:”…”�”}”(hj4h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M¥hj4ubjN )�”}”(hXstruct drm_plane_helper_funcs { int (*prepare_fb)(struct drm_plane *plane, struct drm_plane_state *new_state); void (*cleanup_fb)(struct drm_plane *plane, struct drm_plane_state *old_state); int (*begin_fb_access)(struct drm_plane *plane, struct drm_plane_state *new_plane_state); void (*end_fb_access)(struct drm_plane *plane, struct drm_plane_state *new_plane_state); int (*atomic_check)(struct drm_plane *plane, struct drm_atomic_commit *state); void (*atomic_update)(struct drm_plane *plane, struct drm_atomic_commit *state); void (*atomic_enable)(struct drm_plane *plane, struct drm_atomic_commit *state); void (*atomic_disable)(struct drm_plane *plane, struct drm_atomic_commit *state); int (*atomic_async_check)(struct drm_plane *plane, struct drm_atomic_commit *state, bool flip); void (*atomic_async_update)(struct drm_plane *plane, struct drm_atomic_commit *state); int (*get_scanout_buffer)(struct drm_plane *plane, struct drm_scanout_buffer *sb); void (*panic_flush)(struct drm_plane *plane); };”h]”hXstruct drm_plane_helper_funcs { int (*prepare_fb)(struct drm_plane *plane, struct drm_plane_state *new_state); void (*cleanup_fb)(struct drm_plane *plane, struct drm_plane_state *old_state); int (*begin_fb_access)(struct drm_plane *plane, struct drm_plane_state *new_plane_state); void (*end_fb_access)(struct drm_plane *plane, struct drm_plane_state *new_plane_state); int (*atomic_check)(struct drm_plane *plane, struct drm_atomic_commit *state); void (*atomic_update)(struct drm_plane *plane, struct drm_atomic_commit *state); void (*atomic_enable)(struct drm_plane *plane, struct drm_atomic_commit *state); void (*atomic_disable)(struct drm_plane *plane, struct drm_atomic_commit *state); int (*atomic_async_check)(struct drm_plane *plane, struct drm_atomic_commit *state, bool flip); void (*atomic_async_update)(struct drm_plane *plane, struct drm_atomic_commit *state); int (*get_scanout_buffer)(struct drm_plane *plane, struct drm_scanout_buffer *sb); void (*panic_flush)(struct drm_plane *plane); };”…”�”}”hj84sbah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jM h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M§hj4ubhÎ)�”}”(hŒ **Members**”h]”j3 )�”}”(hjI4h]”hŒMembers”…”�”}”(hjK4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjG4ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M¶hj4ubjw )�”}”(hhh]”(j| )�”}”(hX¤``prepare_fb`` This hook is to prepare a framebuffer for scanout by e.g. pinning its backing storage or relocating it into a contiguous block of VRAM. Other possible preparatory work includes flushing caches. This function must not block for outstanding rendering, since it is called in the context of the atomic IOCTL even for async commits to be able to return any errors to userspace. Instead the recommended way is to fill out the :c:type:`drm_plane_state.fence ` of the passed-in :c:type:`drm_plane_state`. If the driver doesn't support native fences then equivalent functionality should be implemented through private members in the plane structure. For GEM drivers who neither have a **prepare_fb** nor **cleanup_fb** hook set drm_gem_plane_helper_prepare_fb() is called automatically to implement this. Other drivers which need additional plane processing can call drm_gem_plane_helper_prepare_fb() from their **prepare_fb** hook. The resources acquired in **prepare_fb** persist after the end of the atomic commit. Resources that can be release at the commit's end should be acquired in **begin_fb_access** and released in **end_fb_access**. For example, a GEM buffer's pin operation belongs into **prepare_fb** to keep the buffer pinned after the commit. But a vmap operation for shadow-plane helpers belongs into **begin_fb_access**, so that atomic helpers remove the mapping at the end of the commit. The helpers will call **cleanup_fb** with matching arguments for every successful call to this hook. This callback is used by the atomic modeset helpers, but it is optional. See **begin_fb_access** for preparing per-commit resources. RETURNS: 0 on success or one of the following negative error codes allowed by the :c:type:`drm_mode_config_funcs.atomic_commit ` vfunc. When using helpers this callback is the only one which can fail an atomic commit, everything else must complete successfully. ”h]”(j‚ )�”}”(hŒ``prepare_fb``”h]”jˆ )�”}”(hjh4h]”hŒ prepare_fb”…”�”}”(hjj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjf4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MÍhjb4ubjž )�”}”(hhh]”(hÎ)�”}”(hŒÁThis hook is to prepare a framebuffer for scanout by e.g. pinning its backing storage or relocating it into a contiguous block of VRAM. Other possible preparatory work includes flushing caches.”h]”hŒÁThis hook is to prepare a framebuffer for scanout by e.g. pinning its backing storage or relocating it into a contiguous block of VRAM. Other possible preparatory work includes flushing caches.”…”�”}”(hj�4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M¨hj~4ubhÎ)�”}”(hXÏThis function must not block for outstanding rendering, since it is called in the context of the atomic IOCTL even for async commits to be able to return any errors to userspace. Instead the recommended way is to fill out the :c:type:`drm_plane_state.fence ` of the passed-in :c:type:`drm_plane_state`. If the driver doesn't support native fences then equivalent functionality should be implemented through private members in the plane structure.”h]”(hŒâThis function must not block for outstanding rendering, since it is called in the context of the atomic IOCTL even for async commits to be able to return any errors to userspace. Instead the recommended way is to fill out the ”…”�”}”(hj�4h²hh³Nh´Nubh)�”}”(hŒ1:c:type:`drm_plane_state.fence `”h]”jˆ )�”}”(hjš4h]”hŒdrm_plane_state.fence”…”�”}”(hjœ4h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj˜4ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_plane_state”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M¬hj�4ubhŒ of the passed-in ”…”�”}”(hj�4h²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_plane_state`”h]”jˆ )�”}”(hj¾4h]”hŒdrm_plane_state”…”�”}”(hjÀ4h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj¼4ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_plane_state”uh1hh³j·4h´M¬hj�4ubhŒ“. If the driver doesn’t support native fences then equivalent functionality should be implemented through private members in the plane structure.”…”�”}”(hj�4h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j·4h´M¬hj~4ubhÎ)�”}”(hXFor GEM drivers who neither have a **prepare_fb** nor **cleanup_fb** hook set drm_gem_plane_helper_prepare_fb() is called automatically to implement this. Other drivers which need additional plane processing can call drm_gem_plane_helper_prepare_fb() from their **prepare_fb** hook.”h]”(hŒ#For GEM drivers who neither have a ”…”�”}”(hjå4h²hh³Nh´Nubj3 )�”}”(hŒ**prepare_fb**”h]”hŒ prepare_fb”…”�”}”(hjí4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjå4ubhŒ nor ”…”�”}”(hjå4h²hh³Nh´Nubj3 )�”}”(hŒ**cleanup_fb**”h]”hŒ cleanup_fb”…”�”}”(hjÿ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjå4ubhŒÂ hook set drm_gem_plane_helper_prepare_fb() is called automatically to implement this. Other drivers which need additional plane processing can call drm_gem_plane_helper_prepare_fb() from their ”…”�”}”(hjå4h²hh³Nh´Nubj3 )�”}”(hŒ**prepare_fb**”h]”hŒ prepare_fb”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjå4ubhŒ hook.”…”�”}”(hjå4h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M´hj~4ubhÎ)�”}”(hXÙThe resources acquired in **prepare_fb** persist after the end of the atomic commit. Resources that can be release at the commit's end should be acquired in **begin_fb_access** and released in **end_fb_access**. For example, a GEM buffer's pin operation belongs into **prepare_fb** to keep the buffer pinned after the commit. But a vmap operation for shadow-plane helpers belongs into **begin_fb_access**, so that atomic helpers remove the mapping at the end of the commit.”h]”(hŒThe resources acquired in ”…”�”}”(hj*5h²hh³Nh´Nubj3 )�”}”(hŒ**prepare_fb**”h]”hŒ prepare_fb”…”�”}”(hj25h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj*5ubhŒw persist after the end of the atomic commit. Resources that can be release at the commit’s end should be acquired in ”…”�”}”(hj*5h²hh³Nh´Nubj3 )�”}”(hŒ**begin_fb_access**”h]”hŒbegin_fb_access”…”�”}”(hjD5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj*5ubhŒ and released in ”…”�”}”(hj*5h²hh³Nh´Nubj3 )�”}”(hŒ**end_fb_access**”h]”hŒ end_fb_access”…”�”}”(hjV5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj*5ubhŒ;. For example, a GEM buffer’s pin operation belongs into ”…”�”}”(hj*5h²hh³Nh´Nubj3 )�”}”(hŒ**prepare_fb**”h]”hŒ prepare_fb”…”�”}”(hjh5h²hh³Nh´Nubah}”(h]”h •]”h"]”h$]”h&]”uh1j2 hj*5ubhŒh to keep the buffer pinned after the commit. But a vmap operation for shadow-plane helpers belongs into ”…”�”}”(hj*5h²hh³Nh´Nubj3 )�”}”(hŒ**begin_fb_access**”h]”hŒbegin_fb_access”…”�”}”(hjz5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj*5ubhŒE, so that atomic helpers remove the mapping at the end of the commit.”…”�”}”(hj*5h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mºhj~4ubhÎ)�”}”(hŒdThe helpers will call **cleanup_fb** with matching arguments for every successful call to this hook.”h]”(hŒThe helpers will call ”…”�”}”(hj“5h²hh³Nh´Nubj3 )�”}”(hŒ**cleanup_fb**”h]”hŒ cleanup_fb”…”�”}”(hj›5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj“5ubhŒ@ with matching arguments for every successful call to this hook.”…”�”}”(hj“5h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MÂhj~4ubhÎ)�”}”(hŒ„This callback is used by the atomic modeset helpers, but it is optional. See **begin_fb_access** for preparing per-commit resources.”h]”(hŒMThis callback is used by the atomic modeset helpers, but it is optional. See ”…”�”}”(hj´5h²hh³Nh´Nubj3 )�”}”(hŒ**begin_fb_access**”h]”hŒbegin_fb_access”…”�”}”(hj¼5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj´5ubhŒ$ for preparing per-commit resources.”…”�”}”(hj´5h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MÅhj~4ubhÎ)�”}”(hŒRETURNS:”h]”hŒRETURNS:”…”�”}”(hjÕ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MÈhj~4ubhÎ)�”}”(hX0 on success or one of the following negative error codes allowed by the :c:type:`drm_mode_config_funcs.atomic_commit ` vfunc. When using helpers this callback is the only one which can fail an atomic commit, everything else must complete successfully.”h]”(hŒI0 on success or one of the following negative error codes allowed by the ”…”�”}”(hjä5h²hh³Nh´Nubh)�”}”(hŒE:c:type:`drm_mode_config_funcs.atomic_commit `”h]”jˆ )�”}”(hjî5h]”hŒ#drm_mode_config_funcs.atomic_commit”…”�”}”(hjð5h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjì5ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_mode_config_funcs”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MÊhjä5ubhŒ… vfunc. When using helpers this callback is the only one which can fail an atomic commit, everything else must complete successfully.”…”�”}”(hjä5h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j 6h´MÊhj~4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjb4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j}4h´MÍhj_4ubj| )�”}”(hŒÖ``cleanup_fb`` This hook is called to clean up any resources allocated for the given framebuffer and plane configuration in **prepare_fb**. This callback is used by the atomic modeset helpers, but it is optional. ”h]”(j‚ )�”}”(hŒ``cleanup_fb``”h]”jˆ )�”}”(hj(6h]”hŒ cleanup_fb”…”�”}”(hj*6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj&6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MØhj"6ubjž )�”}”(hhh]”(hÎ)�”}”(hŒ|This hook is called to clean up any resources allocated for the given framebuffer and plane configuration in **prepare_fb**.”h]”(hŒmThis hook is called to clean up any resources allocated for the given framebuffer and plane configuration in ”…”�”}”(hjA6h²hh³Nh´Nubj3 )�”}”(hŒ**prepare_fb**”h]”hŒ prepare_fb”…”�”}”(hjI6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjA6ubhŒ.”…”�”}”(hjA6h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MÔhj>6ubhÎ)�”}”(hŒHThis callback is used by the atomic modeset helpers, but it is optional.”h]”hŒHThis callback is used by the atomic modeset helpers, but it is optional.”…”�”}”(hjb6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M×hj>6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj"6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j=6h´MØhj_4ubj| )�”}”(hX!``begin_fb_access`` This hook prepares the plane for access during an atomic commit. In contrast to **prepare_fb**, resources acquired in **begin_fb_access**, are released at the end of the atomic commit in **end_fb_access**. For example, with shadow-plane helpers, the GEM buffer's vmap operation belongs into **begin_fb_access**, so that the buffer's memory will be unmapped at the end of the commit in **end_fb_access**. But a GEM buffer's pin operation belongs into **prepare_fb** to keep the buffer pinned after the commit. The callback is used by the atomic modeset helpers, but it is optional. See **end_fb_cleanup** for undoing the effects of **begin_fb_access** and **prepare_fb** for acquiring resources until the next pageflip. Returns: 0 on success, or a negative errno code otherwise. ”h]”(j‚ )�”}”(hŒ``begin_fb_access``”h]”jˆ )�”}”(hjƒ6h]”hŒbegin_fb_access”…”�”}”(hj…6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj�6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mïhj}6ubjž )�”}”(hhh]”(hÎ)�”}”(hŒÍThis hook prepares the plane for access during an atomic commit. In contrast to **prepare_fb**, resources acquired in **begin_fb_access**, are released at the end of the atomic commit in **end_fb_access**.”h]”(hŒPThis hook prepares the plane for access during an atomic commit. In contrast to ”…”�”}”(hjœ6h²hh³Nh´Nubj3 )�”}”(hŒ**prepare_fb**”h]”hŒ prepare_fb”…”�”}”(hj¤6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjœ6ubhŒ, resources acquired in ”…”�”}”(hjœ6h²hh³Nh´Nubj3 )�”}”(hŒ**begin_fb_access**”h]”hŒbegin_fb_access”…”�”}”(hj¶6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjœ6ubhŒ2, are released at the end of the atomic commit in ”…”�”}”(hjœ6h²hh³Nh´Nubj3 )�”}”(hŒ**end_fb_access**”h]”hŒ end_fb_access”…”�”}”(hjÈ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjœ6ubhŒ.”…”�”}”(hjœ6h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Màhj™6ubhÎ)�”}”(hX.For example, with shadow-plane helpers, the GEM buffer's vmap operation belongs into **begin_fb_access**, so that the buffer's memory will be unmapped at the end of the commit in **end_fb_access**. But a GEM buffer's pin operation belongs into **prepare_fb** to keep the buffer pinned after the commit.”h]”(hŒWFor example, with shadow-plane helpers, the GEM buffer’s vmap operation belongs into ”…”�”}”(hjá6h²hh³Nh´Nubj3 )�”}”(hŒ**begin_fb_access**”h]”hŒbegin_fb_access”…”�”}”(hjé6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjá6ubhŒM, so that the buffer’s memory will be unmapped at the end of the commit in ”…”�”}”(hjá6h²hh³Nh´Nubj3 )�”}”(hŒ**end_fb_access**”h]”hŒ end_fb_access”…”�”}”(hjû6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjá6ubhŒ2. But a GEM buffer’s pin operation belongs into ”…”�”}”(hjá6h²hh³Nh´Nubj3 )�”}”(hŒ**prepare_fb**”h]”hŒ prepare_fb”…”�”}”(hj 7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjá6ubhŒ, to keep the buffer pinned after the commit.”…”�”}”(hjá6h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mähj™6ubhÎ)�”}”(hŒÑThe callback is used by the atomic modeset helpers, but it is optional. See **end_fb_cleanup** for undoing the effects of **begin_fb_access** and **prepare_fb** for acquiring resources until the next pageflip.”h]”(hŒLThe callback is used by the atomic modeset helpers, but it is optional. See ”…”�”}”(hj&7h²hh³Nh´Nubj3 )�”}”(hŒ**end_fb_cleanup**”h]”hŒend_fb_cleanup”…”�”}”(hj.7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj&7ubhŒ for undoing the effects of ”…”�”}”(hj&7h²hh³Nh´Nubj3 )�”}”(hŒ**begin_fb_access**”h]”hŒbegin_fb_access”…”�”}”(hj@7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj&7ubhŒ and ”…”�”}”(hj&7h²hh³Nh´Nubj3 )�”}”(hŒ**prepare_fb**”h]”hŒ prepare_fb”…”�”}”(hjR7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj&7ubhŒ1 for acquiring resources until the next pageflip.”…”�”}”(hj&7h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mêhj™6ubhÎ)�”}”(hŒ:Returns: 0 on success, or a negative errno code otherwise.”h]”hŒ:Returns: 0 on success, or a negative errno code otherwise.”…”�”}”(hjk7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mîhj™6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj}6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j˜6h´Mïhj_4ubj| )�”}”(hŒ�``end_fb_access`` This hook cleans up resources allocated by **begin_fb_access**. It it called at the end of a commit for the new plane state. ”h]”(j‚ )�”}”(hŒ``end_fb_access``”h]”jˆ )�”}”(hjŒ7h]”hŒ end_fb_access”…”�”}”(hjŽ7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjŠ7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M÷hj†7ubjž )�”}”(hhh]”hÎ)�”}”(hŒ|This hook cleans up resources allocated by **begin_fb_access**. It it called at the end of a commit for the new plane state.”h]”(hŒ+This hook cleans up resources allocated by ”…”�”}”(hj¥7h²hh³Nh´Nubj3 )�”}”(hŒ**begin_fb_access**”h]”hŒbegin_fb_access”…”�”}”(hj­7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¥7ubhŒ>. It it called at the end of a commit for the new plane state.”…”�”}”(hj¥7h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Möhj¢7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj†7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¡7h´M÷hj_4ubj| )�”}”(hX0``atomic_check`` Drivers should check plane specific constraints in this hook. When using drm_atomic_helper_check_planes() plane's **atomic_check** hooks are called before the ones for CRTCs, which allows drivers to request shared resources that the CRTC controls here. For more complicated dependencies the driver can call the provided check helpers multiple times until the computed state has a final configuration and everything has been checked. This function is also allowed to inspect any other object's state and can add more state objects to the atomic commit if needed. Care must be taken though to ensure that state check and compute functions for these added states are all called, and derived state in other objects all updated. Again the recommendation is to just call check helpers until a maximal configuration is reached. This callback is used by the atomic modeset helpers, but it is optional. NOTE: This function is called in the check phase of an atomic update. The driver is not allowed to change anything outside of the :c:type:`drm_atomic_commit` update tracking structure. RETURNS: 0 on success, -EINVAL if the state or the transition can't be supported, -ENOMEM on memory allocation failure and -EDEADLK if an attempt to obtain another state object ran into a :c:type:`drm_modeset_lock` deadlock. ”h]”(j‚ )�”}”(hŒ``atomic_check``”h]”jˆ )�”}”(hjØ7h]”hŒ atomic_check”…”�”}”(hjÚ7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÖ7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MhjÒ7ubjž )�”}”(hhh]”(hÎ)�”}”(hŒ=Drivers should check plane specific constraints in this hook.”h]”hŒ=Drivers should check plane specific constraints in this hook.”…”�”}”(hjñ7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mþhjî7ubhÎ)�”}”(hXrWhen using drm_atomic_helper_check_planes() plane's **atomic_check** hooks are called before the ones for CRTCs, which allows drivers to request shared resources that the CRTC controls here. For more complicated dependencies the driver can call the provided check helpers multiple times until the computed state has a final configuration and everything has been checked.”h]”(hŒ6When using drm_atomic_helper_check_planes() plane’s ”…”�”}”(hj8h²hh³Nh´Nubj3 )�”}”(hŒ**atomic_check**”h]”hŒ atomic_check”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj8ubhX. hooks are called before the ones for CRTCs, which allows drivers to request shared resources that the CRTC controls here. For more complicated dependencies the driver can call the provided check helpers multiple times until the computed state has a final configuration and everything has been checked.”…”�”}”(hj8h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mhjî7ubhÎ)�”}”(hXƒThis function is also allowed to inspect any other object's state and can add more state objects to the atomic commit if needed. Care must be taken though to ensure that state check and compute functions for these added states are all called, and derived state in other objects all updated. Again the recommendation is to just call check helpers until a maximal configuration is reached.”h]”hX…This function is also allowed to inspect any other object’s state and can add more state objects to the atomic commit if needed. Care must be taken though to ensure that state check and compute functions for these added states are all called, and derived state in other objects all updated. Again the recommendation is to just call check helpers until a maximal configuration is reached.”…”�”}”(hj!8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mhjî7ubhÎ)�”}”(hŒHThis callback is used by the atomic modeset helpers, but it is optional.”h]”hŒHThis callback is used by the atomic modeset helpers, but it is optional.”…”�”}”(hj08h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mhjî7ubhÎ)�”}”(hŒNOTE:”h]”hŒNOTE:”…”�”}”(hj?8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mhjî7ubhÎ)�”}”(hŒ²This function is called in the check phase of an atomic update. The driver is not allowed to change anything outside of the :c:type:`drm_atomic_commit` update tracking structure.”h]”(hŒ|This function is called in the check phase of an atomic update. The driver is not allowed to change anything outside of the ”…”�”}”(hjN8h²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_atomic_commit`”h]”jˆ )�”}”(hjX8h]”hŒdrm_atomic_commit”…”�”}”(hjZ8h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjV8ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_atomic_commit”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MhjN8ubhŒ update tracking structure.”…”�”}”(hjN8h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³ju8h´Mhjî7ubhÎ)�”}”(hŒRETURNS:”h]”hŒRETURNS:”…”�”}”(hj€8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mhjî7ubhÎ)�”}”(hŒ×0 on success, -EINVAL if the state or the transition can't be supported, -ENOMEM on memory allocation failure and -EDEADLK if an attempt to obtain another state object ran into a :c:type:`drm_modeset_lock` deadlock.”h]”(hŒµ0 on success, -EINVAL if the state or the transition can’t be supported, -ENOMEM on memory allocation failure and -EDEADLK if an attempt to obtain another state object ran into a ”…”�”}”(hj�8h²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_modeset_lock`”h]”jˆ )�”}”(hj™8h]”hŒdrm_modeset_lock”…”�”}”(hj›8h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj—8ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_modeset_lock”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mhj�8ubhŒ deadlock.”…”�”}”(hj�8h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¶8h´Mhjî7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÒ7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jí7h´Mhj_4ubj| )�”}”(hX8``atomic_update`` Drivers should use this function to update the plane state. This hook is called in-between the :c:type:`drm_crtc_helper_funcs.atomic_begin ` and drm_crtc_helper_funcs.atomic_flush callbacks. Note that the power state of the display pipe when this function is called depends upon the exact helpers and calling sequence the driver has picked. See drm_atomic_helper_commit_planes() for a discussion of the tradeoffs and variants of plane commit helpers. This callback is used by the atomic modeset helpers, but it is optional. ”h]”(j‚ )�”}”(hŒ``atomic_update``”h]”jˆ )�”}”(hjÓ8h]”hŒ atomic_update”…”�”}”(hjÕ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÑ8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M-hjÍ8ubjž )�”}”(hhh]”(hÎ)�”}”(hŒÖDrivers should use this function to update the plane state. This hook is called in-between the :c:type:`drm_crtc_helper_funcs.atomic_begin ` and drm_crtc_helper_funcs.atomic_flush callbacks.”h]”(hŒ`Drivers should use this function to update the plane state. This hook is called in-between the ”…”�”}”(hjì8h²hh³Nh´Nubh)�”}”(hŒD:c:type:`drm_crtc_helper_funcs.atomic_begin `”h]”jˆ )�”}”(hjö8h]”hŒ"drm_crtc_helper_funcs.atomic_begin”…”�”}”(hjø8h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjô8ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_crtc_helper_funcs”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M$hjì8ubhŒ2 and drm_crtc_helper_funcs.atomic_flush callbacks.”…”�”}”(hjì8h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j9h´M$hjé8ubhÎ)�”}”(hXNote that the power state of the display pipe when this function is called depends upon the exact helpers and calling sequence the driver has picked. See drm_atomic_helper_commit_planes() for a discussion of the tradeoffs and variants of plane commit helpers.”h]”hXNote that the power state of the display pipe when this function is called depends upon the exact helpers and calling sequence the driver has picked. See drm_atomic_helper_commit_planes() for a discussion of the tradeoffs and variants of plane commit helpers.”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M(hjé8ubhÎ)�”}”(hŒHThis callback is used by the atomic modeset helpers, but it is optional.”h]”hŒHThis callback is used by the atomic modeset helpers, but it is optional.”…”�”}”(hj-9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jè8h´M-hjé8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÍ8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jè8h´M-hj_4ubj| )�”}”(hXB``atomic_enable`` Drivers should use this function to unconditionally enable a plane. This hook is called in-between the :c:type:`drm_crtc_helper_funcs.atomic_begin ` and drm_crtc_helper_funcs.atomic_flush callbacks. It is called after **atomic_update**, which will be called for all enabled planes. Drivers that use **atomic_enable** should set up a plane in **atomic_update** and afterwards enable the plane in **atomic_enable**. If a plane needs to be enabled before installing the scanout buffer, drivers can still do so in **atomic_update**. Note that the power state of the display pipe when this function is called depends upon the exact helpers and calling sequence the driver has picked. See drm_atomic_helper_commit_planes() for a discussion of the tradeoffs and variants of plane commit helpers. This callback is used by the atomic modeset helpers, but it is optional. If implemented, **atomic_enable** should be the inverse of **atomic_disable**. Drivers that don't want to use either can still implement the complete plane update in **atomic_update**. ”h]”(j‚ )�”}”(hŒ``atomic_enable``”h]”jˆ )�”}”(hjM9h]”hŒ atomic_enable”…”�”}”(hjO9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjK9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MFhjG9ubjž )�”}”(hhh]”(hÎ)�”}”(hX'Drivers should use this function to unconditionally enable a plane. This hook is called in-between the :c:type:`drm_crtc_helper_funcs.atomic_begin ` and drm_crtc_helper_funcs.atomic_flush callbacks. It is called after **atomic_update**, which will be called for all enabled planes. Drivers that use **atomic_enable** should set up a plane in **atomic_update** and afterwards enable the plane in **atomic_enable**. If a plane needs to be enabled before installing the scanout buffer, drivers can still do so in **atomic_update**.”h]”(hŒgDrivers should use this function to unconditionally enable a plane. This hook is called in-between the ”…”�”}”(hjf9h²hh³Nh´Nubh)�”}”(hŒD:c:type:`drm_crtc_helper_funcs.atomic_begin `”h]”jˆ )�”}”(hjp9h]”hŒ"drm_crtc_helper_funcs.atomic_begin”…”�”}”(hjr9h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjn9ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_crtc_helper_funcs”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M5hjf9ubhŒF and drm_crtc_helper_funcs.atomic_flush callbacks. It is called after ”…”�”}”(hjf9h²hh³Nh´Nubj3 )�”}”(hŒ**atomic_update**”h]”hŒ atomic_update”…”�”}”(hj’9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjf9ubhŒ@, which will be called for all enabled planes. Drivers that use ”…”�”}”(hjf9h²hh³Nh´Nubj3 )�”}”(hŒ**atomic_enable**”h]”hŒ atomic_enable”…”�”}”(hj¤9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjf9ubhŒ should set up a plane in ”…”�”}”(hjf9h²hh³Nh´Nubj3 )�”}”(hŒ**atomic_update**”h]”hŒ atomic_update”…”�”}”(hj¶9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjf9ubhŒ$ and afterwards enable the plane in ”…”�”}”(hjf9h²hh³Nh´Nubj3 )�”}”(hŒ**atomic_enable**”h]”hŒ atomic_enable”…”�”}”(hjÈ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjf9ubhŒb. If a plane needs to be enabled before installing the scanout buffer, drivers can still do so in ”…”�”}”(hjf9h²hh³Nh´Nubj3 )�”}”(hŒ**atomic_update**”h]”hŒ atomic_update”…”�”}”(hjÚ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjf9ubhŒ.”…”�”}”(hjf9h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j�9h´M5hjc9ubhÎ)�”}”(hXNote that the power state of the display pipe when this function is called depends upon the exact helpers and calling sequence the driver has picked. See drm_atomic_helper_commit_planes() for a discussion of the tradeoffs and variants of plane commit helpers.”h]”hXNote that the power state of the display pipe when this function is called depends upon the exact helpers and calling sequence the driver has picked. See drm_atomic_helper_commit_planes() for a discussion of the tradeoffs and variants of plane commit helpers.”…”�”}”(hjò9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M>hjc9ubhÎ)�”}”(hXThis callback is used by the atomic modeset helpers, but it is optional. If implemented, **atomic_enable** should be the inverse of **atomic_disable**. Drivers that don't want to use either can still implement the complete plane update in **atomic_update**.”h]”(hŒYThis callback is used by the atomic modeset helpers, but it is optional. If implemented, ”…”�”}”(hj:h²hh³Nh´Nubj3 )�”}”(hŒ**atomic_enable**”h]”hŒ atomic_enable”…”�”}”(hj :h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj:ubhŒ should be the inverse of ”…”�”}”(hj:h²hh³Nh´Nubj3 )�”}”(hŒ**atomic_disable**”h]”hŒatomic_disable”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj:ubhŒ[. Drivers that don’t want to use either can still implement the complete plane update in ”…”�”}”(hj:h²hh³Nh´Nubj3 )�”}”(hŒ**atomic_update**”h]”hŒ atomic_update”…”�”}”(hj-:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj:ubhŒ.”…”�”}”(hj:h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MChjc9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjG9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jb9h´MFhj_4ubj| )�”}”(hX×``atomic_disable`` Drivers should use this function to unconditionally disable a plane. This hook is called in-between the :c:type:`drm_crtc_helper_funcs.atomic_begin ` and drm_crtc_helper_funcs.atomic_flush callbacks. It is an alternative to **atomic_update**, which will be called for disabling planes, too, if the **atomic_disable** hook isn't implemented. This hook is also useful to disable planes in preparation of a modeset, by calling drm_atomic_helper_disable_planes_on_crtc() from the :c:type:`drm_crtc_helper_funcs.disable ` hook. Note that the power state of the display pipe when this function is called depends upon the exact helpers and calling sequence the driver has picked. See drm_atomic_helper_commit_planes() for a discussion of the tradeoffs and variants of plane commit helpers. This callback is used by the atomic modeset helpers, but it is optional. It's intended to reverse the effects of **atomic_enable**. ”h]”(j‚ )�”}”(hŒ``atomic_disable``”h]”jˆ )�”}”(hjX:h]”hŒatomic_disable”…”�”}”(hjZ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjV:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M_hjR:ubjž )�”}”(hhh]”(hÎ)�”}”(hXkDrivers should use this function to unconditionally disable a plane. This hook is called in-between the :c:type:`drm_crtc_helper_funcs.atomic_begin ` and drm_crtc_helper_funcs.atomic_flush callbacks. It is an alternative to **atomic_update**, which will be called for disabling planes, too, if the **atomic_disable** hook isn't implemented.”h]”(hŒhDrivers should use this function to unconditionally disable a plane. This hook is called in-between the ”…”�”}”(hjq:h²hh³Nh´Nubh)�”}”(hŒD:c:type:`drm_crtc_helper_funcs.atomic_begin `”h]”jˆ )�”}”(hj{:h]”hŒ"drm_crtc_helper_funcs.atomic_begin”…”�”}”(hj}:h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjy:ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_crtc_helper_funcs”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MNhjq:ubhŒK and drm_crtc_helper_funcs.atomic_flush callbacks. It is an alternative to ”…”�”}”(hjq:h²hh³Nh´Nubj3 )�”}”(hŒ**atomic_update**”h]”hŒ atomic_update”…”�”}”(hj�:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjq:ubhŒ9, which will be called for disabling planes, too, if the ”…”�”}”(hjq:h²hh³Nh´Nubj3 )�”}”(hŒ**atomic_disable**”h]”hŒatomic_disable”…”�”}”(hj¯:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjq:ubhŒ hook isn’t implemented.”…”�”}”(hjq:h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j˜:h´MNhjn:ubhÎ)�”}”(hŒÌThis hook is also useful to disable planes in preparation of a modeset, by calling drm_atomic_helper_disable_planes_on_crtc() from the :c:type:`drm_crtc_helper_funcs.disable ` hook.”h]”(hŒ‡This hook is also useful to disable planes in preparation of a modeset, by calling drm_atomic_helper_disable_planes_on_crtc() from the ”…”�”}”(hjÇ:h²hh³Nh´Nubh)�”}”(hŒ?:c:type:`drm_crtc_helper_funcs.disable `”h]”jˆ )�”}”(hjÑ:h]”hŒdrm_crtc_helper_funcs.disable”…”�”}”(hjÓ:h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÏ:ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_crtc_helper_funcs”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MUhjÇ:ubhŒ hook.”…”�”}”(hjÇ:h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jî:h´MUhjn:ubhÎ)�”}”(hXNote that the power state of the display pipe when this function is called depends upon the exact helpers and calling sequence the driver has picked. See drm_atomic_helper_commit_planes() for a discussion of the tradeoffs and variants of plane commit helpers.”h]”hXNote that the power state of the display pipe when this function is called depends upon the exact helpers and calling sequence the driver has picked. See drm_atomic_helper_commit_planes() for a discussion of the tradeoffs and variants of plane commit helpers.”…”�”}”(hjù:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MYhjn:ubhÎ)�”}”(hŒƒThis callback is used by the atomic modeset helpers, but it is optional. It's intended to reverse the effects of **atomic_enable**.”h]”(hŒsThis callback is used by the atomic modeset helpers, but it is optional. It’s intended to reverse the effects of ”…”�”}”(hj;h²hh³Nh´Nubj3 )�”}”(hŒ**atomic_enable**”h]”hŒ atomic_enable”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj;ubhŒ.”…”�”}”(hj;h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M^hjn:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjR:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jm:h´M_hj_4ubj| )�”}”(hX¹``atomic_async_check`` Drivers should set this function pointer to check if the plane's atomic state can be updated in a async fashion. Here async means "not vblank synchronized". This hook is called by drm_atomic_async_check() to establish if a given update can be committed asynchronously, that is, if it can jump ahead of the state currently queued for update. This function is also used by drm_atomic_set_property() to determine if the plane can be flipped in async. The flip flag is used to distinguish if the function is used for just the plane state or for a flip. RETURNS: Return 0 on success and any error returned indicates that the update can not be applied in asynchronous manner. ”h]”(j‚ )�”}”(hŒ``atomic_async_check``”h]”jˆ )�”}”(hj;;h]”hŒatomic_async_check”…”�”}”(hj=;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj9;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mwhj5;ubjž )�”}”(hhh]”(hÎ)�”}”(hŒœDrivers should set this function pointer to check if the plane's atomic state can be updated in a async fashion. Here async means "not vblank synchronized".”h]”hŒ¢Drivers should set this function pointer to check if the plane’s atomic state can be updated in a async fashion. Here async means “not vblank synchronizedâ€�.”…”�”}”(hjT;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MghjQ;ubhÎ)�”}”(hŒ·This hook is called by drm_atomic_async_check() to establish if a given update can be committed asynchronously, that is, if it can jump ahead of the state currently queued for update.”h]”hŒ·This hook is called by drm_atomic_async_check() to establish if a given update can be committed asynchronously, that is, if it can jump ahead of the state currently queued for update.”…”�”}”(hjc;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MkhjQ;ubhÎ)�”}”(hŒÏThis function is also used by drm_atomic_set_property() to determine if the plane can be flipped in async. The flip flag is used to distinguish if the function is used for just the plane state or for a flip.”h]”hŒÏThis function is also used by drm_atomic_set_property() to determine if the plane can be flipped in async. The flip flag is used to distinguish if the function is used for just the plane state or for a flip.”…”�”}”(hjr;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MohjQ;ubhÎ)�”}”(hŒRETURNS:”h]”hŒRETURNS:”…”�”}”(hj�;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MthjQ;ubhÎ)�”}”(hŒoReturn 0 on success and any error returned indicates that the update can not be applied in asynchronous manner.”h]”hŒoReturn 0 on success and any error returned indicates that the update can not be applied in asynchronous manner.”…”�”}”(hj�;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MvhjQ;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj5;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jP;h´Mwhj_4ubj| )�”}”(hX<``atomic_async_update`` Drivers should set this function pointer to perform asynchronous updates of planes, that is, jump ahead of the currently queued state and update the plane. Here async means "not vblank synchronized". This hook is called by drm_atomic_helper_async_commit(). An async update will happen on legacy cursor updates. An async update won't happen if there is an outstanding commit modifying the same plane. When doing async_update drivers shouldn't replace the :c:type:`drm_plane_state` but update the current one with the new plane configurations in the new plane_state. Drivers should also swap the framebuffers between current plane state (:c:type:`drm_plane.state `) and new_state. This is required since cleanup for async commits is performed on the new state, rather than old state like for traditional commits. Since we want to give up the reference on the current (old) fb instead of our brand new one, swap them in the driver during the async commit. FIXME: - It only works for single plane updates - Async Pageflips are not supported yet - Some hw might still scan out the old buffer until the next vblank, however we let go of the fb references as soon as we run this hook. For now drivers must implement their own workers for deferring if needed, until a common solution is created. ”h]”(j‚ )�”}”(hŒ``atomic_async_update``”h]”jˆ )�”}”(hj±;h]”hŒatomic_async_update”…”�”}”(hj³;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¯;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Mœhj«;ubjž )�”}”(hhh]”(hÎ)�”}”(hŒÇDrivers should set this function pointer to perform asynchronous updates of planes, that is, jump ahead of the currently queued state and update the plane. Here async means "not vblank synchronized".”h]”hŒËDrivers should set this function pointer to perform asynchronous updates of planes, that is, jump ahead of the currently queued state and update the plane. Here async means “not vblank synchronizedâ€�.”…”�”}”(hjÊ;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MhjÇ;ubhÎ)�”}”(hŒ8This hook is called by drm_atomic_helper_async_commit().”h]”hŒ8This hook is called by drm_atomic_helper_async_commit().”…”�”}”(hjÙ;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M„hjÇ;ubhÎ)�”}”(hŒŽAn async update will happen on legacy cursor updates. An async update won't happen if there is an outstanding commit modifying the same plane.”h]”hŒ�An async update will happen on legacy cursor updates. An async update won’t happen if there is an outstanding commit modifying the same plane.”…”�”}”(hjè;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M†hjÇ;ubhÎ)�”}”(hŒ¤When doing async_update drivers shouldn't replace the :c:type:`drm_plane_state` but update the current one with the new plane configurations in the new plane_state.”h]”(hŒ8When doing async_update drivers shouldn’t replace the ”…”�”}”(hj÷;h²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_plane_state`”h]”jˆ )�”}”(hj<h]”hŒdrm_plane_state”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÿ;ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_plane_state”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MŠhj÷;ubhŒU but update the current one with the new plane configurations in the new plane_state.”…”�”}”(hj÷;h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j<h´MŠhjÇ;ubhÎ)�”}”(hXŽDrivers should also swap the framebuffers between current plane state (:c:type:`drm_plane.state `) and new_state. This is required since cleanup for async commits is performed on the new state, rather than old state like for traditional commits. Since we want to give up the reference on the current (old) fb instead of our brand new one, swap them in the driver during the async commit.”h]”(hŒGDrivers should also swap the framebuffers between current plane state (”…”�”}”(hj)<h²hh³Nh´Nubh)�”}”(hŒ%:c:type:`drm_plane.state `”h]”jˆ )�”}”(hj3<h]”hŒdrm_plane.state”…”�”}”(hj5<h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj1<ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_plane”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MŽhj)<ubhX") and new_state. This is required since cleanup for async commits is performed on the new state, rather than old state like for traditional commits. Since we want to give up the reference on the current (old) fb instead of our brand new one, swap them in the driver during the async commit.”…”�”}”(hj)<h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jP<h´MŽhjÇ;ubjw )�”}”(hhh]”j| )�”}”(hXUFIXME: - It only works for single plane updates - Async Pageflips are not supported yet - Some hw might still scan out the old buffer until the next vblank, however we let go of the fb references as soon as we run this hook. For now drivers must implement their own workers for deferring if needed, until a common solution is created. ”h]”(j‚ )�”}”(hŒFIXME:”h]”hŒFIXME:”…”�”}”(hjb<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³jÆ;h´Mœhj^<ubjž )�”}”(hhh]”hú)�”}”(hhh]”(hÿ)�”}”(hŒ&It only works for single plane updates”h]”hÎ)�”}”(hjx<h]”hŒ&It only works for single plane updates”…”�”}”(hjz<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M—hjv<ubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjs<ubhÿ)�”}”(hŒ%Async Pageflips are not supported yet”h]”hÎ)�”}”(hj�<h]”hŒ%Async Pageflips are not supported yet”…”�”}”(hj’<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M˜hjŽ<ubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjs<ubhÿ)�”}”(hŒõSome hw might still scan out the old buffer until the next vblank, however we let go of the fb references as soon as we run this hook. For now drivers must implement their own workers for deferring if needed, until a common solution is created. ”h]”hÎ)�”}”(hŒôSome hw might still scan out the old buffer until the next vblank, however we let go of the fb references as soon as we run this hook. For now drivers must implement their own workers for deferring if needed, until a common solution is created.”h]”hŒôSome hw might still scan out the old buffer until the next vblank, however we let go of the fb references as soon as we run this hook. For now drivers must implement their own workers for deferring if needed, until a common solution is created.”…”�”}”(hjª<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M™hj¦<ubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjs<ubeh}”(h]”h ]”h"]”h$]”h&]”jNŒ-”uh1hùh³j‡<h´M—hjp<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj^<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÆ;h´Mœhj[<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÇ;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj«;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÆ;h´Mœhj_4ubj| )�”}”(hXŠ``get_scanout_buffer`` Get the current scanout buffer, to display a message with drm_panic. The driver should do the minimum changes to provide a buffer, that can be used to display the panic screen. Currently only linear buffers are supported. Non-linear buffer support is on the TODO list. The device :c:type:`dev.mode_config `.panic_lock is taken before calling this function, so you can safely access the :c:type:`plane.state ` It is called from a panic callback, and must follow its restrictions. Please look the documentation at drm_panic_trylock() for an in-depth discussions of what's safe and what is not allowed. It's a best effort mode, so it's expected that in some complex cases the panic screen won't be displayed. The returned :c:type:`drm_scanout_buffer.map ` must be valid if no error code is returned. Return: ``0`` on success, negative errno on failure. ”h]”(j‚ )�”}”(hŒ``get_scanout_buffer``”h]”jˆ )�”}”(hjê<h]”hŒget_scanout_buffer”…”�”}”(hjì<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjè<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M³hjä<ubjž )�”}”(hhh]”(hÎ)�”}”(hX<Get the current scanout buffer, to display a message with drm_panic. The driver should do the minimum changes to provide a buffer, that can be used to display the panic screen. Currently only linear buffers are supported. Non-linear buffer support is on the TODO list. The device :c:type:`dev.mode_config `.panic_lock is taken before calling this function, so you can safely access the :c:type:`plane.state ` It is called from a panic callback, and must follow its restrictions. Please look the documentation at drm_panic_trylock() for an in-depth discussions of what's safe and what is not allowed. It's a best effort mode, so it's expected that in some complex cases the panic screen won't be displayed. The returned :c:type:`drm_scanout_buffer.map ` must be valid if no error code is returned.”h]”(hXGet the current scanout buffer, to display a message with drm_panic. The driver should do the minimum changes to provide a buffer, that can be used to display the panic screen. Currently only linear buffers are supported. Non-linear buffer support is on the TODO list. The device ”…”�”}”(hj=h²hh³Nh´Nubh)�”}”(hŒ:c:type:`dev.mode_config `”h]”jˆ )�”}”(hj =h]”hŒdev.mode_config”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj =ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdev”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M¤hj=ubhŒP.panic_lock is taken before calling this function, so you can safely access the ”…”�”}”(hj=h²hh³Nh´Nubh)�”}”(hŒ:c:type:`plane.state `”h]”jˆ )�”}”(hj1=h]”hŒ plane.state”…”�”}”(hj3=h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj/=ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œplane”uh1hh³j*=h´M¤hj=ubhX? It is called from a panic callback, and must follow its restrictions. Please look the documentation at drm_panic_trylock() for an in-depth discussions of what’s safe and what is not allowed. It’s a best effort mode, so it’s expected that in some complex cases the panic screen won’t be displayed. The returned ”…”�”}”(hj=h²hh³Nh´Nubh)�”}”(hŒ5:c:type:`drm_scanout_buffer.map `”h]”jˆ )�”}”(hjT=h]”hŒdrm_scanout_buffer.map”…”�”}”(hjV=h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjR=ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_scanout_buffer”uh1hh³j*=h´M¤hj=ubhŒ, must be valid if no error code is returned.”…”�”}”(hj=h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j*=h´M¤hj=ubhÎ)�”}”(hŒ4Return: ``0`` on success, negative errno on failure.”h]”(hŒReturn: ”…”�”}”(hj{=h²hh³Nh´Nubjˆ )�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hjƒ=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj{=ubhŒ' on success, negative errno on failure.”…”�”}”(hj{=h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M²hj=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjä<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÿ<h´M³hj_4ubj| )�”}”(hX3``panic_flush`` It is used by drm_panic, and is called after the panic screen is drawn to the scanout buffer. In this function, the driver can send additional commands to the hardware, to make the scanout buffer visible. It is only called if get_scanout_buffer() returned successfully, and the :c:type:`dev.mode_config `.panic_lock is held during the entire sequence. It is called from a panic callback, and must follow its restrictions. Please look the documentation at drm_panic_trylock() for an in-depth discussions of what's safe and what is not allowed.”h]”(j‚ )�”}”(hŒ``panic_flush``”h]”jˆ )�”}”(hj®=h]”hŒ panic_flush”…”�”}”(hj°=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¬=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MÂhj¨=ubjž )�”}”(hhh]”hÎ)�”}”(hX#It is used by drm_panic, and is called after the panic screen is drawn to the scanout buffer. In this function, the driver can send additional commands to the hardware, to make the scanout buffer visible. It is only called if get_scanout_buffer() returned successfully, and the :c:type:`dev.mode_config `.panic_lock is held during the entire sequence. It is called from a panic callback, and must follow its restrictions. Please look the documentation at drm_panic_trylock() for an in-depth discussions of what's safe and what is not allowed.”h]”(hXIt is used by drm_panic, and is called after the panic screen is drawn to the scanout buffer. In this function, the driver can send additional commands to the hardware, to make the scanout buffer visible. It is only called if get_scanout_buffer() returned successfully, and the ”…”�”}”(hjÇ=h²hh³Nh´Nubh)�”}”(hŒ:c:type:`dev.mode_config `”h]”jˆ )�”}”(hjÑ=h]”hŒdev.mode_config”…”�”}”(hjÓ=h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÏ=ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdev”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M»hjÇ=ubhŒð.panic_lock is held during the entire sequence. It is called from a panic callback, and must follow its restrictions. Please look the documentation at drm_panic_trylock() for an in-depth discussions of what’s safe and what is not allowed.”…”�”}”(hjÇ=h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jî=h´M»hjÄ=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¨=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÃ=h´MÂhj_4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj4ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjH h²hh³j— h´NubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj>h]”hŒ Description”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MÆhjH h²hubhÎ)�”}”(hŒ/These functions are used by the atomic helpers.”h]”hŒ/These functions are used by the atomic helpers.”…”�”}”(hj*>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M¢hjH h²hubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ!drm_plane_helper_add (C function)”Œc.drm_plane_helper_add”hNt”auh1j† hjH h²hh³j— h´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ_void drm_plane_helper_add (struct drm_plane *plane, const struct drm_plane_helper_funcs *funcs)”h]”j¤ )�”}”(hŒ^void drm_plane_helper_add(struct drm_plane *plane, const struct drm_plane_helper_funcs *funcs)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjR>h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjN>h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MÊubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hja>h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjN>h²hh³j`>h´MÊubjÍ )�”}”(hŒdrm_plane_helper_add”h]”jÓ )�”}”(hŒdrm_plane_helper_add”h]”hŒdrm_plane_helper_add”…”�”}”(hjs>h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjo>ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjN>h²hh³j`>h´MÊubjÞ)�”}”(hŒE(struct drm_plane *plane, const struct drm_plane_helper_funcs *funcs)”h]”(jä)�”}”(hŒstruct drm_plane *plane”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Œ drm_plane”h]”hŒ drm_plane”…”�”}”(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%)�”}”jju>sbŒc.drm_plane_helper_add”†”asbuh1hhj‹>ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍ>h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj‹>ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÛ>h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‹>ubjÓ )�”}”(hŒplane”h]”hŒplane”…”�”}”(hjè>h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj‹>ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj‡>ubjä)�”}”(hŒ*const struct drm_plane_helper_funcs *funcs”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(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Œdrm_plane_helper_funcs”h]”hŒdrm_plane_helper_funcs”…”�”}”(hj:?h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj7?ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jŒc.drm_plane_helper_add”†”asbuh1hhjý>ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjX?h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjý>ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjf?h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjý>ubjÓ )�”}”(hŒfuncs”h]”hŒfuncs”…”�”}”(hjs?h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjý>ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj‡>ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjN>h²hh³j`>h´MÊubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjJ>h²hh³j`>h´MÊubah}”(h]”jE>ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j`>h´MÊhjG>h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ"sets the helper vtable for a plane”h]”hŒ"sets the helper vtable for a plane”…”�”}”(hj�?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MÊhjš?h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjG>h²hh³j`>h´MÊubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jµ?j$ jµ?j% ‰j& ‰j' ‰uh1j˜ h²hhjH h³j— h´Nubj) )�”}”(hŒŒ**Parameters** ``struct drm_plane *plane`` DRM plane ``const struct drm_plane_helper_funcs *funcs`` helper vtable to set for **plane**”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj¿?h]”hŒ Parameters”…”�”}”(hjÁ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj½?ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MÎhj¹?ubjw )�”}”(hhh]”(j| )�”}”(hŒ&``struct drm_plane *plane`` DRM plane ”h]”(j‚ )�”}”(hŒ``struct drm_plane *plane``”h]”jˆ )�”}”(hjÞ?h]”hŒstruct drm_plane *plane”…”�”}”(hjà?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÜ?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MËhjØ?ubjž )�”}”(hhh]”hÎ)�”}”(hŒ DRM plane”h]”hŒ DRM plane”…”�”}”(hj÷?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jó?h´MËhjô?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjØ?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jó?h´MËhjÕ?ubj| )�”}”(hŒQ``const struct drm_plane_helper_funcs *funcs`` helper vtable to set for **plane**”h]”(j‚ )�”}”(hŒ.``const struct drm_plane_helper_funcs *funcs``”h]”jˆ )�”}”(hj@h]”hŒ*const struct drm_plane_helper_funcs *funcs”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MÍhj@ubjž )�”}”(hhh]”hÎ)�”}”(hŒ"helper vtable to set for **plane**”h]”(hŒhelper vtable to set for ”…”�”}”(hj0@h²hh³Nh´Nubj3 )�”}”(hŒ **plane**”h]”hŒplane”…”�”}”(hj8@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj0@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MÌhj-@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j,@h´MÍhjÕ?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj¹?ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjH h²hh³j— h´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ'drm_mode_config_helper_funcs (C struct)”Œc.drm_mode_config_helper_funcs”hNt”auh1j† hjH h²hh³j— h´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒdrm_mode_config_helper_funcs”h]”j¤ )�”}”(hŒ#struct drm_mode_config_helper_funcs”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj{@h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”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Œdrm_mode_config_helper_funcs”h]”jÓ )�”}”(hjy@h]”hŒdrm_mode_config_helper_funcs”…”�”}”(hjŸ@h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj›@ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj{@h²hh³jŒ@h´MÑubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjw@h²hh³jŒ@h´MÑubah}”(h]”jr@ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jŒ@h´MÑhjt@h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ global modeset helper operations”h]”hŒ global modeset helper operations”…”�”}”(hjÁ@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MÕhj¾@h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjt@h²hh³jŒ@h´MÑubeh}”(h]”h ]”(j Œstruct”eh"]”h$]”h&]”j" j j# jÙ@j$ jÙ@j% ‰j& ‰j' ‰uh1j˜ h²hhjH h³j— h´Nubj) )�”}”(hXP **Definition**:: struct drm_mode_config_helper_funcs { void (*atomic_commit_tail)(struct drm_atomic_commit *state); int (*atomic_commit_setup)(struct drm_atomic_commit *state); }; **Members** ``atomic_commit_tail`` This hook is used by the default atomic_commit() hook implemented in drm_atomic_helper_commit() together with the nonblocking commit helpers (see drm_atomic_helper_setup_commit() for a starting point) to implement blocking and nonblocking commits easily. It is not used by the atomic helpers This function is called when the new atomic state has already been swapped into the various state pointers. The passed in state therefore contains copies of the old/previous state. This hook should commit the new state into hardware. Note that the helpers have already waited for preceding atomic commits and fences, but drivers can add more waiting calls at the start of their implementation, e.g. to wait for driver-internal request for implicit syncing, before starting to commit the update to the hardware. After the atomic update is committed to the hardware this hook needs to call drm_atomic_helper_commit_hw_done(). Then wait for the update to be executed by the hardware, for example using drm_atomic_helper_wait_for_vblanks() or drm_atomic_helper_wait_for_flip_done(), and then clean up the old framebuffers using drm_atomic_helper_cleanup_planes(). When disabling a CRTC this hook _must_ stall for the commit to complete. Vblank waits don't work on disabled CRTC, hence the core can't take care of this. And it also can't rely on the vblank event, since that can be signalled already when the screen shows black, which can happen much earlier than the last hardware access needed to shut off the display pipeline completely. This hook is optional, the default implementation is drm_atomic_helper_commit_tail(). ``atomic_commit_setup`` This hook is used by the default atomic_commit() hook implemented in drm_atomic_helper_commit() together with the nonblocking helpers (see drm_atomic_helper_setup_commit()) to extend the DRM commit setup. It is not used by the atomic helpers. This function is called at the end of drm_atomic_helper_setup_commit(), so once the commit has been properly setup across the generic DRM object states. It allows drivers to do some additional commit tracking that isn't related to a CRTC, plane or connector, tracked in a :c:type:`drm_private_obj` structure. Note that the documentation of :c:type:`drm_private_obj` has more details on how one should implement this. This hook is optional.”h]”(hÎ)�”}”(hŒ**Definition**::”h]”(j3 )�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjå@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjá@ubhŒ:”…”�”}”(hjá@h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MÙhjÝ@ubjN )�”}”(hŒªstruct drm_mode_config_helper_funcs { void (*atomic_commit_tail)(struct drm_atomic_commit *state); int (*atomic_commit_setup)(struct drm_atomic_commit *state); };”h]”hŒªstruct drm_mode_config_helper_funcs { void (*atomic_commit_tail)(struct drm_atomic_commit *state); int (*atomic_commit_setup)(struct drm_atomic_commit *state); };”…”�”}”hjþ@sbah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jM h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MÛhjÝ@ubhÎ)�”}”(hŒ **Members**”h]”j3 )�”}”(hjAh]”hŒMembers”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj Aubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MàhjÝ@ubjw )�”}”(hhh]”(j| )�”}”(hXi``atomic_commit_tail`` This hook is used by the default atomic_commit() hook implemented in drm_atomic_helper_commit() together with the nonblocking commit helpers (see drm_atomic_helper_setup_commit() for a starting point) to implement blocking and nonblocking commits easily. It is not used by the atomic helpers This function is called when the new atomic state has already been swapped into the various state pointers. The passed in state therefore contains copies of the old/previous state. This hook should commit the new state into hardware. Note that the helpers have already waited for preceding atomic commits and fences, but drivers can add more waiting calls at the start of their implementation, e.g. to wait for driver-internal request for implicit syncing, before starting to commit the update to the hardware. After the atomic update is committed to the hardware this hook needs to call drm_atomic_helper_commit_hw_done(). Then wait for the update to be executed by the hardware, for example using drm_atomic_helper_wait_for_vblanks() or drm_atomic_helper_wait_for_flip_done(), and then clean up the old framebuffers using drm_atomic_helper_cleanup_planes(). When disabling a CRTC this hook _must_ stall for the commit to complete. Vblank waits don't work on disabled CRTC, hence the core can't take care of this. And it also can't rely on the vblank event, since that can be signalled already when the screen shows black, which can happen much earlier than the last hardware access needed to shut off the display pipeline completely. This hook is optional, the default implementation is drm_atomic_helper_commit_tail(). ”h]”(j‚ )�”}”(hŒ``atomic_commit_tail``”h]”jˆ )�”}”(hj.Ah]”hŒatomic_commit_tail”…”�”}”(hj0Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj,Aubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´Múhj(Aubjž )�”}”(hhh]”(hÎ)�”}”(hX#This hook is used by the default atomic_commit() hook implemented in drm_atomic_helper_commit() together with the nonblocking commit helpers (see drm_atomic_helper_setup_commit() for a starting point) to implement blocking and nonblocking commits easily. It is not used by the atomic helpers”h]”hX#This hook is used by the default atomic_commit() hook implemented in drm_atomic_helper_commit() together with the nonblocking commit helpers (see drm_atomic_helper_setup_commit() for a starting point) to implement blocking and nonblocking commits easily. It is not used by the atomic helpers”…”�”}”(hjGAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´•÷MÜhjDAubhÎ)�”}”(hXþThis function is called when the new atomic state has already been swapped into the various state pointers. The passed in state therefore contains copies of the old/previous state. This hook should commit the new state into hardware. Note that the helpers have already waited for preceding atomic commits and fences, but drivers can add more waiting calls at the start of their implementation, e.g. to wait for driver-internal request for implicit syncing, before starting to commit the update to the hardware.”h]”hXþThis function is called when the new atomic state has already been swapped into the various state pointers. The passed in state therefore contains copies of the old/previous state. This hook should commit the new state into hardware. Note that the helpers have already waited for preceding atomic commits and fences, but drivers can add more waiting calls at the start of their implementation, e.g. to wait for driver-internal request for implicit syncing, before starting to commit the update to the hardware.”…”�”}”(hjVAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MâhjDAubhÎ)�”}”(hX\After the atomic update is committed to the hardware this hook needs to call drm_atomic_helper_commit_hw_done(). Then wait for the update to be executed by the hardware, for example using drm_atomic_helper_wait_for_vblanks() or drm_atomic_helper_wait_for_flip_done(), and then clean up the old framebuffers using drm_atomic_helper_cleanup_planes().”h]”hX\After the atomic update is committed to the hardware this hook needs to call drm_atomic_helper_commit_hw_done(). Then wait for the update to be executed by the hardware, for example using drm_atomic_helper_wait_for_vblanks() or drm_atomic_helper_wait_for_flip_done(), and then clean up the old framebuffers using drm_atomic_helper_cleanup_planes().”…”�”}”(hjeAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MëhjDAubhÎ)�”}”(hXwWhen disabling a CRTC this hook _must_ stall for the commit to complete. Vblank waits don't work on disabled CRTC, hence the core can't take care of this. And it also can't rely on the vblank event, since that can be signalled already when the screen shows black, which can happen much earlier than the last hardware access needed to shut off the display pipeline completely.”h]”hX}When disabling a CRTC this hook _must_ stall for the commit to complete. Vblank waits don’t work on disabled CRTC, hence the core can’t take care of this. And it also can’t rely on the vblank event, since that can be signalled already when the screen shows black, which can happen much earlier than the last hardware access needed to shut off the display pipeline completely.”…”�”}”(hjtAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MòhjDAubhÎ)�”}”(hŒUThis hook is optional, the default implementation is drm_atomic_helper_commit_tail().”h]”hŒUThis hook is optional, the default implementation is drm_atomic_helper_commit_tail().”…”�”}”(hjƒAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MùhjDAubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj(Aubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jCAh´Múhj%Aubj| )�”}”(hXÅ``atomic_commit_setup`` This hook is used by the default atomic_commit() hook implemented in drm_atomic_helper_commit() together with the nonblocking helpers (see drm_atomic_helper_setup_commit()) to extend the DRM commit setup. It is not used by the atomic helpers. This function is called at the end of drm_atomic_helper_setup_commit(), so once the commit has been properly setup across the generic DRM object states. It allows drivers to do some additional commit tracking that isn't related to a CRTC, plane or connector, tracked in a :c:type:`drm_private_obj` structure. Note that the documentation of :c:type:`drm_private_obj` has more details on how one should implement this. This hook is optional.”h]”(j‚ )�”}”(hŒ``atomic_commit_setup``”h]”jˆ )�”}”(hj¤Ah]”hŒatomic_commit_setup”…”�”}”(hj¦Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¢Aubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MhjžAubjž )�”}”(hhh]”(hÎ)�”}”(hŒòThis hook is used by the default atomic_commit() hook implemented in drm_atomic_helper_commit() together with the nonblocking helpers (see drm_atomic_helper_setup_commit()) to extend the DRM commit setup. It is not used by the atomic helpers.”h]”hŒòThis hook is used by the default atomic_commit() hook implemented in drm_atomic_helper_commit() together with the nonblocking helpers (see drm_atomic_helper_setup_commit()) to extend the DRM commit setup. It is not used by the atomic helpers.”…”�”}”(hj½Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MhjºAubhÎ)�”}”(hX4This function is called at the end of drm_atomic_helper_setup_commit(), so once the commit has been properly setup across the generic DRM object states. It allows drivers to do some additional commit tracking that isn't related to a CRTC, plane or connector, tracked in a :c:type:`drm_private_obj` structure.”h]”(hXThis function is called at the end of drm_atomic_helper_setup_commit(), so once the commit has been properly setup across the generic DRM object states. It allows drivers to do some additional commit tracking that isn’t related to a CRTC, plane or connector, tracked in a ”…”�”}”(hjÌAh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_private_obj`”h]”jˆ )�”}”(hjÖAh]”hŒdrm_private_obj”…”�”}”(hjØAh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÔAubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_private_obj”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MhjÌAubhŒ structure.”…”�”}”(hjÌAh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jóAh´MhjºAubhÎ)�”}”(hŒkNote that the documentation of :c:type:`drm_private_obj` has more details on how one should implement this.”h]”(hŒNote that the documentation of ”…”�”}”(hjþAh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_private_obj`”h]”jˆ )�”}”(hjBh]”hŒdrm_private_obj”…”�”}”(hj Bh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjBubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_private_obj”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´M hjþAubhŒ3 has more details on how one should implement this.”…”�”}”(hjþAh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j%Bh´M hjºAubhÎ)�”}”(hŒThis hook is optional.”h]”hŒThis hook is optional.”…”�”}”(hj0Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MhjºAubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjžAubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¹Ah´Mhj%Aubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÝ@ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjH h²hh³j— h´NubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjZBh]”hŒ Description”…”�”}”(hj\Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjXBubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MhjH h²hubhÎ)�”}”(hŒ6These helper functions are used by the atomic helpers.”h]”hŒ6These helper functions are used by the atomic helpers.”…”�”}”(hjpBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:44: ./include/drm/drm_modeset_helper_vtables.h”h´MÖhjH h²hubhŒtarget”“”)�”}”(hŒ.. _drm_atomic_helper:”h]”h}”(h]”h ]”h"]”h$]”h&]”hÊŒdrm-atomic-helper”uh1jBh´K/hjH h²hh³hÌubeh}”(h]”jœah ]”h"]”Œ+modeset helper reference for common vtables”ah$]”h&]”uh1hµhh·h²hh³hÌh´K'ubh¶)�”}”(hhh]”(h»)�”}”(hŒ)Atomic Modeset Helper Functions Reference”h]”hŒ)Atomic Modeset Helper Functions Reference”…”�”}”(hj–Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÊj¸uh1hºhj“Bh²hh³hÌh´K2ubh¶)�”}”(hhh]”(h»)�”}”(hŒOverview”h]”hŒOverview”…”�”}”(hj§Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÊj×uh1hºhj¤Bh²hh³hÌh´K5ubhÎ)�”}”(hXXThis helper library provides implementations of check and commit functions on top of the CRTC modeset helper callbacks and the plane helper callbacks. It also provides convenience implementations for the atomic state handling callbacks for drivers which don't need to subclass the drm core structures to add their own additional internal state.”h]”hXZThis helper library provides implementations of check and commit functions on top of the CRTC modeset helper callbacks and the plane helper callbacks. It also provides convenience implementations for the atomic state handling callbacks for drivers which don’t need to subclass the drm core structures to add their own additional internal state.”…”�”}”(hjµBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:55: ./drivers/gpu/drm/drm_atomic_helper.c”h´K6hj¤Bh²hubhÎ)�”}”(hXTThis library also provides default implementations for the check callback in drm_atomic_helper_check() and for the commit callback with drm_atomic_helper_commit(). But the individual stages and callbacks are exposed to allow drivers to mix and match and e.g. use the plane helpers only together with a driver private modeset implementation.”h]”hXTThis library also provides default implementations for the check callback in drm_atomic_helper_check() and for the commit callback with drm_atomic_helper_commit(). But the individual stages and callbacks are exposed to allow drivers to mix and match and e.g. use the plane helpers only together with a driver private modeset implementation.”…”�”}”(hjÄBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:55: ./drivers/gpu/drm/drm_atomic_helper.c”h´K`, struct :c:type:`drm_encoder_helper_funcs` and :c:type:`struct drm_connector_helper_funcs `. It also shares the :c:type:`struct drm_plane_helper_funcs ` function table with the plane helpers.”h]”(hŒvThe atomic helper uses the same function table structures as all other modesetting helpers. See the documentation for ”…”�”}”(hjâBh²hh³Nh´Nubh)�”}”(hŒ>:c:type:`struct drm_crtc_helper_funcs `”h]”jˆ )�”}”(hjìBh]”hŒstruct drm_crtc_helper_funcs”…”�”}”(hjîBh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjêBubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_crtc_helper_funcs”uh1hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:55: ./drivers/gpu/drm/drm_atomic_helper.c”h´KHhjâBubhŒ , struct ”…”�”}”(hjâBh²hh³Nh´Nubh)�”}”(hŒ":c:type:`drm_encoder_helper_funcs`”h]”jˆ )�”}”(hjCh]”hŒdrm_encoder_helper_funcs”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjCubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_encoder_helper_funcs”uh1hh³j Ch´KHhjâBubhŒ and ”…”�”}”(hjâBh²hh³Nh´Nubh)�”}”(hŒH:c:type:`struct drm_connector_helper_funcs `”h]”jˆ )�”}”(hj3Ch]”hŒ!struct drm_connector_helper_funcs”…”�”}”(hj5Ch²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj1Cubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_connector_helper_funcs”uh1hh³j Ch´KHhjâBubhŒ. It also shares the ”…”�”}”(hjâBh²hh³Nh´Nubh)�”}”(hŒ@:c:type:`struct drm_plane_helper_funcs `”h]”jˆ )�”}”(hjVCh]”hŒstruct drm_plane_helper_funcs”…”�”}”(hjXCh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjTCubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_plane_helper_funcs”uh1hh³j Ch´KHhjâBubhŒ' function table with the plane helpers.”…”�”}”(hjâBh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j Ch´KHhj¤Bh²hubeh}”(h]”jÝah ]”h"]”h$]”Œoverview”ah&]”uh1hµhj“Bh²hh³hÌh´K5Œ referenced”Kubh¶)�”}”(hhh]”(h»)�”}”(hŒ'Implementing Asynchronous Atomic Commit”h]”hŒ'Implementing Asynchronous Atomic Commit”…”�”}”(hjˆCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÊjùuh1hºhj…Ch²hh³hÌh´K;ubhÎ)�”}”(hXNonblocking atomic commits should use struct :c:type:`drm_crtc_commit` to sequence different operations against each another. Locks, especially struct :c:type:`drm_modeset_lock`, should not be held in worker threads or any other asynchronous context used to commit the hardware state.”h]”(hŒ-Nonblocking atomic commits should use struct ”…”�”}”(hj–Ch²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_crtc_commit`”h]”jˆ )�”}”(hj Ch]”hŒdrm_crtc_commit”…”�”}”(hj¢Ch²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjžCubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_crtc_commit”uh1hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:61: ./drivers/gpu/drm/drm_atomic_helper.c”h´M hj–CubhŒQ to sequence different operations against each another. Locks, especially struct ”…”�”}”(hj–Ch²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_modeset_lock`”h]”jˆ )�”}”(hjÄCh]”hŒdrm_modeset_lock”…”�”}”(hjÆCh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÂCubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_modeset_lock”uh1hh³j½Ch´M hj–CubhŒk, should not be held in worker threads or any other asynchronous context used to commit the hardware state.”…”�”}”(hj–Ch²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j½Ch´M hj…Ch²hubhÎ)�”}”(hŒŠdrm_atomic_helper_commit() implements the recommended sequence for nonblocking commits, using drm_atomic_helper_setup_commit() internally:”h]”hŒŠdrm_atomic_helper_commit() implements the recommended sequence for nonblocking commits, using drm_atomic_helper_setup_commit() internally:”…”�”}”(hjëCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:61: ./drivers/gpu/drm/drm_atomic_helper.c”h´M hj…Ch²hubhÎ)�”}”(hŒ 1. Run drm_atomic_helper_prepare_planes(). Since this can fail and we need to propagate out of memory/VRAM errors to userspace, it must be called synchronously.”h]”hŒ 1. Run drm_atomic_helper_prepare_planes(). Since this can fail and we need to propagate out of memory/VRAM errors to userspace, it must be called synchronously.”…”�”}”(hjúCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:61: ./drivers/gpu/drm/drm_atomic_helper.c”h´M! hj…Ch²hubhÎ)�”}”(hŒ«2. Synchronize with any outstanding nonblocking commit worker threads which might be affected by the new state update. This is handled by drm_atomic_helper_setup_commit().”h]”hŒ«2. Synchronize with any outstanding nonblocking commit worker threads which might be affected by the new state update. This is handled by drm_atomic_helper_setup_commit().”…”�”}”(hj Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:61: ./drivers/gpu/drm/drm_atomic_helper.c”h´M% hj…Ch²hubhÎ)�”}”(hXAAsynchronous workers need to have sufficient parallelism to be able to run different atomic commits on different CRTCs in parallel. The simplest way to achieve this is by running them on the :c:type:`system_dfl_wq` work queue. Note that drivers are not required to split up atomic commits and run an individual commit in parallel - userspace is supposed to do that if it cares. But it might be beneficial to do that for modesets, since those necessarily must be done as one global operation, and enabling or disabling a CRTC can take a long time. But even that is not required.”h]”(hŒ¿Asynchronous workers need to have sufficient parallelism to be able to run different atomic commits on different CRTCs in parallel. The simplest way to achieve this is by running them on the ”…”�”}”(hjDh²hh³Nh´Nubh)�”}”(hŒ:c:type:`system_dfl_wq`”h]”jˆ )�”}”(hj"Dh]”hŒ system_dfl_wq”…”�”}”(hj$Dh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj Dubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œ system_dfl_wq”uh1hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:61: ./drivers/gpu/drm/drm_atomic_helper.c”h´M) hjDubhXk work queue. Note that drivers are not required to split up atomic commits and run an individual commit in parallel - userspace is supposed to do that if it cares. But it might be beneficial to do that for modesets, since those necessarily must be done as one global operation, and enabling or disabling a CRTC can take a long time. But even that is not required.”…”�”}”(hjDh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j?Dh´M) hj…Ch²hubhÎ)�”}”(hX,IMPORTANT: A :c:type:`drm_atomic_commit` update for multiple CRTCs is sequenced against all CRTCs therein. Therefore for atomic state updates which only flip planes the driver must not get the struct :c:type:`drm_crtc_state` of unrelated CRTCs in its atomic check code: This would prevent committing of atomic updates to multiple CRTCs in parallel. In general, adding additional state structures should be avoided as much as possible, because this reduces parallelism in (nonblocking) commits, both due to locking and due to commit sequencing requirements.”h]”(hŒ IMPORTANT: A ”…”�”}”(hjJDh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_atomic_commit`”h]”jˆ )�”}”(hjTDh]”hŒdrm_atomic_commit”…”�”}”(hjVDh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjRDubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_atomic_commit”uh1hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:61: ./drivers/gpu/drm/drm_atomic_helper.c”h´M2 hjJDubhŒ  update for multiple CRTCs is sequenced against all CRTCs therein. Therefore for atomic state updates which only flip planes the driver must not get the struct ”…”�”}”(hjJDh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_crtc_state`”h]”jˆ )�”}”(hjxDh]”hŒdrm_crtc_state”…”�”}”(hjzDh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjvDubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_crtc_state”uh1hh³jqDh´M2 hjJDubhXL of unrelated CRTCs in its atomic check code: This would prevent committing of atomic updates to multiple CRTCs in parallel. In general, adding additional state structures should be avoided as much as possible, because this reduces parallelism in (nonblocking) commits, both due to locking and due to commit sequencing requirements.”…”�”}”(hjJDh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jqDh´M2 hj…Ch²hubhÎ)�”}”(hXí3. The software state is updated synchronously with drm_atomic_helper_swap_state(). Doing this under the protection of all modeset locks means concurrent callers never see inconsistent state. Note that commit workers do not hold any locks; their access is only coordinated through ordering. If workers would access state only through the pointers in the free-standing state objects (currently not the case for any driver) then even multiple pending commits could be in-flight at the same time.”h]”hXí3. The software state is updated synchronously with drm_atomic_helper_swap_state(). Doing this under the protection of all modeset locks means concurrent callers never see inconsistent state. Note that commit workers do not hold any locks; their access is only coordinated through ordering. If workers would access state only through the pointers in the free-standing state objects (currently not the case for any driver) then even multiple pending commits could be in-flight at the same time.”…”�”}”(hjŸDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:61: ./drivers/gpu/drm/drm_atomic_helper.c”h´M; hj…Ch²hubhÎ)�”}”(hXŸ4. Schedule a work item to do all subsequent steps, using the split-out commit helpers: a) pre-plane commit b) plane commit c) post-plane commit and then cleaning up the framebuffers after the old framebuffer is no longer being displayed. The scheduled work should synchronize against other workers using the :c:type:`drm_crtc_commit` infrastructure as needed. See drm_atomic_helper_setup_commit() for more details.”h]”(hX54. Schedule a work item to do all subsequent steps, using the split-out commit helpers: a) pre-plane commit b) plane commit c) post-plane commit and then cleaning up the framebuffers after the old framebuffer is no longer being displayed. The scheduled work should synchronize against other workers using the ”…”�”}”(hj®Dh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_crtc_commit`”h]”jˆ )�”}”(hj¸Dh]”hŒdrm_crtc_commit”…”�”}”(hjºDh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj¶Dubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_crtc_commit”uh1hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:61: ./drivers/gpu/drm/drm_atomic_helper.c”h´MC hj®DubhŒQ infrastructure as needed. See drm_atomic_helper_setup_commit() for more details.”…”�”}”(hj®Dh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÕDh´MC hj…Ch²hubeh}”(h]”jÿah ]”h"]”Œ'implementing asynchronous atomic commit”ah$]”h&]”uh1hµhj“Bh²hh³hÌh´K;ubh¶)�”}”(hhh]”(h»)�”}”(hŒHelper Functions Reference”h]”hŒHelper Functions Reference”…”�”}”(hjêDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÊjuh1hºhjçDh²hh³hÌh´KAubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ(drm_atomic_crtc_for_each_plane (C macro)”Œ c.drm_atomic_crtc_for_each_plane”hNt”auh1j† hjçDh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒdrm_atomic_crtc_for_each_plane”h]”j¤ )�”}”(hŒdrm_atomic_crtc_for_each_plane”h]”jÍ )�”}”(hŒdrm_atomic_crtc_for_each_plane”h]”jÓ )�”}”(hj Eh]”hŒdrm_atomic_crtc_for_each_plane”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjEubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj Eh²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:67: ./include/drm/drm_atomic_helper.h”h´K¾ubah}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj Eh²hh³j(Eh´K¾ubah}”(h]”jEah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j(Eh´K¾hjEh²hubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j hjEh²hh³j(Eh´K¾ubeh}”(h]”h ]”(j Œmacro”eh"]”h$]”h&]”j" j j# jAEj$ jAEj% ‰j& ‰j' ‰uh1j˜ h²hhjçDh³Nh´NubhÎ)�”}”(hŒ0``drm_atomic_crtc_for_each_plane (plane, crtc)``”h]”jˆ )�”}”(hjGEh]”hŒ,drm_atomic_crtc_for_each_plane (plane, crtc)”…”�”}”(hjIEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjEEubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:67: ./include/drm/drm_atomic_helper.h”h´KÀhjçDh²hubhŒ block_quote”“”)�”}”(hŒ/iterate over planes currently attached to CRTC ”h]”hÎ)�”}”(hŒ.iterate over planes currently attached to CRTC”h]”hŒ.iterate over planes currently attached to CRTC”…”�”}”(hjcEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:67: ./include/drm/drm_atomic_helper.h”h´K¾hj_Eubah}”(h]”h ]”h"]”h$]”h&]”uh1j]Eh³jqEh´K¾hjçDh²hubj) )�”}”(hX±**Parameters** ``plane`` the loop cursor ``crtc`` the CRTC whose planes are iterated **Description** This iterates over the current state, useful (for example) when applying atomic state after it has been checked and swapped. To iterate over the planes which *will* be attached (more useful in code called from :c:type:`drm_mode_config_funcs.atomic_check `) see drm_atomic_crtc_state_for_each_plane().”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj~Eh]”hŒ Parameters”…”�”}”(hj€Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj|Eubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:67: ./include/drm/drm_atomic_helper.h”h´KÂhjxEubjw )�”}”(hhh]”(j| )�”}”(hŒ``plane`` the loop cursor ”h]”(j‚ )�”}”(hŒ ``plane``”h]”jˆ )�”}”(hj�Eh]”hŒplane”…”�”}”(hjŸEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj›Eubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:67: ./include/drm/drm_atomic_helper.h”h´K¿hj—Eubjž )�”}”(hhh]”hÎ)�”}”(hŒthe loop cursor”h]”hŒthe loop cursor”…”�”}”(hj¶Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j²Eh´K¿hj³Eubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj—Eubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j²Eh´K¿hj”Eubj| )�”}”(hŒ,``crtc`` the CRTC whose planes are iterated ”h]”(j‚ )�”}”(hŒ``crtc``”h]”jˆ )�”}”(hjÖEh]”hŒcrtc”…”�”}”(hjØEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÔEubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:67: ./include/drm/drm_atomic_helper.h”h´KÀhjÐEubjž )�”}”(hhh]”hÎ)�”}”(hŒ"the CRTC whose planes are iterated”h]”hŒ"the CRTC whose planes are iterated”…”�”}”(hjïEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jëEh´KÀhjìEubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÐEubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jëEh´KÀhj”Eubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjxEubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjFh]”hŒ Description”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjFubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:67: ./include/drm/drm_atomic_helper.h”h´KÂhjxEubhÎ)�”}”(hXDThis iterates over the current state, useful (for example) when applying atomic state after it has been checked and swapped. To iterate over the planes which *will* be attached (more useful in code called from :c:type:`drm_mode_config_funcs.atomic_check `) see drm_atomic_crtc_state_for_each_plane().”h]”(hŒŸThis iterates over the current state, useful (for example) when applying atomic state after it has been checked and swapped. To iterate over the planes which ”…”�”}”(hj'Fh²hh³Nh´NubhŒemphasis”“”)�”}”(hŒ*will*”h]”hŒwill”…”�”}”(hj1Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j/Fhj'FubhŒ. be attached (more useful in code called from ”…”�”}”(hj'Fh²hh³Nh´Nubh)�”}”(hŒD:c:type:`drm_mode_config_funcs.atomic_check `”h]”jˆ )�”}”(hjEFh]”hŒ"drm_mode_config_funcs.atomic_check”…”�”}”(hjGFh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjCFubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_mode_config_funcs”uh1hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:67: ./include/drm/drm_atomic_helper.h”h´KÁhj'FubhŒ-) see drm_atomic_crtc_state_for_each_plane().”…”�”}”(hj'Fh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jbFh´KÁhjxEubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjçDh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ.drm_atomic_crtc_state_for_each_plane (C macro)”Œ&c.drm_atomic_crtc_state_for_each_plane”hNt”auh1j† hjçDh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ$drm_atomic_crtc_state_for_each_plane”h]”j¤ )�”}”(hŒ$drm_atomic_crtc_state_for_each_plane”h]”jÍ )�”}”(hŒ$drm_atomic_crtc_state_for_each_plane”h]”jÓ )�”}”(hj‡Fh]”hŒ$drm_atomic_crtc_state_for_each_plane”…”�”}”(hj‘Fh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj�Fubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj‰Fh²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:67: ./include/drm/drm_atomic_helper.h”h´KÌubah}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj…Fh²hh³j¤Fh´KÌubah}”(h]”j€Fah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j¤Fh´KÌhj‚Fh²hubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j hj‚Fh²hh³j¤Fh´KÌubeh}”(h]”h ]”(j Œmacro”eh"]”h$]”h&]”j" j j# j½Fj$ j½Fj% ‰j& ‰j' ‰uh1j˜ h²hhjçDh³Nh´NubhÎ)�”}”(hŒ<``drm_atomic_crtc_state_for_each_plane (plane, crtc_state)``”h]”jˆ )�”}”(hjÃFh]”hŒ8drm_atomic_crtc_state_for_each_plane (plane, crtc_state)”…”�”}”(hjÅFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÁFubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:67: ./include/drm/drm_atomic_helper.h”h´KÎhjçDh²hubj^E)�”}”(hŒ*iterate over attached planes in new state ”h]”hÎ)�”}”(hŒ)iterate over attached planes in new state”h]”hŒ)iterate over attached planes in new state”…”�”}”(hjÝFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:67: ./include/drm/drm_atomic_helper.h”h´KÌhjÙFubah}”(h]”h ]”h"]”h$]”h&]”uh1j]Eh³jëFh´KÌhjçDh²hubj) )�”}”(hX~**Parameters** ``plane`` the loop cursor ``crtc_state`` the incoming CRTC state **Description** Similar to drm_crtc_for_each_plane(), but iterates the planes that will be attached if the specified state is applied. Useful during for example in code called from :c:type:`drm_mode_config_funcs.atomic_check ` operations, to validate the incoming state.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjøFh]”hŒ Parameters”…”�”}”(hjúFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjöFubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:67: ./include/drm/drm_atomic_helper.h”h´KÐhjòFubjw )�”}”(hhh]”(j| )�”}”(hŒ``plane`` the loop cursor ”h]”(j‚ )�”}”(hŒ ``plane``”h]”jˆ )�”}”(hjGh]”hŒplane”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjGubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:67: ./include/drm/drm_atomic_helper.h”h´KÍhjGubjž )�”}”(hhh]”hÎ)�”}”(hŒthe loop cursor”h]”hŒthe loop cursor”…”�”}”(hj0Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j,Gh´KÍhj-Gubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjGubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j,Gh´KÍhjGubj| )�”}”(hŒ'``crtc_state`` the incoming CRTC state ”h]”(j‚ )�”}”(hŒ``crtc_state``”h]”jˆ )�”}”(hjPGh]”hŒ crtc_state”…”�”}”(hjRGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjNGubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:67: ./include/drm/drm_atomic_helper.h”h´KÎhjJGubjž )�”}”(hhh]”hÎ)�”}”(hŒthe incoming CRTC state”h]”hŒthe incoming CRTC state”…”�”}”(hjiGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jeGh´KÎhjfGubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjJGubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jeGh´KÎhjGubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjòFubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj‹Gh]”hŒ Description”…”�”}”(hj�Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj‰Gubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:67: ./include/drm/drm_atomic_helper.h”h´KÐhjòFubhÎ)�”}”(hXSimilar to drm_crtc_for_each_plane(), but iterates the planes that will be attached if the specified state is applied. Useful during for example in code called from :c:type:`drm_mode_config_funcs.atomic_check ` operations, to validate the incoming state.”h]”(hŒ¦Similar to drm_crtc_for_each_plane(), but iterates the planes that will be attached if the specified state is applied. Useful during for example in code called from ”…”�”}”(hj¡Gh²hh³Nh´Nubh)�”}”(hŒD:c:type:`drm_mode_config_funcs.atomic_check `”h]”jˆ )�”}”(hj«Gh]”hŒ"drm_mode_config_funcs.atomic_check”…”�”}”(hj­Gh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj©Gubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_mode_config_funcs”uh1hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:67: ./include/drm/drm_atomic_helper.h”h´KÏhj¡GubhŒ, operations, to validate the incoming state.”…”�”}”(hj¡Gh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÈGh´KÏhjòFubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjçDh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ4drm_atomic_crtc_state_for_each_plane_state (C macro)”Œ,c.drm_atomic_crtc_state_for_each_plane_state”hNt”auh1j† hjçDh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ*drm_atomic_crtc_state_for_each_plane_state”h]”j¤ )�”}”(hŒ*drm_atomic_crtc_state_for_each_plane_state”h]”jÍ )�”}”(hŒ*drm_atomic_crtc_state_for_each_plane_state”h]”jÓ )�”}”(hjíGh]”hŒ*drm_atomic_crtc_state_for_each_plane_state”…”�”}”(hj÷Gh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjóGubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjïGh²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:67: ./include/drm/drm_atomic_helper.h”h´KÙubah}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjëGh²hh³j Hh´KÙubah}”(h]”jæGah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j Hh´KÙhjèGh²hubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j hjèGh²hh³j Hh´KÙubeh}”(h]”h ]”(j Œmacro”eh"]”h$]”h&]”j" j j# j#Hj$ j#Hj% ‰j& ‰j' ‰uh1j˜ h²hhjçDh³Nh´NubhÎ)�”}”(hŒO``drm_atomic_crtc_state_for_each_plane_state (plane, plane_state, crtc_state)``”h]”jˆ )�”}”(hj)Hh]”hŒKdrm_atomic_crtc_state_for_each_plane_state (plane, plane_state, crtc_state)”…”�”}”(hj+Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj'Hubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:67: ./include/drm/drm_atomic_helper.h”h´KÛhjçDh²hubj^E)�”}”(hŒ*iterate over attached planes in new state ”h]”hÎ)�”}”(hŒ)iterate over attached planes in new state”h]”hŒ)iterate over attached planes in new state”…”�”}”(hjCHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:67: ./include/drm/drm_atomic_helper.h”h´KÙhj?Hubah}”(h]”h ]”h"]”h$]”h&]”uh1j]Eh³jQHh´KÙhjçDh²hubj) )�”}”(hX˜**Parameters** ``plane`` the loop cursor ``plane_state`` loop cursor for the plane's state, must be const ``crtc_state`` the incoming CRTC state **Description** Similar to drm_crtc_for_each_plane(), but iterates the planes that will be attached if the specified state is applied. Useful during for example in code called from :c:type:`drm_mode_config_funcs.atomic_check ` operations, to validate the incoming state. Compared to just drm_atomic_crtc_state_for_each_plane() this also fills in a const plane_state. This is useful when a driver just wants to peek at other active planes on this CRTC, but does not need to change it.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj^Hh]”hŒ Parameters”…”�”}”(hj`Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj\Hubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:67: ./include/drm/drm_atomic_helper.h”h´KÝhjXHubjw )�”}”(hhh]”(j| )�”}”(hŒ``plane`` the loop cursor ”h]”(j‚ )�”}”(hŒ ``plane``”h]”jˆ )�”}”(hj}Hh]”hŒplane”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj{Hubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:67: ./include/drm/drm_atomic_helper.h”h´KÚhjwHubjž )�”}”(hhh]”hÎ)�”}”(hŒthe loop cursor”h]”hŒthe loop cursor”…”�”}”(hj–Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j’Hh´KÚhj“Hubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjwHubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j’Hh´KÚhjtHubj| )�”}”(hŒA``plane_state`` loop cursor for the plane's state, must be const ”h]”(j‚ )�”}”(hŒ``plane_state``”h]”jˆ )�”}”(hj¶Hh]”hŒ plane_state”…”�”}”(hj¸Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj´Hubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:67: ./include/drm/drm_atomic_helper.h”h´KÛhj°Hubjž )�”}”(hhh]”hÎ)�”}”(hŒ0loop cursor for the plane's state, must be const”h]”hŒ2loop cursor for the plane’s state, must be const”…”�”}”(hjÏHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jËHh´KÛhjÌHubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj°Hubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jËHh´KÛhjtHubj| )�”}”(hŒ'``crtc_state`` the incoming CRTC state ”h]”(j‚ )�”}”(hŒ``crtc_state``”h]”jˆ )�”}”(hjïHh]”hŒ crtc_state”…”�”}”(hjñHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjíHubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:67: ./include/drm/drm_atomic_helper.h”h´KÜhjéHubjž )�”}”(hhh]”hÎ)�”}”(hŒthe incoming CRTC state”h]”hŒthe incoming CRTC state”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jIh´KÜhjIubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjéHubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jIh´KÜhjtHubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjXHubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj*Ih]”hŒ Description”…”�”}”(hj,Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj(Iubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:67: ./include/drm/drm_atomic_helper.h”h´KÞhjXHubhÎ)�”}”(hXSimilar to drm_crtc_for_each_plane(), but iterates the planes that will be attached if the specified state is applied. Useful during for example in code called from :c:type:`drm_mode_config_funcs.atomic_check ` operations, to validate the incoming state.”h]”(hŒ¦Similar to drm_crtc_for_each_plane(), but iterates the planes that will be attached if the specified state is applied. Useful during for example in code called from ”…”�”}”(hj@Ih²hh³Nh´Nubh)�”}”(hŒD:c:type:`drm_mode_config_funcs.atomic_check `”h]”jˆ )�”}”(hjJIh]”hŒ"drm_mode_config_funcs.atomic_check”…”�”}”(hjLIh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjHIubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_mode_config_funcs”uh1hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:67: ./include/drm/drm_atomic_helper.h”h´KÝhj@IubhŒ, operations, to validate the incoming state.”…”�”}”(hj@Ih²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jgIh´KÝhjXHubhÎ)�”}”(hŒÔCompared to just drm_atomic_crtc_state_for_each_plane() this also fills in a const plane_state. This is useful when a driver just wants to peek at other active planes on this CRTC, but does not need to change it.”h]”hŒÔCompared to just drm_atomic_crtc_state_for_each_plane() this also fills in a const plane_state. This is useful when a driver just wants to peek at other active planes on this CRTC, but does not need to change it.”…”�”}”(hjrIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:67: ./include/drm/drm_atomic_helper.h”h´KâhjXHubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjçDh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ&drm_atomic_plane_enabling (C function)”Œc.drm_atomic_plane_enabling”hNt”auh1j† hjçDh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒqbool drm_atomic_plane_enabling (struct drm_plane_state *old_plane_state, struct drm_plane_state *new_plane_state)”h]”j¤ )�”}”(hŒpbool drm_atomic_plane_enabling(struct drm_plane_state *old_plane_state, struct drm_plane_state *new_plane_state)”h]”(j¦)�”}”(hŒbool”h]”hŒbool”…”�”}”(hj¡Ih²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj�Ih²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:67: ./include/drm/drm_atomic_helper.h”h´Kîubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°Ih²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj�Ih²hh³j¯Ih´KîubjÍ )�”}”(hŒdrm_atomic_plane_enabling”h]”jÓ )�”}”(hŒdrm_atomic_plane_enabling”h]”hŒdrm_atomic_plane_enabling”…”�”}”(hjÂIh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¾Iubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj�Ih²hh³j¯Ih´KîubjÞ)�”}”(hŒR(struct drm_plane_state *old_plane_state, struct drm_plane_state *new_plane_state)”h]”(jä)�”}”(hŒ'struct drm_plane_state *old_plane_state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjÞIh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjÚIubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjëIh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÚIubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_plane_state”h]”hŒdrm_plane_state”…”�”}”(hjüIh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjùIubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jþIŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjÄIsbŒc.drm_atomic_plane_enabling”†”asbuh1hhjÚIubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÚIubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj*Jh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÚIubjÓ )�”}”(hŒold_plane_state”h]”hŒold_plane_state”…”�”}”(hj7Jh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÚIubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÖIubjä)�”}”(hŒ'struct drm_plane_state *new_plane_state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjPJh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjLJubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]Jh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjLJubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_plane_state”h]”hŒdrm_plane_state”…”�”}”(hjnJh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjkJubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jpJŒmodname”NŒ classname”Njé jì )�”}”jï ]”jJŒc.drm_atomic_plane_enabling”†”asbuh1hhjLJubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒJh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjLJubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjšJh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjLJubjÓ )�”}”(hŒnew_plane_state”h]”hŒnew_plane_state”…”�”}”(hj§Jh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjLJubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÖIubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj�Ih²hh³j¯Ih´Kîubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj™Ih²hh³j¯Ih´Kîubah}”(h]”j”Iah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j¯Ih´Kîhj–Ih²hubj )�”}”(hhh]”hÎ)�”}”(hŒ&check whether a plane is being enabled”h]”hŒ&check whether a plane is being enabled”…”�”}”(hjÑJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:67: ./include/drm/drm_atomic_helper.h”h´KîhjÎJh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj–Ih²hh³j¯Ih´Kîubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jéJj$ jéJj% ‰j& ‰j' ‰uh1j˜ h²hhjçDh³Nh´Nubj) )�”}”(hX´**Parameters** ``struct drm_plane_state *old_plane_state`` old atomic plane state ``struct drm_plane_state *new_plane_state`` new atomic plane state **Description** Checks the atomic state of a plane to determine whether it's being enabled or not. This also WARNs if it detects an invalid state (both CRTC and FB need to either both be NULL or both be non-NULL). **Return** True if the plane is being enabled, false otherwise.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjóJh]”hŒ Parameters”…”�”}”(hjõJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjñJubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:67: ./include/drm/drm_atomic_helper.h”h´KòhjíJubjw )�”}”(hhh]”(j| )�”}”(hŒC``struct drm_plane_state *old_plane_state`` old atomic plane state ”h]”(j‚ )�”}”(hŒ+``struct drm_plane_state *old_plane_state``”h]”jˆ )�”}”(hjKh]”hŒ'struct drm_plane_state *old_plane_state”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjKubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:67: ./include/drm/drm_atomic_helper.h”h´Kïhj Kubjž )�”}”(hhh]”hÎ)�”}”(hŒold atomic plane state”h]”hŒold atomic plane state”…”�”}”(hj+Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j'Kh´Kïhj(Kubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j'Kh´Kïhj Kubj| )�”}”(hŒC``struct drm_plane_state *new_plane_state`` new atomic plane state ”h]”(j‚ )�”}”(hŒ+``struct drm_plane_state *new_plane_state``”h]”jˆ )�”}”(hjKKh]”hŒ'struct drm_plane_state *new_plane_state”…”�”}”(hjMKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjIKubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:67: ./include/drm/drm_atomic_helper.h”h´KðhjEKubjž )�”}”(hhh]”hÎ)�”}”(hŒnew atomic plane state”h]”hŒnew atomic plane state”…”�”}”(hjdKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j`Kh´KðhjaKubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjEKubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j`Kh´Kðhj Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjíJubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj†Kh]”hŒ Description”…”�”}”(hjˆKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj„Kubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:67: ./include/drm/drm_atomic_helper.h”h´KòhjíJubhÎ)�”}”(hŒÅChecks the atomic state of a plane to determine whether it's being enabled or not. This also WARNs if it detects an invalid state (both CRTC and FB need to either both be NULL or both be non-NULL).”h]”hŒÇChecks the atomic state of a plane to determine whether it’s being enabled or not. This also WARNs if it detects an invalid state (both CRTC and FB need to either both be NULL or both be non-NULL).”…”�”}”(hjœKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:67: ./include/drm/drm_atomic_helper.h”h´KñhjíJubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj­Kh]”hŒReturn”…”�”}”(hj¯Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj«Kubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:67: ./include/drm/drm_atomic_helper.h”h´KõhjíJubhÎ)�”}”(hŒ4True if the plane is being enabled, false otherwise.”h]”hŒ4True if the plane is being enabled, false otherwise.”…”�”}”(hjÃKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:67: ./include/drm/drm_atomic_helper.h”h´KöhjíJubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjçDh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ'drm_atomic_plane_disabling (C function)”Œc.drm_atomic_plane_disabling”hNt”auh1j† hjçDh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒrbool drm_atomic_plane_disabling (struct drm_plane_state *old_plane_state, struct drm_plane_state *new_plane_state)”h]”j¤ )�”}”(hŒqbool drm_atomic_plane_disabling(struct drm_plane_state *old_plane_state, struct drm_plane_state *new_plane_state)”h]”(j¦)�”}”(hj£Ih]”hŒbool”…”�”}”(hjòKh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjîKh²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:67: ./include/drm/drm_atomic_helper.h”h´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjîKh²hh³jÿKh´MubjÍ )�”}”(hŒdrm_atomic_plane_disabling”h]”jÓ )�”}”(hŒdrm_atomic_plane_disabling”h]”hŒdrm_atomic_plane_disabling”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjLubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjîKh²hh³jÿKh´MubjÞ)�”}”(hŒR(struct drm_plane_state *old_plane_state, struct drm_plane_state *new_plane_state)”h]”(jä)�”}”(hŒ'struct drm_plane_state *old_plane_state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj.Lh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj*Lubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;Lh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj*Lubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_plane_state”h]”hŒdrm_plane_state”…”�”}”(hjLLh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjILubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jNLŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjLsbŒc.drm_atomic_plane_disabling”†”asbuh1hhj*Lubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjlLh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj*Lubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjzLh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj*LubjÓ )�”}”(hŒold_plane_state”h]”hŒold_plane_state”…”�”}”(hj‡Lh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj*Lubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj&Lubjä)�”}”(hŒ'struct drm_plane_state *new_plane_state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj Lh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjœLubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­Lh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjœLubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_plane_state”h]”hŒdrm_plane_state”…”�”}”(hj¾Lh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj»Lubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jÀLŒmodname”NŒ classname”Njé jì )�”}”jï ]”jhLŒc.drm_atomic_plane_disabling”†”asbuh1hhjœLubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜLh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjœLubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjêLh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjœLubjÓ )�”}”(hŒnew_plane_state”h]”hŒnew_plane_state”…”�”}”(hj÷Lh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjœLubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj&Lubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjîKh²hh³jÿKh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjêKh²hh³jÿKh´Mubah}”(h]”jåKah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jÿKh´MhjçKh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ'check whether a plane is being disabled”h]”hŒ'check whether a plane is being disabled”…”�”}”(hj!Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:67: ./include/drm/drm_atomic_helper.h”h´MhjMh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjçKh²hh³jÿKh´Mubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j9Mj$ j9Mj% ‰j& ‰j' ‰uh1j˜ h²hhjçDh³Nh´Nubj) )�”}”(hX¶**Parameters** ``struct drm_plane_state *old_plane_state`` old atomic plane state ``struct drm_plane_state *new_plane_state`` new atomic plane state **Description** Checks the atomic state of a plane to determine whether it's being disabled or not. This also WARNs if it detects an invalid state (both CRTC and FB need to either both be NULL or both be non-NULL). **Return** True if the plane is being disabled, false otherwise.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjCMh]”hŒ Parameters”…”�”}”(hjEMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjAMubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:67: ./include/drm/drm_atomic_helper.h”h´M hj=Mubjw )�”}”(hhh]”(j| )�”}”(hŒC``struct drm_plane_state *old_plane_state`` old atomic plane state ”h]”(j‚ )�”}”(hŒ+``struct drm_plane_state *old_plane_state``”h]”jˆ )�”}”(hjbMh]”hŒ'struct drm_plane_state *old_plane_state”…”�”}”(hjdMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj`Mubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:67: ./include/drm/drm_atomic_helper.h”h´M hj\Mubjž )�”}”(hhh]”hÎ)�”}”(hŒold atomic plane state”h]”hŒold atomic plane state”…”�”}”(hj{Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jwMh´M hjxMubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj\Mubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jwMh´M hjYMubj| )�”}”(hŒC``struct drm_plane_state *new_plane_state`` new atomic plane state ”h]”(j‚ )�”}”(hŒ+``struct drm_plane_state *new_plane_state``”h]”jˆ )�”}”(hj›Mh]”hŒ'struct drm_plane_state *new_plane_state”…”�”}”(hj�Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj™Mubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:67: ./include/drm/drm_atomic_helper.h”h´M hj•Mubjž )�”}”(hhh]”hÎ)�”}”(hŒnew atomic plane state”h]”hŒnew atomic plane state”…”�”}”(hj´Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j°Mh´M hj±Mubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj•Mubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j°Mh´M hjYMubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj=MubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjÖMh]”hŒ Description”…”�”}”(hjØMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÔMubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:67: ./include/drm/drm_atomic_helper.h”h´M hj=MubhÎ)�”}”(hŒÆChecks the atomic state of a plane to determine whether it's being disabled or not. This also WARNs if it detects an invalid state (both CRTC and FB need to either both be NULL or both be non-NULL).”h]”hŒÈChecks the atomic state of a plane to determine whether it’s being disabled or not. This also WARNs if it detects an invalid state (both CRTC and FB need to either both be NULL or both be non-NULL).”…”�”}”(hjìMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:67: ./include/drm/drm_atomic_helper.h”h´M hj=MubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjýMh]”hŒReturn”…”�”}”(hjÿMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjûMubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:67: ./include/drm/drm_atomic_helper.h”h´Mhj=MubhÎ)�”}”(hŒ5True if the plane is being disabled, false otherwise.”h]”hŒ5True if the plane is being disabled, false otherwise.”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:67: ./include/drm/drm_atomic_helper.h”h´Mhj=Mubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjçDh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ,drm_atomic_helper_check_modeset (C function)”Œ!c.drm_atomic_helper_check_modeset”hNt”auh1j† hjçDh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ]int drm_atomic_helper_check_modeset (struct drm_device *dev, struct drm_atomic_commit *state)”h]”j¤ )�”}”(hŒ\int drm_atomic_helper_check_modeset(struct drm_device *dev, struct drm_atomic_commit *state)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjBNh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj>Nh²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M_ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQNh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj>Nh²hh³jPNh´M_ubjÍ )�”}”(hŒdrm_atomic_helper_check_modeset”h]”jÓ )�”}”(hŒdrm_atomic_helper_check_modeset”h]”hŒdrm_atomic_helper_check_modeset”…”�”}”(hjcNh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj_Nubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj>Nh²hh³jPNh´M_ubjÞ)�”}”(hŒ9(struct drm_device *dev, struct drm_atomic_commit *state)”h]”(jä)�”}”(hŒstruct drm_device *dev”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj{Nubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒNh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj{Nubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_device”h]”hŒ drm_device”…”�”}”(hj�Nh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjšNubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jŸNŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjeNsbŒ!c.drm_atomic_helper_check_modeset”†”asbuh1hhj{Nubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½Nh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj{Nubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjËNh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj{NubjÓ )�”}”(hŒdev”h]”hŒdev”…”�”}”(hjØNh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj{Nubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjwNubjä)�”}”(hŒstruct drm_atomic_commit *state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjñNh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjíNubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþNh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjíNubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_atomic_commit”h]”hŒdrm_atomic_commit”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj Oubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jOŒmodname”NŒ classname”Njé jì )�”}”jï ]”j¹NŒ!c.drm_atomic_helper_check_modeset”†”asbuh1hhjíNubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-Oh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjíNubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj;Oh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjíNubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hjHOh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjíNubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjwNubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj>Nh²hh³jPNh´M_ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj:Nh²hh³jPNh´M_ubah}”(h]”j5Nah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jPNh´M_hj7Nh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ)validate state object for modeset changes”h]”hŒ)validate state object for modeset changes”…”�”}”(hjrOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M_hjoOh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj7Nh²hh³jPNh´M_ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jŠOj$ jŠOj% ‰j& ‰j' ‰uh1j˜ h²hhjçDh³Nh´Nubj) )�”}”(hXü **Parameters** ``struct drm_device *dev`` DRM device ``struct drm_atomic_commit *state`` the driver state object **Description** Check the state object to see if the requested state is physically possible. This does all the CRTC and connector related computations for an atomic update and adds any additional connectors needed for full modesets. It calls the various per-object callbacks in the follow order: 1. :c:type:`drm_connector_helper_funcs.atomic_best_encoder ` for determining the new encoder. 2. :c:type:`drm_connector_helper_funcs.atomic_check ` to validate the connector state. 3. If it's determined a modeset is needed then all connectors on the affected CRTC are added and :c:type:`drm_connector_helper_funcs.atomic_check ` is run on them. 4. :c:type:`drm_encoder_helper_funcs.mode_valid `, :c:type:`drm_bridge_funcs.mode_valid ` and :c:type:`drm_crtc_helper_funcs.mode_valid ` are called on the affected components. 5. :c:type:`drm_bridge_funcs.mode_fixup ` is called on all encoder bridges. 6. :c:type:`drm_encoder_helper_funcs.atomic_check ` is called to validate any encoder state. This function is only called when the encoder will be part of a configured CRTC, it must not be used for implementing connector property validation. If this function is NULL, :c:type:`drm_atomic_encoder_helper_funcs.mode_fixup ` is called instead. 7. :c:type:`drm_crtc_helper_funcs.mode_fixup ` is called last, to fix up the mode with CRTC constraints. :c:type:`drm_crtc_state.mode_changed ` is set when the input mode is changed. :c:type:`drm_crtc_state.connectors_changed ` is set when a connector is added or removed from the CRTC. :c:type:`drm_crtc_state.active_changed ` is set when :c:type:`drm_crtc_state.active ` changes, which is used for DPMS. :c:type:`drm_crtc_state.no_vblank ` is set from the result of drm_dev_has_vblank(). See also: drm_atomic_crtc_needs_modeset() IMPORTANT: Drivers which set :c:type:`drm_crtc_state.mode_changed ` (e.g. in their :c:type:`drm_plane_helper_funcs.atomic_check ` hooks if a plane update can't be done without a full modeset) _must_ call this function after that change. It is permitted to call this function multiple times for the same update, e.g. when the :c:type:`drm_crtc_helper_funcs.atomic_check ` functions depend upon the adjusted dotclock for fifo space allocation and watermark computation. **Return** Zero for success or -errno”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj”Oh]”hŒ Parameters”…”�”}”(hj–Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj’Oubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MchjŽOubjw )�”}”(hhh]”(j| )�”}”(hŒ&``struct drm_device *dev`` DRM device ”h]”(j‚ )�”}”(hŒ``struct drm_device *dev``”h]”jˆ )�”}”(hj³Oh]”hŒstruct drm_device *dev”…”�”}”(hjµOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj±Oubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M`hj­Oubjž )�”}”(hhh]”hÎ)�”}”(hŒ DRM device”h]”hŒ DRM device”…”�”}”(hjÌOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÈOh´M`hjÉOubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj­Oubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÈOh´M`hjªOubj| )�”}”(hŒ<``struct drm_atomic_commit *state`` the driver state object ”h]”(j‚ )�”}”(hŒ#``struct drm_atomic_commit *state``”h]”jˆ )�”}”(hjìOh]”hŒstruct drm_atomic_commit *state”…”�”}”(hjîOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjêOubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MahjæOubjž )�”}”(hhh]”hÎ)�”}”(hŒthe driver state object”h]”hŒthe driver state object”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jPh´MahjPubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjæOubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jPh´MahjªOubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjŽOubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj'Ph]”hŒ Description”…”�”}”(hj)Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj%Pubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MchjŽOubhÎ)�”}”(hXCheck the state object to see if the requested state is physically possible. This does all the CRTC and connector related computations for an atomic update and adds any additional connectors needed for full modesets. It calls the various per-object callbacks in the follow order:”•h]”hXCheck the state object to see if the requested state is physically possible. This does all the CRTC and connector related computations for an atomic update and adds any additional connectors needed for full modesets. It calls the various per-object callbacks in the follow order:”…”�”}”(hj=Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MbhjŽOubhŒenumerated_list”“”)�”}”(hhh]”(hÿ)�”}”(hŒv:c:type:`drm_connector_helper_funcs.atomic_best_encoder ` for determining the new encoder.”h]”hÎ)�”}”(hjSPh]”(h)�”}”(hŒU:c:type:`drm_connector_helper_funcs.atomic_best_encoder `”h]”jˆ )�”}”(hjZPh]”hŒ.drm_connector_helper_funcs.atomic_best_encoder”…”�”}”(hj\Ph²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjXPubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_connector_helper_funcs”uh1hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MghjUPubhŒ! for determining the new encoder.”…”�”}”(hjUPh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jwPh´MghjQPubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjNPubhÿ)�”}”(hŒo:c:type:`drm_connector_helper_funcs.atomic_check ` to validate the connector state.”h]”hÎ)�”}”(hjŠPh]”(h)�”}”(hŒN:c:type:`drm_connector_helper_funcs.atomic_check `”h]”jˆ )�”}”(hj‘Ph]”hŒ'drm_connector_helper_funcs.atomic_check”…”�”}”(hj“Ph²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj�Pubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_connector_helper_funcs”uh1hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MhhjŒPubhŒ! to validate the connector state.”…”�”}”(hjŒPh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j®Ph´MhhjˆPubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjNPubhÿ)�”}”(hŒ¼If it's determined a modeset is needed then all connectors on the affected CRTC are added and :c:type:`drm_connector_helper_funcs.atomic_check ` is run on them.”h]”hÎ)�”}”(hŒ¼If it's determined a modeset is needed then all connectors on the affected CRTC are added and :c:type:`drm_connector_helper_funcs.atomic_check ` is run on them.”h]”(hŒ`If it’s determined a modeset is needed then all connectors on the affected CRTC are added and ”…”�”}”(hjÃPh²hh³Nh´Nubh)�”}”(hŒN:c:type:`drm_connector_helper_funcs.atomic_check `”h]”jˆ )�”}”(hjÍPh]”hŒ'drm_connector_helper_funcs.atomic_check”…”�”}”(hjÏPh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjËPubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_connector_helper_funcs”uh1hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MihjÃPubhŒ is run on them.”…”�”}”(hjÃPh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jêPh´Mihj¿Pubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjNPubhÿ)�”}”(hŒð:c:type:`drm_encoder_helper_funcs.mode_valid `, :c:type:`drm_bridge_funcs.mode_valid ` and :c:type:`drm_crtc_helper_funcs.mode_valid ` are called on the affected components.”h]”hÎ)�”}”(hŒð:c:type:`drm_encoder_helper_funcs.mode_valid `, :c:type:`drm_bridge_funcs.mode_valid ` and :c:type:`drm_crtc_helper_funcs.mode_valid ` are called on the affected components.”h]”(h)�”}”(hŒH:c:type:`drm_encoder_helper_funcs.mode_valid `”h]”jˆ )�”}”(hjQh]”hŒ#drm_encoder_helper_funcs.mode_valid”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjQubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_encoder_helper_funcs”uh1hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MkhjÿPubhŒ, ”…”�”}”(hjÿPh²hh³Nh´Nubh)�”}”(hŒ8:c:type:`drm_bridge_funcs.mode_valid `”h]”jˆ )�”}”(hj)Qh]”hŒdrm_bridge_funcs.mode_valid”…”�”}”(hj+Qh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj'Qubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³j"Qh´MkhjÿPubhŒ and ”…”�”}”(hjÿPh²hh³Nh´Nubh)�”}”(hŒB:c:type:`drm_crtc_helper_funcs.mode_valid `”h]”jˆ )�”}”(hjLQh]”hŒ drm_crtc_helper_funcs.mode_valid”…”�”}”(hjNQh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjJQubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_crtc_helper_funcs”uh1hh³j"Qh´MkhjÿPubhŒ' are called on the affected components.”…”�”}”(hjÿPh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j"Qh´MkhjûPubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjNPubhÿ)�”}”(hŒZ:c:type:`drm_bridge_funcs.mode_fixup ` is called on all encoder bridges.”h]”hÎ)�”}”(hj{Qh]”(h)�”}”(hŒ8:c:type:`drm_bridge_funcs.mode_fixup `”h]”jˆ )�”}”(hj‚Qh]”hŒdrm_bridge_funcs.mode_fixup”…”�”}”(hj„Qh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj€Qubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mmhj}QubhŒ" is called on all encoder bridges.”…”�”}”(hj}Qh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jŸQh´MmhjyQubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjNPubhÿ)�”}”(hXŒ:c:type:`drm_encoder_helper_funcs.atomic_check ` is called to validate any encoder state. This function is only called when the encoder will be part of a configured CRTC, it must not be used for implementing connector property validation. If this function is NULL, :c:type:`drm_atomic_encoder_helper_funcs.mode_fixup ` is called instead.”h]”hÎ)�”}”(hXŒ:c:type:`drm_encoder_helper_funcs.atomic_check ` is called to validate any encoder state. This function is only called when the encoder will be part of a configured CRTC, it must not be used for implementing connector property validation. If this function is NULL, :c:type:`drm_atomic_encoder_helper_funcs.mode_fixup ` is called instead.”h]”(h)�”}”(hŒJ:c:type:`drm_encoder_helper_funcs.atomic_check `”h]”jˆ )�”}”(hjºQh]”hŒ%drm_encoder_helper_funcs.atomic_check”…”�”}”(hj¼Qh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj¸Qubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_encoder_helper_funcs”uh1hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mnhj´QubhŒÙ is called to validate any encoder state. This function is only called when the encoder will be part of a configured CRTC, it must not be used for implementing connector property validation. If this function is NULL, ”…”�”}”(hj´Qh²hh³Nh´Nubh)�”}”(hŒV:c:type:`drm_atomic_encoder_helper_funcs.mode_fixup `”h]”jˆ )�”}”(hjÞQh]”hŒ*drm_atomic_encoder_helper_funcs.mode_fixup”…”�”}”(hjàQh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÜQubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_atomic_encoder_helper_funcs”uh1hh³j×Qh´Mnhj´QubhŒ is called instead.”…”�”}”(hj´Qh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j×Qh´Mnhj°Qubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjNPubhÿ)�”}”(hŒ}:c:type:`drm_crtc_helper_funcs.mode_fixup ` is called last, to fix up the mode with CRTC constraints. ”h]”hÎ)�”}”(hŒ|:c:type:`drm_crtc_helper_funcs.mode_fixup ` is called last, to fix up the mode with CRTC constraints.”h]”(h)�”}”(hŒB:c:type:`drm_crtc_helper_funcs.mode_fixup `”h]”jˆ )�”}”(hjRh]”hŒ drm_crtc_helper_funcs.mode_fixup”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjRubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_crtc_helper_funcs”uh1hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MshjRubhŒ: is called last, to fix up the mode with CRTC constraints.”…”�”}”(hjRh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j2Rh´Mshj Rubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjNPubeh}”(h]”h ]”h"]”h$]”h&]”Œenumtype”Œarabic”Œprefix”hŒsuffix”Œ.”uh1jLPhjŽOubhÎ)�”}”(hXû:c:type:`drm_crtc_state.mode_changed ` is set when the input mode is changed. :c:type:`drm_crtc_state.connectors_changed ` is set when a connector is added or removed from the CRTC. :c:type:`drm_crtc_state.active_changed ` is set when :c:type:`drm_crtc_state.active ` changes, which is used for DPMS. :c:type:`drm_crtc_state.no_vblank ` is set from the result of drm_dev_has_vblank(). See also: drm_atomic_crtc_needs_modeset()”h]”(h)�”}”(hŒ6:c:type:`drm_crtc_state.mode_changed `”h]”jˆ )�”}”(hjTRh]”hŒdrm_crtc_state.mode_changed”…”�”}”(hjVRh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjRRubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_crtc_state”uh1hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MuhjNRubhŒ( is set when the input mode is changed. ”…”�”}”(hjNRh²hh³Nh´Nubh)�”}”(hŒ<:c:type:`drm_crtc_state.connectors_changed `”h]”jˆ )�”}”(hjxRh]”hŒ!drm_crtc_state.connectors_changed”…”�”}”(hjzRh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjvRubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_crtc_state”uh1hh³jqRh´MuhjNRubhŒ= is set when a connector is added or removed from the CRTC. ”…”�”}”(hjNRh²hh³Nh´Nubh)�”}”(hŒ8:c:type:`drm_crtc_state.active_changed `”h]”jˆ )�”}”(hj›Rh]”hŒdrm_crtc_state.active_changed”…”�”}”(hj�Rh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj™Rubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_crtc_state”uh1hh³jqRh´MuhjNRubhŒ is set when ”…”�”}”(hjNRh²hh³Nh´Nubh)�”}”(hŒ0:c:type:`drm_crtc_state.active `”h]”jˆ )�”}”(hj¾Rh]”hŒdrm_crtc_state.active”…”�”}”(hjÀRh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj¼Rubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_crtc_state”uh1hh³jqRh´MuhjNRubhŒ" changes, which is used for DPMS. ”…”�”}”(hjNRh²hh³Nh´Nubh)�”}”(hŒ3:c:type:`drm_crtc_state.no_vblank `”h]”jˆ )�”}”(hjáRh]”hŒdrm_crtc_state.no_vblank”…”�”}”(hjãRh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjßRubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_crtc_state”uh1hh³jqRh´MuhjNRubhŒZ is set from the result of drm_dev_has_vblank(). See also: drm_atomic_crtc_needs_modeset()”…”�”}”(hjNRh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jqRh´MuhjŽOubhÎ)�”}”(hŒ IMPORTANT:”h]”hŒ IMPORTANT:”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M|hjŽOubhÎ)�”}”(hXDrivers which set :c:type:`drm_crtc_state.mode_changed ` (e.g. in their :c:type:`drm_plane_helper_funcs.atomic_check ` hooks if a plane update can't be done without a full modeset) _must_ call this function after that change. It is permitted to call this function multiple times for the same update, e.g. when the :c:type:`drm_crtc_helper_funcs.atomic_check ` functions depend upon the adjusted dotclock for fifo space allocation and watermark computation.”h]”(hŒDrivers which set ”…”�”}”(hjSh²hh³Nh´Nubh)�”}”(hŒ6:c:type:`drm_crtc_state.mode_changed `”h]”jˆ )�”}”(hj!Sh]”hŒdrm_crtc_state.mode_changed”…”�”}”(hj#Sh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjSubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_crtc_state”uh1hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M~hjSubhŒ (e.g. in their ”…”�”}”(hjSh²hh³Nh´Nubh)�”}”(hŒF:c:type:`drm_plane_helper_funcs.atomic_check `”h]”jˆ )�”}”(hjESh]”hŒ#drm_plane_helper_funcs.atomic_check”…”�”}”(hjGSh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjCSubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_plane_helper_funcs”uh1hh³j>Sh´M~hjSubhŒÆ hooks if a plane update can’t be done without a full modeset) _must_ call this function after that change. It is permitted to call this function multiple times for the same update, e.g. when the ”…”�”}”(hjSh²hh³Nh´Nubh)�”}”(hŒD:c:type:`drm_crtc_helper_funcs.atomic_check `”h]”jˆ )�”}”(hjhSh]”hŒ"drm_crtc_helper_funcs.atomic_check”…”�”}”(hjjSh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjfSubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_crtc_helper_funcs”uh1hh³j>Sh´M~hjSubhŒa functions depend upon the adjusted dotclock for fifo space allocation and watermark computation.”…”�”}”(hjSh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j>Sh´M~hjŽOubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj‘Sh]”hŒReturn”…”�”}”(hj“Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj�Subah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M…hjŽOubhÎ)�”}”(hŒZero for success or -errno”h]”hŒZero for success or -errno”…”�”}”(hj§Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M†hjŽOubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjçDh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ7drm_atomic_helper_check_wb_connector_state (C function)”Œ,c.drm_atomic_helper_check_wb_connector_state”hNt”auh1j† hjçDh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒqint drm_atomic_helper_check_wb_connector_state (struct drm_connector *connector, struct drm_atomic_commit *state)”h]”j¤ )�”}”(hŒpint drm_atomic_helper_check_wb_connector_state(struct drm_connector *connector, struct drm_atomic_commit *state)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjÖSh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjÒSh²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MFubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjåSh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÒSh²hh³jäSh´MFubjÍ )�”}”(hŒ*drm_atomic_helper_check_wb_connector_state”h]”jÓ )�”}”(hŒ*drm_atomic_helper_check_wb_connector_state”h]”hŒ*drm_atomic_helper_check_wb_connector_state”…”�”}”(hj÷Sh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjóSubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÒSh²hh³jäSh´MFubjÞ)�”}”(hŒB(struct drm_connector *connector, struct drm_atomic_commit *state)”h]”(jä)�”}”(hŒstruct drm_connector *connector”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjTubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Th²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjTubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_connector”h]”hŒ drm_connector”…”�”}”(hj1Th²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj.Tubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j3TŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjùSsbŒ,c.drm_atomic_helper_check_wb_connector_state”†”asbuh1hhjTubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQTh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjTubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj_Th²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjTubjÓ )�”}”(hŒ connector”h]”hŒ connector”…”�”}”(hjlTh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjTubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj Tubjä)�”}”(hŒstruct drm_atomic_commit *state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj…Th²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj�Tubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’Th²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj�Tubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_atomic_commit”h]”hŒdrm_atomic_commit”…”�”}”(hj£Th²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj Tubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j¥TŒmodname”NŒ classname”Njé jì )�”}”jï ]”jMTŒ,c.drm_atomic_helper_check_wb_connector_state”†”asbuh1hhj�Tubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁTh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj�Tubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÏTh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�TubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hjÜTh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj�Tubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj Tubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjÒSh²hh³jäSh´MFubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjÎSh²hh³jäSh´MFubah}”(h]”jÉSah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jäSh´MFhjËSh²hubj )�”}”(hhh]”hÎ)�”}”(hŒCheck writeback connector state”h]”hŒCheck writeback connector state”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MFhjUh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjËSh²hh³jäSh´MFubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jUj$ jUj% ‰j& ‰j' ‰uh1j˜ h²hhjçDh³Nh´Nubj) )�”}”(hX**Parameters** ``struct drm_connector *connector`` corresponding connector ``struct drm_atomic_commit *state`` the driver state object **Description** Checks if the writeback connector state is valid, and returns an error if it isn't. **Return** Zero for success or -errno”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj(Uh]”hŒ Parameters”…”�”}”(hj*Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj&Uubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MJhj"Uubjw )�”}”(hhh]”(j| )�”}”(hŒ<``struct drm_connector *connector`` corresponding connector ”h]”(j‚ )�”}”(hŒ#``struct drm_connector *connector``”h]”jˆ )�”}”(hjGUh]”hŒstruct drm_connector *connector”…”�”}”(hjIUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjEUubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MGhjAUubjž )�”}”(hhh]”hÎ)�”}”(hŒcorresponding connector”h]”hŒcorresponding connector”…”�”}”(hj`Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j\Uh´MGhj]Uubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjAUubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j\Uh´MGhj>Uubj| )�”}”(hŒ<``struct drm_atomic_commit *state`` the driver state object ”h]”(j‚ )�”}”(hŒ#``struct drm_atomic_commit *state``”h]”jˆ )�”}”(hj€Uh]”hŒstruct drm_atomic_commit *state”…”�”}”(hj‚Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj~Uubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MHhjzUubjž )�”}”(hhh]”hÎ)�”}”(hŒthe driver state object”h]”hŒthe driver state object”…”�”}”(hj™Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j•Uh´MHhj–Uubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjzUubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j•Uh´MHhj>Uubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj"UubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj»Uh]”hŒ Description”…”�”}”(hj½Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¹Uubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MJhj"UubhÎ)�”}”(hŒSChecks if the writeback connector state is valid, and returns an error if it isn't.”h]”hŒUChecks if the writeback connector state is valid, and returns an error if it isn’t.”…”�”}”(hjÑUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MIhj"UubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjâUh]”hŒReturn”…”�”}”(hjäUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjàUubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MLhj"UubhÎ)�”}”(hŒZero for success or -errno”h]”hŒZero for success or -errno”…”�”}”(hjøUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MMhj"Uubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjçDh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ0drm_atomic_helper_check_plane_state (C function)”Œ%c.drm_atomic_helper_check_plane_state”hNt”auh1j† hjçDh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒÁint drm_atomic_helper_check_plane_state (struct drm_plane_state *plane_state, const struct drm_crtc_state *crtc_state, int min_scale, int max_scale, bool can_position, bool can_update_disabled)”h]”j¤ )�”}”(hŒÀint drm_atomic_helper_check_plane_state(struct drm_plane_state *plane_state, const struct drm_crtc_state *crtc_state, int min_scale, int max_scale, bool can_position, bool can_update_disabled)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj'Vh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj#Vh²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Moubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6Vh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj#Vh²hh³j5Vh´MoubjÍ )�”}”(hŒ#drm_atomic_helper_check_plane_state”h]”jÓ )�”}”(hŒ#drm_atomic_helper_check_plane_state”h]”hŒ#drm_atomic_helper_check_plane_state”…”�”}”(hjHVh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjDVubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj#Vh²hh³j5Vh´MoubjÞ)�”}”(hŒ™(struct drm_plane_state *plane_state, const struct drm_crtc_state *crtc_state, int min_scale, int max_scale, bool can_position, bool can_update_disabled)”h]”(jä)�”}”(hŒ#struct drm_plane_state *plane_state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjdVh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj`Vubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjqVh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj`Vubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_plane_state”h]”hŒdrm_plane_state”…”�”}”(hj‚Vh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjVubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j„VŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjJVsbŒ%c.drm_atomic_helper_check_plane_state”†”asbuh1hhj`Vubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢Vh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj`Vubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj°Vh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj`VubjÓ )�”}”(hŒ plane_state”h]”hŒ plane_state”…”�”}”(hj½Vh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj`Vubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj\Vubjä)�”}”(hŒ'const struct drm_crtc_state *crtc_state”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hjÖVh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjÒVubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjãVh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÒVubjª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjñVh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjÒVubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþVh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÒVubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_crtc_state”h]”hŒdrm_crtc_state”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj Wubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jWŒmodname”NŒ classname”Njé jì )�”}”jï ]”jžVŒ%c.drm_atomic_helper_check_plane_state”†”asbuh1hhjÒVubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-Wh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÒVubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj;Wh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÒVubjÓ )�”}”(hŒ crtc_state”h]”hŒ crtc_state”…”�”}”(hjHWh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÒVubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj\Vubjä)�”}”(hŒ int min_scale”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjaWh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj]Wubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjoWh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj]WubjÓ )�”}”(hŒ min_scale”h]”hŒ min_scale”…”�”}”(hj}Wh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj]Wubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj\Vubjä)�”}”(hŒ int max_scale”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj–Wh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj’Wubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤Wh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj’WubjÓ )�”}”(hŒ max_scale”h]”hŒ max_scale”…”�”}”(hj²Wh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj’Wubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj\Vubjä)�”}”(hŒbool can_position”h]”(j¦)�”}”(hj£Ih]”hŒbool”…”�”}”(hjËWh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjÇWubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØWh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÇWubjÓ )�”}”(hŒ can_position”h]”hŒ can_position”…”�”}”(hjæWh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÇWubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj\Vubjä)�”}”(hŒbool can_update_disabled”h]”(j¦)�”}”(hj£Ih]”hŒbool”…”�”}”(hjÿWh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjûWubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Xh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjûWubjÓ )�”}”(hŒcan_update_disabled”h]”hŒcan_update_disabled”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjûWubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj\Vubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj#Vh²hh³j5Vh´Moubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjVh²hh³j5Vh´Moubah}”(h]”jVah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j5Vh´MohjVh²hubj )�”}”(hhh]”hÎ)�”}”(hŒCheck plane state for validity”h]”hŒCheck plane state for validity”…”�”}”(hjDXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MohjAXh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjVh²hh³j5Vh´Moubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j\Xj$ j\Xj% ‰j& ‰j' ‰uh1j˜ h²hhjçDh³Nh´Nubj) )�”}”(hX **Parameters** ``struct drm_plane_state *plane_state`` plane state to check ``const struct drm_crtc_state *crtc_state`` CRTC state to check ``int min_scale`` minimum **src**:**dest** scaling factor in 16.16 fixed point ``int max_scale`` maximum **src**:**dest** scaling factor in 16.16 fixed point ``bool can_position`` is it legal to position the plane such that it doesn't cover the entire CRTC? This will generally only be false for primary planes. ``bool can_update_disabled`` can the plane be updated while the CRTC is disabled? **Description** Checks that a desired plane update is valid, and updates various bits of derived state (clipped coordinates etc.). Drivers that provide their own plane handling rather than helper-provided implementations may still wish to call this function to avoid duplication of error checking code. **Return** Zero if update appears valid, error code on failure”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjfXh]”hŒ Parameters”…”�”}”(hjhXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjdXubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mshj`Xubjw )�”}”(hhh]”(j| )�”}”(hŒ=``struct drm_plane_state *plane_state`` plane state to check ”h]”(j‚ )�”}”(hŒ'``struct drm_plane_state *plane_state``”h]”jˆ )�”}”(hj…Xh]”hŒ#struct drm_plane_state *plane_state”…”�”}”(hj‡Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjƒXubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MphjXubjž )�”}”(hhh]”hÎ)�”}”(hŒplane state to check”h]”hŒplane state to check”…”�”}”(hjžXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jšXh´Mphj›Xubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjXubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jšXh´Mphj|Xubj| )�”}”(hŒ@``const struct drm_crtc_state *crtc_state`` CRTC state to check ”h]”(j‚ )�”}”(hŒ+``const struct drm_crtc_state *crtc_state``”h]”jˆ )�”}”(hj¾Xh]”hŒ'const struct drm_crtc_state *crtc_state”…”�”}”(hjÀXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¼Xubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mqhj¸Xubjž )�”}”(hhh]”hÎ)�”}”(hŒCRTC state to check”h]”hŒCRTC state to check”…”�”}”(hj×Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÓXh´MqhjÔXubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¸Xubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÓXh´Mqhj|Xubj| )�”}”(hŒO``int min_scale`` minimum **src**:**dest** scaling factor in 16.16 fixed point ”h]”(j‚ )�”}”(hŒ``int min_scale``”h]”jˆ )�”}”(hj÷Xh]”hŒ int min_scale”…”�”}”(hjùXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjõXubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MrhjñXubjž )�”}”(hhh]”hÎ)�”}”(hŒ` and :c:type:`drm_plane_helper_funcs.atomic_check ` hooks provided by the driver. It also sets :c:type:`drm_crtc_state.planes_changed ` to indicate that a CRTC has updated planes. **Return** Zero for success or -errno”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj�]h]”hŒ Parameters”…”�”}”(hj�]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj‹]ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mõhj‡]ubjw )�”}”(hhh]”(j| )�”}”(hŒ&``struct drm_device *dev`` DRM device ”h]”(j‚ )�”}”(hŒ``struct drm_device *dev``”h]”jˆ )�”}”(hj¬]h]”hŒstruct drm_device *dev”…”�”}”(hj®]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjª]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mòhj¦]ubjž )�”}”(hhh]”hÎ)�”}”(hŒ DRM device”h]”hŒ DRM device”…”�”}”(hjÅ]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÁ]h´MòhjÂ]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¦]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÁ]h´Mòhj£]ubj| )�”}”(hŒ<``struct drm_atomic_commit *state`` the driver state object ”h]”(j‚ )�”}”(hŒ#``struct drm_atomic_commit *state``”h]”jˆ )�”}”(hjå]h]”hŒstruct drm_atomic_commit *state”…”�”}”(hjç]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjã]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Móhjß]ubjž )�”}”(hhh]”hÎ)�”}”(hŒthe driver state object”h]”hŒthe driver state object”…”�”}”(hjþ]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jú]h´Móhjû]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjß]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jú]h´Móhj£]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj‡]ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj ^h]”hŒ Description”…”�”}”(hj"^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj^ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mõhj‡]ubhÎ)�”}”(hXBCheck the state object to see if the requested state is physically possible. This does all the plane update related checks using by calling into the :c:type:`drm_crtc_helper_funcs.atomic_check ` and :c:type:`drm_plane_helper_funcs.atomic_check ` hooks provided by the driver.”h]”(hŒ•Check the state object to see if the requested state is physically possible. This does all the plane update related checks using by calling into the ”…”�”}”(hj6^h²hh³Nh´Nubh)�”}”(hŒD:c:type:`drm_crtc_helper_funcs.atomic_check `”h]”jˆ )�”}”(hj@^h]”hŒ"drm_crtc_helper_funcs.atomic_check”…”�”}”(hjB^h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj>^ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_crtc_helper_funcs”uh1hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Môhj6^ubhŒ and ”…”�”}”(hj6^h²hh³Nh´Nubh)�”}”(hŒF:c:type:`drm_plane_helper_funcs.atomic_check `”h]”jˆ )�”}”(hjd^h]”hŒ#drm_plane_helper_funcs.atomic_check”…”�”}”(hjf^h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjb^ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_plane_helper_funcs”uh1hh³j]^h´Môhj6^ubhŒ hooks provided by the driver.”…”�”}”(hj6^h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j]^h´Môhj‡]ubhÎ)�”}”(hŒqIt also sets :c:type:`drm_crtc_state.planes_changed ` to indicate that a CRTC has updated planes.”h]”(hŒ It also sets ”…”�”}”(hj‹^h²hh³Nh´Nubh)�”}”(hŒ8:c:type:`drm_crtc_state.planes_changed `”h]”jˆ )�”}”(hj•^h]”hŒdrm_crtc_state.planes_changed”…”�”}”(hj—^h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj“^ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_crtc_state”uh1hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mùhj‹^ubhŒ, to indicate that a CRTC has updated planes.”…”�”}”(hj‹^h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j²^h´Mùhj‡]ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj¿^h]”hŒReturn”…”�”}”(hjÁ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj½^ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mühj‡]ubhÎ)�”}”(hŒZero for success or -errno”h]”hŒZero for success or -errno”…”�”}”(hjÕ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mýhj‡]ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjçDh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ$drm_atomic_helper_check (C function)”Œc.drm_atomic_helper_check”hNt”auh1j† hjçDh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒUint drm_atomic_helper_check (struct drm_device *dev, struct drm_atomic_commit *state)”h]”j¤ )�”}”(hŒTint drm_atomic_helper_check(struct drm_device *dev, struct drm_atomic_commit *state)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj_h²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M7ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj_h²hh³j_h´M7ubjÍ )�”}”(hŒdrm_atomic_helper_check”h]”jÓ )�”}”(hŒdrm_atomic_helper_check”h]”hŒdrm_atomic_helper_check”…”�”}”(hj%_h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj!_ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj_h²hh³j_h´M7ubjÞ)�”}”(hŒ9(struct drm_device *dev, struct drm_atomic_commit *state)”h]”(jä)�”}”(hŒstruct drm_device *dev”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjA_h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj=_ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjN_h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj=_ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_device”h]”hŒ drm_device”…”�”}”(hj__h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj\_ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”ja_Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj'_sbŒc.drm_atomic_helper_check”†”asbuh1hhj=_ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj=_ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj�_h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj=_ubjÓ )�”}”(hŒdev”h]”hŒdev”…”�”}”(hjš_h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj=_ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj9_ubjä)�”}”(hŒstruct drm_atomic_commit *state”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Œdrm_atomic_commit”h]”hŒdrm_atomic_commit”…”�”}”(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.drm_atomic_helper_check”†”asbuh1hhj¯_ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjï_h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¯_ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjý_h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¯_ubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hj `h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¯_ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj9_ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj_h²hh³j_h´M7ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjü^h²hh³j_h´M7ubah}”(h]”j÷^ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j_h´M7hjù^h²hubj )�”}”(hhh]”hÎ)�”}”(hŒvalidate state object”h]”hŒvalidate state object”…”�”}”(hj4`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M7hj1`h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjù^h²hh³j_h´M7ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jL`j$ jL`j% ‰j& ‰j' ‰uh1j˜ h²hhjçDh³Nh´Nubj) )�”}”(hXF**Parameters** ``struct drm_device *dev`` DRM device ``struct drm_atomic_commit *state`` the driver state object **Description** Check the state object to see if the requested state is physically possible. Only CRTCs and planes have check callbacks, so for any additional (global) checking that a driver needs it can simply wrap that around this function. Drivers without such needs can directly use this as their :c:type:`drm_mode_config_funcs.atomic_check ` callback. This just wraps the two parts of the state checking for planes and modeset state in the default order: First it calls drm_atomic_helper_check_modeset() and then drm_atomic_helper_check_planes(). The assumption is that the **drm_plane_helper_funcs.atomic_check** and **drm_crtc_helper_funcs.atomic_check** functions depend upon an updated adjusted_mode.clock to e.g. properly compute watermarks. Note that zpos normalization will add all enable planes to the state which might not desired for some drivers. For example enable/disable of a cursor plane which have fixed zpos value would trigger all other enabled planes to be forced to the state change. IMPORTANT: As this function calls drm_atomic_helper_check_modeset() internally, its restrictions also apply: Drivers which set :c:type:`drm_crtc_state.mode_changed ` (e.g. in their :c:type:`drm_plane_helper_funcs.atomic_check ` hooks if a plane update can't be done without a full modeset) _must_ call drm_atomic_helper_check_modeset() function again after that change. **Return** Zero for success or -errno”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjV`h]”hŒ Parameters”…”�”}”(hjX`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjT`ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M;hjP`ubjw )�”}”(hhh]”(j| )�”}”(hŒ&``struct drm_device *dev`` DRM device ”h]”(j‚ )�”}”(hŒ``struct drm_device *dev``”h]”jˆ )�”}”(hju`h]”hŒstruct drm_device *dev”…”�”}”(hjw`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjs`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M8hjo`ubjž )�”}”(hhh]”hÎ)�”}”(hŒ DRM device”h]”hŒ DRM device”…”�”}”(hjŽ`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jŠ`h´M8hj‹`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjo`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jŠ`h´M8hjl`ubj| )�”}”(hŒ<``struct drm_atomic_commit *state`` the driver state object ”h]”(j‚ )�”}”(hŒ#``struct drm_atomic_commit *state``”h]”jˆ )�”}”(hj®`h]”hŒstruct drm_atomic_commit *state”…”�”}”(hj°`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¬`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M9hj¨`ubjž )�”}”(hhh]”hÎ)�”}”(hŒthe driver state object”h]”hŒthe driver state object”…”�”}”(hjÇ`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÃ`h´M9hjÄ`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¨`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÃ`h´M9hjl`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjP`ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjé`h]”hŒ Description”…”�”}”(hjë`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjç`ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M;hjP`ubhÎ)�”}”(hXkCheck the state object to see if the requested state is physically possible. Only CRTCs and planes have check callbacks, so for any additional (global) checking that a driver needs it can simply wrap that around this function. Drivers without such needs can directly use this as their :c:type:`drm_mode_config_funcs.atomic_check ` callback.”h]”(hXCheck the state object to see if the requested state is physically possible. Only CRTCs and planes have check callbacks, so for any additional (global) checking that a driver needs it can simply wrap that around this function. Drivers without such needs can directly use this as their ”…”�”}”(hjÿ`h²hh³Nh´Nubh)�”}”(hŒD:c:type:`drm_mode_config_funcs.atomic_check `”h]”jˆ )�”}”(hj ah]”hŒ"drm_mode_config_funcs.atomic_check”…”�”}”(hj ah²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjaubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_mode_config_funcs”uh1hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M:hjÿ`ubhŒ callback.”…”�”}”(hjÿ`h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j&ah´M:hjP`ubhÎ)�”}”(hXŠThis just wraps the two parts of the state checking for planes and modeset state in the default order: First it calls drm_atomic_helper_check_modeset() and then drm_atomic_helper_check_planes(). The assumption is that the **drm_plane_helper_funcs.atomic_check** and **drm_crtc_helper_funcs.atomic_check** functions depend upon an updated adjusted_mode.clock to e.g. properly compute watermarks.”h]”(hŒÞThis just wraps the two parts of the state checking for planes and modeset state in the default order: First it calls drm_atomic_helper_check_modeset() and then drm_atomic_helper_check_planes(). The assumption is that the ”…”�”}”(hj1ah²hh³Nh´Nubj3 )�”}”(hŒ'**drm_plane_helper_funcs.atomic_check**”h]”hŒ#drm_plane_helper_funcs.atomic_check”…”�”}”(hj9ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj1aubhŒ and ”…”�”}”(hj1ah²hh³Nh´Nubj3 )�”}”(hŒ&**drm_crtc_helper_funcs.atomic_check**”h]”hŒ"drm_crtc_helper_funcs.atomic_check”…”�”}”(hjKah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj1aubhŒZ functions depend upon an updated adjusted_mode.clock to e.g. properly compute watermarks.”…”�”}”(hj1ah²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M@hjP`ubhÎ)�”}”(hXNote that zpos normalization will add all enable planes to the state which might not desired for some drivers. For example enable/disable of a cursor plane which have fixed zpos value would trigger all other enabled planes to be forced to the state change.”h]”hXNote that zpos normalization will add all enable planes to the state which might not desired for some drivers. For example enable/disable of a cursor plane which have fixed zpos value would trigger all other enabled planes to be forced to the state change.”…”�”}”(hjdah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MGhjP`ubhÎ)�”}”(hŒ IMPORTANT:”h]”hŒ IMPORTANT:”…”�”}”(hjsah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MLhjP`ubhÎ)�”}”(hXŽAs this function calls drm_atomic_helper_check_modeset() internally, its restrictions also apply: Drivers which set :c:type:`drm_crtc_state.mode_changed ` (e.g. in their :c:type:`drm_plane_helper_funcs.atomic_check ` hooks if a plane update can't be done without a full modeset) _must_ call drm_atomic_helper_check_modeset() function again after that change.”h]”(hŒtAs this function calls drm_atomic_helper_check_modeset() internally, its restrictions also apply: Drivers which set ”…”�”}”(hj‚ah²hh³Nh´Nubh)�”}”(hŒ6:c:type:`drm_crtc_state.mode_changed `”h]”jˆ )�”}”(hjŒah]”hŒdrm_crtc_state.mode_changed”…”�”}”(hjŽah²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjŠaubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_crtc_state”uh1hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MNhj‚aubhŒ (e.g. in their ”…”�”}”(hj‚ah²hh³Nh´Nubh)�”}”(hŒF:c:type:`drm_plane_helper_funcs.atomic_check `”h]”jˆ )�”}”(hj°ah]”hŒ#drm_plane_helper_funcs.atomic_check”…”�”}”(hj²ah²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj®aubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_plane_helper_funcs”uh1hh³j©ah´MNhj‚aubhŒ� hooks if a plane update can’t be done without a full modeset) _must_ call drm_atomic_helper_check_modeset() function again after that change.”…”�”}”(hj‚ah²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j©ah´MNhjP`ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjÙah]”hŒReturn”…”�”}”(hjÛah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj×aubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”•h´MUhjP`ubhÎ)�”}”(hŒZero for success or -errno”h]”hŒZero for success or -errno”…”�”}”(hjïah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MVhjP`ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjçDh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ` can look at the legacy state filled out by this helper. Defacto this means this helper and the legacy state pointers are only really useful for transitioning an existing driver to the atomic world.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjîih]”hŒ Parameters”…”�”}”(hjðih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjìiubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mnhjèiubjw )�”}”(hhh]”(j| )�”}”(hŒ&``struct drm_device *dev`` DRM device ”h]”(j‚ )�”}”(hŒ``struct drm_device *dev``”h]”jˆ )�”}”(hj jh]”hŒstruct drm_device *dev”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj jubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mkhjjubjž )�”}”(hhh]”hÎ)�”}”(hŒ DRM device”h]”hŒ DRM device”…”�”}”(hj&jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j"jh´Mkhj#jubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j"jh´Mkhjjubj| )�”}”(hŒH``struct drm_atomic_commit *state`` atomic state object being committed ”h]”(j‚ )�”}”(hŒ#``struct drm_atomic_commit *state``”h]”jˆ )�”}”(hjFjh]”hŒstruct drm_atomic_commit *state”…”�”}”(hjHjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjDjubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mlhj@jubjž )�”}”(hhh]”hÎ)�”}”(hŒ#atomic state object being committed”h]”hŒ#atomic state object being committed”…”�”}”(hj_jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j[jh´Mlhj\jubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj@jubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j[jh´Mlhjjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjèiubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj�jh]”hŒ Description”…”�”}”(hjƒjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MnhjèiubhÎ)�”}”(hŒfThis function updates all the various legacy modeset state pointers in connectors, encoders and CRTCs.”h]”hŒfThis function updates all the various legacy modeset state pointers in connectors, encoders and CRTCs.”…”�”}”(hj—jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MmhjèiubhÎ)�”}”(hŒxDrivers can use this for building their own atomic commit if they don't have a pure helper-based modeset implementation.”h]”hŒzDrivers can use this for building their own atomic commit if they don’t have a pure helper-based modeset implementation.”…”�”}”(hj¦jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MphjèiubhÎ)�”}”(hXrSince these updates are not synchronized with lockings, only code paths called from :c:type:`drm_mode_config_helper_funcs.atomic_commit_tail ` can look at the legacy state filled out by this helper. Defacto this means this helper and the legacy state pointers are only really useful for transitioning an existing driver to the atomic world.”h]”(hŒTSince these updates are not synchronized with lockings, only code paths called from ”…”�”}”(hjµjh²hh³Nh´Nubh)�”}”(hŒX:c:type:`drm_mode_config_helper_funcs.atomic_commit_tail `”h]”jˆ )�”}”(hj¿jh]”hŒ/drm_mode_config_helper_funcs.atomic_commit_tail”…”�”}”(hjÁjh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj½jubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_mode_config_helper_funcs”uh1hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MshjµjubhŒÆ can look at the legacy state filled out by this helper. Defacto this means this helper and the legacy state pointers are only really useful for transitioning an existing driver to the atomic world.”…”�”}”(hjµjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÜjh´Mshjèiubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjçDh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ:drm_atomic_helper_calc_timestamping_constants (C function)”Œ/c.drm_atomic_helper_calc_timestamping_constants”hNt”auh1j† hjçDh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒTvoid drm_atomic_helper_calc_timestamping_constants (struct drm_atomic_commit *state)”h]”j¤ )�”}”(hŒSvoid drm_atomic_helper_calc_timestamping_constants(struct drm_atomic_commit *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjkh²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M¹ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjkh²hh³jkh´M¹ubjÍ )�”}”(hŒ-drm_atomic_helper_calc_timestamping_constants”h]”jÓ )�”}”(hŒ-drm_atomic_helper_calc_timestamping_constants”h]”hŒ-drm_atomic_helper_calc_timestamping_constants”…”�”}”(hj(kh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj$kubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjkh²hh³jkh´M¹ubjÞ)�”}”(hŒ!(struct drm_atomic_commit *state)”h]”jä)�”}”(hŒstruct drm_atomic_commit *state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjDkh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj@kubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQkh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj@kubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_atomic_commit”h]”hŒdrm_atomic_commit”…”�”}”(hjbkh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj_kubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jdkŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj*ksbŒ/c.drm_atomic_helper_calc_timestamping_constants”†”asbuh1hhj@kubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚kh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj@kubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj�kh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj@kubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hj�kh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj@kubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjnubjž )�”}”(hhh]”hÎ)�”}”(hŒthe driver state object”h]”hŒthe driver state object”…”�”}”(hj]nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jYnh´MÐhjZnubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj>nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jYnh´MÐhjnubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjæmubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjnh]”hŒ Description”…”�”}”(hj�nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj}nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MÒhjæmubhÎ)�”}”(hŒ´Loops over all connectors in the current state and if the mode has changed, change the mode of the CRTC, then call down the bridge chain and change the mode in all bridges as well.”h]”hŒ´Loops over all connectors in the current state and if the mode has changed, change the mode of the CRTC, then call down the bridge chain and change the mode in all bridges as well.”…”�”}”(hj•nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MÑhjæmubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjçDh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ6drm_atomic_helper_commit_modeset_disables (C function)”Œ+c.drm_atomic_helper_commit_modeset_disables”hNt”auh1j† hjçDh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒhvoid drm_atomic_helper_commit_modeset_disables (struct drm_device *dev, struct drm_atomic_commit *state)”h]”j¤ )�”}”(hŒgvoid drm_atomic_helper_commit_modeset_disables(struct drm_device *dev, struct drm_atomic_commit *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÄnh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjÀnh²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓnh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÀnh²hh³jÒnh´MubjÍ )�”}”(hŒ)drm_atomic_helper_commit_modeset_disables”h]”jÓ )�”}”(hŒ)drm_atomic_helper_commit_modeset_disables”h]”hŒ)drm_atomic_helper_commit_modeset_disables”…”�”}”(hjånh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjánubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÀnh²hh³jÒnh´MubjÞ)�”}”(hŒ9(struct drm_device *dev, struct drm_atomic_commit *state)”h]”(jä)�”}”(hŒstruct drm_device *dev”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjýnubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjýnubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_device”h]”hŒ drm_device”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjoubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j!oŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjçnsbŒ+c.drm_atomic_helper_commit_modeset_disables”†”asbuh1hhjýnubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?oh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjýnubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjMoh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjýnubjÓ )�”}”(hŒdev”h]”hŒdev”…”�”}”(hjZoh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjýnubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjùnubjä)�”}”(hŒstruct drm_atomic_commit *state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjsoh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjooubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€oh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjooubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_atomic_commit”h]”hŒdrm_atomic_commit”…”�”}”(hj‘oh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjŽoubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j“oŒmodname”NŒ classname”Njé jì )�”}”jï ]”j;oŒ+c.drm_atomic_helper_commit_modeset_disables”†”asbuh1hhjooubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯oh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjooubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj½oh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjooubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hjÊoh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjooubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjùnubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjÀnh²hh³jÒnh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj¼nh²hh³jÒnh´Mubah}”(h]”j·nah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jÒnh´Mhj¹nh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ!modeset commit to disable outputs”h]”hŒ!modeset commit to disable outputs”…”�”}”(hjôoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mhjñoh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¹nh²hh³jÒnh´Mubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j pj$ j pj% ‰j& ‰j' ‰uh1j˜ h²hhjçDh³Nh´Nubj) )�”}”(hXˆ**Parameters** ``struct drm_device *dev`` DRM device ``struct drm_atomic_commit *state`` atomic state object being committed **Description** This function shuts down all the outputs that need to be shut down and prepares them (if required) with the new mode. For compatibility with legacy CRTC helpers this should be called before drm_atomic_helper_commit_planes(), which is what the default commit function does. But drivers with different needs can group the modeset commits together and do the plane commits at the end. This is useful for drivers doing runtime PM since planes updates then only happen when the CRTC is actually enabled.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjph]”hŒ Parameters”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjpubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mhjpubjw )�”}”(hhh]”(j| )�”}”(hŒ&``struct drm_device *dev`` DRM device ”h]”(j‚ )�”}”(hŒ``struct drm_device *dev``”h]”jˆ )�”}”(hj5ph]”hŒstruct drm_device *dev”…”�”}”(hj7ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj3pubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mhj/pubjž )�”}”(hhh]”hÎ)�”}”(hŒ DRM device”h]”hŒ DRM device”…”�”}”(hjNph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jJph´MhjKpubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj/pubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jJph´Mhj,pubj| )�”}”(hŒH``struct drm_atomic_commit *state`` atomic state object being committed ”h]”(j‚ )�”}”(hŒ#``struct drm_atomic_commit *state``”h]”jˆ )�”}”(hjnph]”hŒstruct drm_atomic_commit *state”…”�”}”(hjpph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjlpubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mhjhpubjž )�”}”(hhh]”hÎ)�”}”(hŒ#atomic state object being committed”h]”hŒ#atomic state object being committed”…”�”}”(hj‡ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jƒph´Mhj„pubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjhpubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jƒph´Mhj,pubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjpubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj©ph]”hŒ Description”…”�”}”(hj«ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj§pubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MhjpubhÎ)�”}”(hŒuThis function shuts down all the outputs that need to be shut down and prepares them (if required) with the new mode.”h]”hŒuThis function shuts down all the outputs that need to be shut down and prepares them (if required) with the new mode.”…”�”}”(hj¿ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MhjpubhÎ)�”}”(hX|For compatibility with legacy CRTC helpers this should be called before drm_atomic_helper_commit_planes(), which is what the default commit function does. But drivers with different needs can group the modeset commits together and do the plane commits at the end. This is useful for drivers doing runtime PM since planes updates then only happen when the CRTC is actually enabled.”h]”hX|For compatibility with legacy CRTC helpers this should be called before drm_atomic_helper_commit_planes(), which is what the default commit function does. But drivers with different needs can group the modeset commits together and do the plane commits at the end. This is useful for drivers doing runtime PM since planes updates then only happen when the CRTC is actually enabled.”…”�”}”(hjÎph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mhjpubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjçDh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ0drm_atomic_helper_commit_writebacks (C function)”Œ%c.drm_atomic_helper_commit_writebacks”hNt”auh1j† hjçDh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒbvoid drm_atomic_helper_commit_writebacks (struct drm_device *dev, struct drm_atomic_commit *state)”h]”j¤ )�”}”(hŒavoid drm_atomic_helper_commit_writebacks(struct drm_device *dev, struct drm_atomic_commit *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjýph²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjùph²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M1ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj qh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjùph²hh³j qh´M1ubjÍ )�”}”(hŒ#drm_atomic_helper_commit_writebacks”h]”jÓ )�”}”(hŒ#drm_atomic_helper_commit_writebacks”h]”hŒ#drm_atomic_helper_commit_writebacks”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjqubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjùph²hh³j qh´M1ubjÞ)�”}”(hŒ9(struct drm_device *dev, struct drm_atomic_commit *state)”h]”(jä)�”}”(hŒstruct drm_device *dev”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj:qh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj6qubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGqh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj6qubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_device”h]”hŒ drm_device”…”�”}”(hjXqh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjUqubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jZqŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj qsbŒ%c.drm_atomic_helper_commit_writebacks”†”asbuh1hhj6qubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxqh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj6qubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj†qh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj6qubjÓ )�”}”(hŒdev”h]”hŒdev”…”�”}”(hj“qh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj6qubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj2qubjä)�”}”(hŒstruct drm_atomic_commit *state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj¬qh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj¨qubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹qh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¨qubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_atomic_commit”h]”hŒdrm_atomic_commit”…”�”}”(hjÊqh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÇqubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jÌqŒmodname”NŒ classname”Njé jì )�”}”jï ]”jtqŒ%c.drm_atomic_helper_commit_writebacks”†”asbuh1hhj¨qubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjèqh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¨qubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjöqh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¨qubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¨qubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj2qubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjùph²hh³j qh´M1ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjõph²hh³j qh´M1ubah}”(h]”jðpah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j qh´M1hjòph²hubj )�”}”(hhh]”hÎ)�”}”(hŒissue writebacks”h]”hŒissue writebacks”…”�”}”(hj-rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M1hj*rh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjòph²hh³j qh´M1ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jErj$ jErj% ‰j& ‰j' ‰uh1j˜ h²hhjçDh³Nh´Nubj) )�”}”(hX.**Parameters** ``struct drm_device *dev`` DRM device ``struct drm_atomic_commit *state`` atomic state object being committed **Description** This loops over the connectors, checks if the new state requires a writeback job to be issued and in that case issues an atomic commit on each connector.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjOrh]”hŒ Parameters”…”�”}”(hjQrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjMrubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M5hjIrubjw )�”}”(hhh]”(j| )�”}”(hŒ&``struct drm_device *dev`` DRM device ”h]”(j‚ )�”}”(hŒ``struct drm_device *dev``”h]”jˆ )�”}”(hjnrh]”hŒstruct drm_device *dev”…”�”}”(hjprh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjlrubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M2hjhrubjž )�”}”(hhh]”hÎ)�”}”(hŒ DRM device”h]”hŒ DRM device”…”�”}”(hj‡rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jƒrh´M2hj„rubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjhrubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jƒrh´M2hjerubj| )�”}”(hŒH``struct drm_atomic_commit *state`` atomic state object being committed ”h]”(j‚ )�”}”(hŒ#``struct drm_atomic_commit *state``”h]”jˆ )�”}”(hj§rh]”hŒstruct drm_atomic_commit *state”…”�”}”(hj©rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¥rubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M3hj¡rubjž )�”}”(hhh]”hÎ)�”}”(hŒ#atomic state object being committed”h]”hŒ#atomic state object being committed”…”�”}”(hjÀrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¼rh´M3hj½rubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¡rubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¼rh´M3hjerubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjIrubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjârh]”hŒ Description”…”�”}”(hjärh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjàrubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M5hjIrubhÎ)�”}”(hŒ™This loops over the connectors, checks if the new state requires a writeback job to be issued and in that case issues an atomic commit on each connector.”h]”hŒ™This loops over the connectors, checks if the new state requires a writeback job to be issued and in that case issues an atomic commit on each connector.”…”�”}”(hjørh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M4hjIrubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjçDh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ?drm_atomic_helper_commit_encoder_bridge_pre_enable (C function)”Œ4c.drm_atomic_helper_commit_encoder_bridge_pre_enable”hNt”auh1j† hjçDh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒqvoid drm_atomic_helper_commit_encoder_bridge_pre_enable (struct drm_device *dev, struct drm_atomic_commit *state)”h]”j¤ )�”}”(hŒpvoid drm_atomic_helper_commit_encoder_bridge_pre_enable(struct drm_device *dev, struct drm_atomic_commit *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj'sh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj#sh²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MPubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6sh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj#sh²hh³j5sh´MPubjÍ )�”}”(hŒ2drm_atomic_helper_commit_encoder_bridge_pre_enable”h]”jÓ )�”}”(hŒ2drm_atomic_helper_commit_encoder_bridge_pre_enable”h]”hŒ2drm_atomic_helper_commit_encoder_bridge_pre_enable”…”�”}”(hjHsh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjDsubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj#sh²hh³j5sh´MPubjÞ)�”}”(hŒ9(struct drm_device *dev, struct drm_atomic_commit *state)”h]”(jä)�”}”(hŒstruct drm_device *dev”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjdsh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj`subj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjqsh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj`subh)�”}”(hhh]”jÓ )�”}”(hŒ drm_device”h]”hŒ drm_device”…”�”}”(hj‚sh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjsubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j„sŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjJssbŒ4c.drm_atomic_helper_commit_encoder_bridge_pre_enable”†”asbuh1hhj`subj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢sh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj`subj9)�”}”(hjOh]”hŒ*”…”�”}”(hj°sh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj`subjÓ )�”}”(hŒdev”h]”hŒdev”…”�”}”(hj½sh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj`subeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj\subjä)�”}”(hŒstruct drm_atomic_commit *state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjÖsh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjÒsubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjãsh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÒsubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_atomic_commit”h]”hŒdrm_atomic_commit”…”�”}”(hjôsh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjñsubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jösŒmodname”NŒ classname”Njé jì )�”}”jï ]”jžsŒ4c.drm_atomic_helper_commit_encoder_bridge_pre_enable”†”asbuh1hhjÒsubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÒsubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj th²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÒsubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hj-th²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÒsubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj\subeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj#sh²hh³j5sh´MPubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjsh²hh³j5sh´MPubah}”(h]”jsah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j5sh´MPhjsh²hubj )�”}”(hhh]”hÎ)�”}”(hŒpre-enable bridges”h]”hŒpre-enable bridges”…”�”}”(hjWth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MPhjTth²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjsh²hh³j5sh´MPubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jotj$ jotj% ‰j& ‰j' ‰uh1j˜ h²hhjçDh³Nh´Nubj) )�”}”(hŒò**Parameters** ``struct drm_device *dev`` DRM device ``struct drm_atomic_commit *state`` atomic state object being committed **Description** This loops over the connectors and if the CRTC needs it, pre-enables the entire bridge chain.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjyth]”hŒ Parameters”…”�”}”(hj{th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjwtubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MThjstubjw )�”}”(hhh]”(j| )�”}”(hŒ&``struct drm_device *dev`` DRM device ”h]”(j‚ )�”}”(hŒ``struct drm_device *dev``”h]”jˆ )�”}”(hj˜th]”hŒstruct drm_device *dev”…”�”}”(hjšth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj–tubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MQhj’tubjž )�”}”(hhh]”hÎ)�”}”(hŒ DRM device”h]”hŒ DRM device”…”�”}”(hj±th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j­th´MQhj®tubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj’tubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j­th´MQhj�tubj| )�”}”(hŒH``struct drm_atomic_commit *state`` atomic state object being committed ”h]”(j‚ )�”}”(hŒ#``struct drm_atomic_commit *state``”h]”jˆ )�”}”(hjÑth]”hŒstruct drm_atomic_commit *state”…”�”}”(hjÓth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÏtubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MRhjËtubjž )�”}”(hhh]”hÎ)�”}”(hŒ#atomic state object being committed”h]”hŒ#atomic state object being committed”…”�”}”(hjêth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jæth´MRhjçtubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjËtubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jæth´MRhj�tubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjstubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj uh]”hŒ Description”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj uubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MThjstubhÎ)�”}”(hŒ]This loops over the connectors and if the CRTC needs it, pre-enables the entire bridge chain.”h]”hŒ]This loops over the connectors and if the CRTC needs it, pre-enables the entire bridge chain.”…”�”}”(hj"uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MShjstubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjçDh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ1drm_atomic_helper_commit_crtc_enable (C function)”Œ&c.drm_atomic_helper_commit_crtc_enable”hNt”auh1j† hjçDh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒcvoid drm_atomic_helper_commit_crtc_enable (struct drm_device *dev, struct drm_atomic_commit *state)”h]”j¤ )�”}”(hŒbvoid drm_atomic_helper_commit_crtc_enable(struct drm_device *dev, struct drm_atomic_commit *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjQuh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjMuh²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mzubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`uh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjMuh²hh³j_uh´MzubjÍ )�”}”(hŒ$drm_atomic_helper_commit_crtc_enable”h]”jÓ )�”}”(hŒ$drm_atomic_helper_commit_crtc_enable”h]”hŒ$drm_atomic_helper_commit_crtc_enable”…”�”}”(hjruh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjnuubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjMuh²hh³j_uh´MzubjÞ)�”}”(hŒ9(struct drm_device *dev, struct drm_atomic_commit *state)”h]”(jä)�”}”(hŒstruct drm_device *dev”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjŽuh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjŠuubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›uh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjŠuubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_device”h]”hŒ drm_device”…”�”}”(hj¬uh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj©uubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j®uŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjtusbŒ&c.drm_atomic_helper_commit_crtc_enable”†”asbuh1hhjŠuubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌuh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjŠuubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÚuh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŠuubjÓ )�”}”(hŒdev”h]”hŒdev”…”�”}”(hjçuh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjŠuubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj†uubjä)�”}”(hŒstruct drm_atomic_commit *state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjüuubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj vh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjüuubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_atomic_commit”h]”hŒdrm_atomic_commit”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjvubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j vŒmodname”NŒ classname”Njé jì )�”}”jï ]”jÈuŒ&c.drm_atomic_helper_commit_crtc_enable”†”asbuh1hhjüuubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j:yh´M¤hj;yubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjyubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j:yh´M¤hjãxubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÇxubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj`yh]”hŒ Description”…”�”}”(hjbyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj^yubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M¦hjÇxubhÎ)�”}”(hŒkThis loops over all connectors in the new state, and of the CRTC needs it, enables the entire bridge chain.”h]”hŒkThis loops over all connectors in the new state, and of the CRTC needs it, enables the entire bridge chain.”…”�”}”(hjvyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M¥hjÇxubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjçDh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ5drm_atomic_helper_commit_modeset_enables (C function)”Œ*c.drm_atomic_helper_commit_modeset_enables”hNt”auh1j† hjçDh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒgvoid drm_atomic_helper_commit_modeset_enables (struct drm_device *dev, struct drm_atomic_commit *state)”h]”j¤ )�”}”(hŒfvoid drm_atomic_helper_commit_modeset_enables(struct drm_device *dev, struct drm_atomic_commit *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¥yh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj¡yh²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MØubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´yh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¡yh²hh³j³yh´MØubjÍ )�”}”(hŒ(drm_atomic_helper_commit_modeset_enables”h]”jÓ )�”}”(hŒ(drm_atomic_helper_commit_modeset_enables”h]”hŒ(drm_atomic_helper_commit_modeset_enables”…”�”}”(hjÆyh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÂyubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj¡yh²hh³j³yh´MØubjÞ)�”}”(hŒ9(struct drm_device *dev, struct drm_atomic_commit *state)”h]”(jä)�”}”(hŒstruct drm_device *dev”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjâyh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjÞyubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïyh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÞyubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_device”h]”hŒ drm_device”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjýyubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jzŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjÈysbŒ*c.drm_atomic_helper_commit_modeset_enables”†”asbuh1hhjÞyubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj zh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÞyubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj.zh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÞyubjÓ )�”}”(hŒdev”h]”hŒdev”…”�”}”(hj;zh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÞyubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÚyubjä)�”}”(hŒstruct drm_atomic_commit *state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjTzh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjPzubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjazh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjPzubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_atomic_commit”h]”hŒdrm_atomic_commit”…”�”}”(hjrzh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjozubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jtzŒmodname”NŒ classname”Njé jì )�”}”jï ]”jzŒ*c.drm_atomic_helper_commit_modeset_enables”†”asbuh1hhjPzubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�zh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjPzubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjžzh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjPzubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hj«zh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjPzubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÚyubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj¡yh²hh³j³yh´MØubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj�yh²hh³j³yh´MØubah}”(h]”j˜yah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j³yh´MØhjšyh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ modeset commit to enable outputs”h]”hŒ modeset commit to enable outputs”…”�”}”(hjÕzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MØhjÒzh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjšyh²hh³j³yh´MØubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jízj$ jízj% ‰j& ‰j' ‰uh1j˜ h²hhjçDh³Nh´Nubj) )�”}”(hX}**Parameters** ``struct drm_device *dev`` DRM device ``struct drm_atomic_commit *state`` atomic state object being committed **Description** This function enables all the outputs with the new configuration which had to be turned off for the update. For compatibility with legacy CRTC helpers this should be called after drm_atomic_helper_commit_planes(), which is what the default commit function does. But drivers with different needs can group the modeset commits together and do the plane commits at the end. This is useful for drivers doing runtime PM since planes updates then only happen when the CRTC is actually enabled.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj÷zh]”hŒ Parameters”…”�”}”(hjùzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjõzubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MÜhjñzubjw )�”}”(hhh]”(j| )�”}”(hŒ&``struct drm_device *dev`` DRM device ”h]”(j‚ )�”}”(hŒ``struct drm_device *dev``”h]”jˆ )�”}”(hj{h]”hŒstruct drm_device *dev”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MÙhj{ubjž )�”}”(hhh]”hÎ)�”}”(hŒ DRM device”h]”hŒ DRM device”…”�”}”(hj/{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j+{h´MÙhj,{ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj{ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j+{h´MÙhj {ubj| )�”}”(hŒH``struct drm_atomic_commit *state`` atomic state object being committed ”h]”(j‚ )�”}”(hŒ#``struct drm_atomic_commit *state``”h]”jˆ )�”}”(hjO{h]”hŒstruct drm_atomic_commit *state”…”�”}”(hjQ{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjM{ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MÚhjI{ubjž )�”}”(hhh]”hÎ)�”}”(hŒ#atomic state object being committed”h]”hŒ#atomic state object being committed”…”�”}”(hjh{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jd{h´MÚhje{ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjI{ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jd{h´MÚhj {ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjñzubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjŠ{h]”hŒ Description”…”�”}”(hjŒ{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjˆ{ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MÜhjñzubhÎ)�”}”(hŒkThis function enables all the outputs with the new configuration which had to be turned off for the update.”h]”hŒkThis function enables all the outputs with the new configuration which had to be turned off for the update.”…”�”}”(hj {h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MÛhjñzubhÎ)�”}”(hX{For compatibility with legacy CRTC helpers this should be called after drm_atomic_helper_commit_planes(), which is what the default commit function does. But drivers with different needs can group the modeset commits together and do the plane commits at the end. This is useful for drivers doing runtime PM since planes updates then only happen when the CRTC is actually enabled.”h]”hX{For compatibility with legacy CRTC helpers this should be called after drm_atomic_helper_commit_planes(), which is what the default commit function does. But drivers with different needs can group the modeset commits together and do the plane commits at the end. This is useful for drivers doing runtime PM since planes updates then only happen when the CRTC is actually enabled.”…”�”}”(hj¯{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MÞhjñzubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjçDh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ.drm_atomic_helper_wait_for_fences (C function)”Œ#c.drm_atomic_helper_wait_for_fences”hNt”auh1j† hjçDh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒnint drm_atomic_helper_wait_for_fences (struct drm_device *dev, struct drm_atomic_commit *state, bool pre_swap)”h]”j¤ )�”}”(hŒmint drm_atomic_helper_wait_for_fences(struct drm_device *dev, struct drm_atomic_commit *state, bool pre_swap)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjÞ{h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjÚ{h²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjí{h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÚ{h²hh³jì{h´MubjÍ )�”}”(hŒ!drm_atomic_helper_wait_for_fences”h]”jÓ )�”}”(hŒ!drm_atomic_helper_wait_for_fences”h]”hŒ!drm_atomic_helper_wait_for_fences”…”�”}”(hjÿ{h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjû{ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÚ{h²hh³jì{h´MubjÞ)�”}”(hŒH(struct drm_device *dev, struct drm_atomic_commit *state, bool pre_swap)”h]”(jä)�”}”(hŒstruct drm_device *dev”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Œ drm_device”h]”hŒ drm_device”…”�”}”(hj9|h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj6|ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j;|Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj|sbŒ#c.drm_atomic_helper_wait_for_fences”†”asbuh1hhj|ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjY|h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj|ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjg|h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj|ubjÓ )�”}”(hŒdev”h]”hŒdev”…”�”}”(hjt|h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj|ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj|ubjä)�”}”(hŒstruct drm_atomic_commit *state”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Œdrm_atomic_commit”h]”hŒdrm_atomic_commit”…”�”}”(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ï ]”jU|Œ#c.drm_atomic_helper_wait_for_fences”†”asbuh1hhj‰|ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉ|h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj‰|ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj×|h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‰|ubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hjä|h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj‰|ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj|ubjä)�”}”(hŒ bool pre_swap”h]”(j¦)�”}”(hj£Ih]”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Œpre_swap”h]”hŒpre_swap”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjù|ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj|ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjÚ{h²hh³jì{h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjÖ{h²hh³jì{h´Mubah}”(h]”jÑ{ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jì{h´MhjÓ{h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ&wait for fences stashed in plane state”h]”hŒ&wait for fences stashed in plane state”…”�”}”(hjB}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mhj?}h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÓ{h²hh³jì{h´Mubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jZ}j$ jZ}j% ‰j& ‰j' ‰uh1j˜ h²hhjçDh³Nh´Nubj) )�”}”(hX**Parameters** ``struct drm_device *dev`` DRM device ``struct drm_atomic_commit *state`` atomic state object with old state structures ``bool pre_swap`` If true, do an interruptible wait, and **state** is the new state. Otherwise **state** is the old state. **Description** For implicit sync, driver should fish the exclusive fence out from the incoming fb's and stash it in the drm_plane_state. This is called after drm_atomic_helper_swap_state() so it uses the current plane state (and just uses the atomic state to find the changed planes) Note that **pre_swap** is needed since the point where we block for fences moves around depending upon whether an atomic commit is blocking or non-blocking. For non-blocking commit all waiting needs to happen after drm_atomic_helper_swap_state() is called, but for blocking commits we want to wait **before** we do anything that can't be easily rolled back. That is before we call drm_atomic_helper_swap_state(). Returns zero if success or < 0 if dma_fence_wait() fails.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjd}h]”hŒ Parameters”…”�”}”(hjf}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjb}ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M hj^}ubjw )�”}”(hhh]”(j| )�”}”(hŒ&``struct drm_device *dev`` DRM device ”h]”(j‚ )�”}”(hŒ``struct drm_device *dev``”h]”jˆ )�”}”(hjƒ}h]”hŒstruct drm_device *dev”…”�”}”(hj…}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj�}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mhj}}ubjž )�”}”(hhh]”hÎ)�”}”(hŒ DRM device”h]”hŒ DRM device”…”�”}”(hjœ}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j˜}h´Mhj™}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj}}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j˜}h´Mhjz}ubj| )�”}”(hŒR``struct drm_atomic_commit *state`` atomic state object with old state structures ”h]”(j‚ )�”}”(hŒ#``struct drm_atomic_commit *state``”h]”jˆ )�”}”(hj¼}h]”hŒstruct drm_atomic_commit *state”…”�”}”(hj¾}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjº}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mhj¶}ubjž )�”}”(hhh]”hÎ)�”}”(hŒ-atomic state object with old state structures”h]”hŒ-atomic state object with old state structures”…”�”}”(hjÕ}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÑ}h´MhjÒ}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¶}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÑ}h´Mhjz}ubj| )�”}”(hŒ{``bool pre_swap`` If true, do an interruptible wait, and **state** is the new state. Otherwise **state** is the old state. ”h]”(j‚ )�”}”(hŒ``bool pre_swap``”h]”jˆ )�”}”(hjõ}h]”hŒ bool pre_swap”…”�”}”(hj÷}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjó}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M hjï}ubjž )�”}”(hhh]”hÎ)�”}”(hŒhIf true, do an interruptible wait, and **state** is the new state. Otherwise **state** is the old state.”h]”(hŒ'If true, do an interruptible wait, and ”…”�”}”(hj~h²hh³Nh´Nubj3 )�”}”(hŒ **state**”h]”hŒstate”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj~ubhŒ is the new state. Otherwise ”…”�”}”(hj~h²hh³Nh´Nubj3 )�”}”(hŒ **state**”h]”hŒstate”…”�”}”(hj(~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj~ubhŒ is the old state.”…”�”}”(hj~h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mhj ~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjï}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j ~h´M hjz}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj^}ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjU~h]”hŒ Description”…”�”}”(hjW~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjS~ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M"hj^}ubhÎ)�”}”(hX For implicit sync, driver should fish the exclusive fence out from the incoming fb's and stash it in the drm_plane_state. This is called after drm_atomic_helper_swap_state() so it uses the current plane state (and just uses the atomic state to find the changed planes)”h]”hXFor implicit sync, driver should fish the exclusive fence out from the incoming fb’s and stash it in the drm_plane_state. This is called after drm_atomic_helper_swap_state() so it uses the current plane state (and just uses the atomic state to find the changed planes)”…”�”}”(hjk~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M!hj^}ubhÎ)�”}”(hXœNote that **pre_swap** is needed since the point where we block for fences moves around depending upon whether an atomic commit is blocking or non-blocking. For non-blocking commit all waiting needs to happen after drm_atomic_helper_swap_state() is called, but for blocking commits we want to wait **before** we do anything that can't be easily rolled back. That is before we call drm_atomic_helper_swap_state().”h]”(hŒ Note that ”…”�”}”(hjz~h²hh³Nh´Nubj3 )�”}”(hŒ **pre_swap**”h]”hŒpre_swap”…”�”}”(hj‚~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjz~ubhX is needed since the point where we block for fences moves around depending upon whether an atomic commit is blocking or non-blocking. For non-blocking commit all waiting needs to happen after drm_atomic_helper_swap_state() is called, but for blocking commits we want to wait ”…”�”}”(hjz~h²hh³Nh´Nubj3 )�”}”(hŒ **before**”h]”hŒbefore”…”�”}”(hj”~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjz~ubhŒj we do anything that can’t be easily rolled back. That is before we call drm_atomic_helper_swap_state().”…”�”}”(hjz~h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M&hj^}ubhÎ)�”}”(hŒ9Returns zero if success or < 0 if dma_fence_wait() fails.”h]”hŒ9Returns zero if success or < 0 if dma_fence_wait() fails.”…”�”}”(hj­~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M-hj^}ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjçDh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ/drm_atomic_helper_wait_for_vblanks (C function)”Œ$c.drm_atomic_helper_wait_for_vblanks”hNt”auh1j† hjçDh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒavoid drm_atomic_helper_wait_for_vblanks (struct drm_device *dev, struct drm_atomic_commit *state)”h]”j¤ )�”}”(hŒ`void drm_atomic_helper_wait_for_vblanks(struct drm_device *dev, struct drm_atomic_commit *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÜ~h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjØ~h²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.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Œ"drm_atomic_helper_wait_for_vblanks”h]”jÓ )�”}”(hŒ"drm_atomic_helper_wait_for_vblanks”h]”hŒ"drm_atomic_helper_wait_for_vblanks”…”�”}”(hjý~h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjù~ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjØ~h²hh³jê~h´MRubjÞ)�”}”(hŒ9(struct drm_device *dev, struct drm_atomic_commit *state)”h]”(jä)�”}”(hŒstruct drm_device *dev”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(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Œ drm_device”h]”hŒ drm_device”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj4ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j9Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjÿ~sbŒ$c.drm_atomic_helper_wait_for_vblanks”†”asbuh1hhjubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjubjÓ )�”}”(hŒdev”h]”hŒdev”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjubjä)�”}”(hŒstruct drm_atomic_commit *state”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Œdrm_atomic_commit”h]”hŒdrm_atomic_commit”…”�”}”(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ï ]”jSŒ$c.drm_atomic_helper_wait_for_vblanks”†”asbuh1hhj‡ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj‡ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‡ubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj‡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjØ~h²hh³jê~h´MRubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œwait for vblank on CRTCs”h]”hŒwait for vblank on CRTCs”…”�”}”(hj €h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.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²hhjçDh³Nh´Nubj) )�”}”(hXl**Parameters** ``struct drm_device *dev`` DRM device ``struct drm_atomic_commit *state`` atomic state object being committed **Description** Helper to, after atomic commit, wait for vblanks on all affected CRTCs (ie. before cleaning up old framebuffers using drm_atomic_helper_cleanup_planes()). It will only wait on CRTCs where the framebuffers have actually changed to optimize for the legacy cursor and plane update use-case. Drivers using the nonblocking commit tracking support initialized by calling drm_atomic_helper_setup_commit() should look at drm_atomic_helper_wait_for_flip_done() as an alternative.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj.€h]”hŒ Parameters”…”�”}”(hj0€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj,€ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MVhj(€ubjw )�”}”(hhh]”(j| )�”}”(hŒ&``struct drm_device *dev`` DRM device ”h]”(j‚ )�”}”(hŒ``struct drm_device *dev``”h]”jˆ )�”}”(hjM€h]”hŒstruct drm_device *dev”…”�”}”(hjO€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjK€ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MShjG€ubjž )�”}”(hhh]”hÎ)�”}”(hŒ DRM device”h]”hŒ DRM device”…”�”}”(hjf€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jb€h´MShjc€ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjG€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jb€h´MShjD€ubj| )�”}”(hŒH``struct drm_atomic_commit *state`` atomic state object being committed ”h]”(j‚ )�”}”(hŒ#``struct drm_atomic_commit *state``”h]”jˆ )�”}”(hj†€h]”hŒstruct drm_atomic_commit *state”…”�”}”(hjˆ€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj„€ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MThj€€ubjž )�”}”(hhh]”hÎ)�”}”(hŒ#atomic state object being committed”h]”hŒ#atomic state object being committed”…”�”}”(hjŸ€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j›€h´MThjœ€ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj€€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j›€h´MThjD€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj(€ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjÁ€h]”hŒ Description”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¿€ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MVhj(€ubhÎ)�”}”(hXHelper to, after atomic commit, wait for vblanks on all affected CRTCs (ie. before cleaning up old framebuffers using drm_atomic_helper_cleanup_planes()). It will only wait on CRTCs where the framebuffers have actually changed to optimize for the legacy cursor and plane update use-case.”h]”hXHelper to, after atomic commit, wait for vblanks on all affected CRTCs (ie. before cleaning up old framebuffers using drm_atomic_helper_cleanup_planes()). It will only wait on CRTCs where the framebuffers have actually changed to optimize for the legacy cursor and plane update use-case.”…”�”}”(hj×€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MUhj(€ubhÎ)�”}”(hŒ¶Drivers using the nonblocking commit tracking support initialized by calling drm_atomic_helper_setup_commit() should look at drm_atomic_helper_wait_for_flip_done() as an alternative.”h]”hŒ¶Drivers using the nonblocking commit tracking support initialized by calling drm_atomic_helper_setup_commit() should look at drm_atomic_helper_wait_for_flip_done() as an alternative.”…”�”}”(hjæ€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M[hj(€ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjçDh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ1drm_atomic_helper_wait_for_flip_done (C function)”Œ&c.drm_atomic_helper_wait_for_flip_done”hNt”auh1j† hjçDh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒcvoid drm_atomic_helper_wait_for_flip_done (struct drm_device *dev, struct drm_atomic_commit *state)”h]”j¤ )�”}”(hŒbvoid drm_atomic_helper_wait_for_flip_done(struct drm_device *dev, struct drm_atomic_commit *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj�h²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.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Œ$drm_atomic_helper_wait_for_flip_done”h]”jÓ )�”}”(hŒ$drm_atomic_helper_wait_for_flip_done”h]”hŒ$drm_atomic_helper_wait_for_flip_done”…”�”}”(hj6�h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj2�ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj�h²hh³j#�h´M�ubjÞ)�”}”(hŒ9(struct drm_device *dev, struct drm_atomic_commit *state)”h]”(jä)�”}”(hŒstruct drm_device *dev”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjR�h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjN�ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_�h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjN�ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_device”h]”hŒ drm_device”…”�”}”(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%)�”}”jj8�sbŒ&c.drm_atomic_helper_wait_for_flip_done”†”asbuh1hhjN�ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj��h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjN�ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjž�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjN�ubjÓ )�”}”(hŒdev”h]”hŒdev”…”�”}”(hj«�h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjN�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjJ�ubjä)�”}”(hŒstruct drm_atomic_commit *state”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Œdrm_atomic_commit”h]”hŒdrm_atomic_commit”…”�”}”(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.drm_atomic_helper_wait_for_flip_done”†”asbuh1hhjÀ�ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÀ�ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÀ�ubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÀ�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjJ�ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj�h²hh³j#�h´M�ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ"wait for all page flips to be done”h]”hŒ"wait for all page flips to be done”…”�”}”(hjE‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M�hjB‚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²hhjçDh³Nh´Nubj) )�”}”(hXw**Parameters** ``struct drm_device *dev`` DRM device ``struct drm_atomic_commit *state`` atomic state object being committed **Description** Helper to, after atomic commit, wait for page flips on all affected crtcs (ie. before cleaning up old framebuffers using drm_atomic_helper_cleanup_planes()). Compared to drm_atomic_helper_wait_for_vblanks() this waits for the completion on all CRTCs, assuming that cursors-only updates are signalling their completion immediately (or using a different path). This requires that drivers use the nonblocking commit tracking support initialized using drm_atomic_helper_setup_commit().”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjg‚h]”hŒ Parameters”…”�”}”(hji‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hje‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M”hja‚ubjw )�”}”(hhh]”(j| )�”}”(hŒ&``struct drm_device *dev`` DRM device ”h]”(j‚ )�”}”(hŒ``struct drm_device *dev``”h]”jˆ )�”}”(hj†‚h]”hŒstruct drm_device *dev”…”�”}”(hjˆ‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj„‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M‘hj€‚ubjž )�”}”(hhh]”hÎ)�”}”(hŒ DRM device”h]”hŒ DRM device”…”�”}”(hjŸ‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j›‚h´M‘hjœ‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj€‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j›‚h´M‘hj}‚ubj| )�”}”(hŒH``struct drm_atomic_commit *state`` atomic state object being committed ”h]”(j‚ )�”}”(hŒ#``struct drm_atomic_commit *state``”h]”jˆ )�”}”(hj¿‚h]”hŒstruct drm_atomic_commit *state”…”�”}”(hjÁ‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj½‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M’hj¹‚ubjž )�”}”(hhh]”hÎ)�”}”(hŒ#atomic state object being committed”h]”hŒ#atomic state object being committed”…”�”}”(hjØ‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÔ‚h´M’hjÕ‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¹‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÔ‚h´M’hj}‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hja‚ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjú‚h]”hŒ Description”…”�”}”(hjü‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjø‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M”hja‚ubhÎ)�”}”(hXfHelper to, after atomic commit, wait for page flips on all affected crtcs (ie. before cleaning up old framebuffers using drm_atomic_helper_cleanup_planes()). Compared to drm_atomic_helper_wait_for_vblanks() this waits for the completion on all CRTCs, assuming that cursors-only updates are signalling their completion immediately (or using a different path).”h]”hXfHelper to, after atomic commit, wait for page flips on all affected crtcs (ie. before cleaning up old framebuffers using drm_atomic_helper_cleanup_planes()). Compared to drm_atomic_helper_wait_for_vblanks() this waits for the completion on all CRTCs, assuming that cursors-only updates are signalling their completion immediately (or using a different path).”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M“hja‚ubhÎ)�”}”(hŒzThis requires that drivers use the nonblocking commit tracking support initialized using drm_atomic_helper_setup_commit().”h]”hŒzThis requires that drivers use the nonblocking commit tracking support initialized using drm_atomic_helper_setup_commit().”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mšhja‚ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjçDh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ*drm_atomic_helper_commit_tail (C function)”Œc.drm_atomic_helper_commit_tail”hNt”auh1j† hjçDh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒDvoid drm_atomic_helper_commit_tail (struct drm_atomic_commit *state)”h]”j¤ )�”}”(hŒCvoid drm_atomic_helper_commit_tail(struct drm_atomic_commit *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjNƒh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjJƒh²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M¹ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]ƒh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjJƒh²hh³j\ƒh´M¹ubjÍ )�”}”(hŒdrm_atomic_helper_commit_tail”h]”jÓ )�”}”(hŒdrm_atomic_helper_commit_tail”h]”hŒdrm_atomic_helper_commit_tail”…”�”}”(hjoƒh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjkƒubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjJƒh²hh³j\ƒh´M¹ubjÞ)�”}”(hŒ!(struct drm_atomic_commit *state)”h]”jä)�”}”(hŒstruct drm_atomic_commit *state”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Œdrm_atomic_commit”h]”hŒdrm_atomic_commit”…”�”}”(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%)�”}”jjqƒsbŒc.drm_atomic_helper_commit_tail”†”asbuh1hhj‡ƒubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjɃh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj‡ƒubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj׃h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‡ƒubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hjäƒh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj‡ƒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjƒƒubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjJƒh²hh³j\ƒh´M¹ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjFƒh²hh³j\ƒh´M¹ubah}”(h]”jAƒah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j\ƒh´M¹hjCƒh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ commit atomic update to hardware”h]”hŒ commit atomic update to hardware”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M¹hj „h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjCƒh²hh³j\ƒh´M¹ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j&„j$ j&„j% ‰j& ‰j' ‰uh1j˜ h²hhjçDh³Nh´Nubj) )�”}”(hX **Parameters** ``struct drm_atomic_commit *state`` atomic state object being committed **Description** This is the default implementation for the :c:type:`drm_mode_config_helper_funcs.atomic_commit_tail ` hook, for drivers that do not support runtime_pm or do not need the CRTC to be enabled to perform a commit. Otherwise, see drm_atomic_helper_commit_tail_rpm(). Note that the default ordering of how the various stages are called is to match the legacy modeset helper library closest.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj0„h]”hŒ Parameters”…”�”}”(hj2„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj.„ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M½hj*„ubjw )�”}”(hhh]”j| )�”}”(hŒH``struct drm_atomic_commit *state`` atomic state object being committed ”h]”(j‚ )�”}”(hŒ#``struct drm_atomic_commit *state``”h]”jˆ )�”}”(hjO„h]”hŒstruct drm_atomic_commit *state”…”�”}”(hjQ„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjM„ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MºhjI„ubjž )�”}”(hhh]”hÎ)�”}”(hŒ#atomic state object being committed”h]”hŒ#atomic state object being committed”…”�”}”(hjh„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jd„h´Mºhje„ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjI„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jd„h´MºhjF„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj*„ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjŠ„h]”hŒ Description”…”�”}”(hjŒ„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjˆ„ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M¼hj*„ubhÎ)�”}”(hX#This is the default implementation for the :c:type:`drm_mode_config_helper_funcs.atomic_commit_tail ` hook, for drivers that do not support runtime_pm or do not need the CRTC to be enabled to perform a commit. Otherwise, see drm_atomic_helper_commit_tail_rpm().”h]”(hŒ+This is the default implementation for the ”…”�”}”(hj „h²hh³Nh´Nubh)�”}”(hŒX:c:type:`drm_mode_config_helper_funcs.atomic_commit_tail `”h]”jˆ )�”}”(hjª„h]”hŒ/drm_mode_config_helper_funcs.atomic_commit_tail”…”�”}”(hj¬„h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj¨„ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_mode_config_helper_funcs”uh1hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M»hj „ubhŒ  hook, for drivers that do not support runtime_pm or do not need the CRTC to be enabled to perform a commit. Otherwise, see drm_atomic_helper_commit_tail_rpm().”…”�”}”(hj „h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÇ„h´M»hj*„ubhÎ)�”}”(hŒzNote that the default ordering of how the various stages are called is to match the legacy modeset helper library closest.”h]”hŒzNote that the default ordering of how the various stages are called is to match the legacy modeset helper library closest.”…”�”}”(hjÒ„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MÁhj*„ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjçDh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ.drm_atomic_helper_commit_tail_rpm (C function)”Œ#c.drm_atomic_helper_commit_tail_rpm”hNt”auh1j† hjçDh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒHvoid drm_atomic_helper_commit_tail_rpm (struct drm_atomic_commit *state)”h]”j¤ )�”}”(hŒGvoid drm_atomic_helper_commit_tail_rpm(struct drm_atomic_commit *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjý„h²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.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Œ!drm_atomic_helper_commit_tail_rpm”h]”jÓ )�”}”(hŒ!drm_atomic_helper_commit_tail_rpm”h]”hŒ!drm_atomic_helper_commit_tail_rpm”…”�”}”(hj"…h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj…ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjý„h²hh³j…h´MÚubjÞ)�”}”(hŒ!(struct drm_atomic_commit *state)”h]”jä)�”}”(hŒstruct drm_atomic_commit *state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj>…h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj:…ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjK…h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj:…ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_atomic_commit”h]”hŒdrm_atomic_commit”…”�”}”(hj\…h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjY…ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j^…Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj$…sbŒ#c.drm_atomic_helper_commit_tail_rpm”†”asbuh1hhj:…ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|…h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj:…ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjŠ…h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj:…ubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hj—…h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj:…ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj6…ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjý„h²hh³j…h´MÚubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ commit atomic update to hardware”h]”hŒ commit atomic update to hardware”…”�”}”(hjÁ…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.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²hhjçDh³Nh´Nubj) )�”}”(hX¤**Parameters** ``struct drm_atomic_commit *state`` new modeset state to be committed **Description** This is an alternative implementation for the :c:type:`drm_mode_config_helper_funcs.atomic_commit_tail ` hook, for drivers that support runtime_pm or need the CRTC to be enabled to perform a commit. Otherwise, one should use the default implementation drm_atomic_helper_commit_tail().”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjã…h]”hŒ Parameters”…”�”}”(hjå…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjá…ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MÞhjÝ…ubjw )�”}”(hhh]”j| )�”}”(hŒF``struct drm_atomic_commit *state`` new modeset state to be committed ”h]”(j‚ )�”}”(hŒ#``struct drm_atomic_commit *state``”h]”jˆ )�”}”(hj†h]”hŒstruct drm_atomic_commit *state”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MÛhjü…ubjž )�”}”(hhh]”hÎ)�”}”(hŒ!new modeset state to be committed”h]”hŒ!new modeset state to be committed”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j†h´MÛhj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjü…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j†h´MÛhjù…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÝ…ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj=†h]”hŒ Description”…”�”}”(hj?†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj;†ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MÝhjÝ…ubhÎ)�”}”(hX:This is an alternative implementation for the :c:type:`drm_mode_config_helper_funcs.atomic_commit_tail ` hook, for drivers that support runtime_pm or need the CRTC to be enabled to perform a commit. Otherwise, one should use the default implementation drm_atomic_helper_commit_tail().”h]”(hŒ.This is an alternative implementation for the ”…”�”}”(hjS†h²hh³Nh´Nubh)�”}”(hŒX:c:type:`drm_mode_config_helper_funcs.atomic_commit_tail `”h]”jˆ )�”}”(hj]†h]”hŒ/drm_mode_config_helper_funcs.atomic_commit_tail”…”�”}”(hj_†h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj[†ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_mode_config_helper_funcs”uh1hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MÜhjS†ubhŒ´ hook, for drivers that support runtime_pm or need the CRTC to be enabled to perform a commit. Otherwise, one should use the default implementation drm_atomic_helper_commit_tail().”…”�”}”(hjS†h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jz†h´MÜhjÝ…ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjçDh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ*drm_atomic_helper_async_check (C function)”Œc.drm_atomic_helper_async_check”hNt”auh1j† hjçDh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ[int drm_atomic_helper_async_check (struct drm_device *dev, struct drm_atomic_commit *state)”h]”j¤ )�”}”(hŒZint drm_atomic_helper_async_check(struct drm_device *dev, struct drm_atomic_commit *state)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj¥†h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj¡†h²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M6ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´†h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¡†h²hh³j³†h´M6ubjÍ )�”}”(hŒdrm_atomic_helper_async_check”h]”jÓ )�”}”(hŒdrm_atomic_helper_async_check”h]”hŒdrm_atomic_helper_async_check”…”�”}”(hjƆh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj†ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj¡†h²hh³j³†h´M6ubjÞ)�”}”(hŒ9(struct drm_device *dev, struct drm_atomic_commit *state)”h]”(jä)�”}”(hŒstruct drm_device *dev”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Œ drm_device”h]”hŒ drm_device”…”�”}”(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%)�”}”jjȆsbŒc.drm_atomic_helper_async_check”†”asbuh1hhjÞ†ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ‡h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÞ†ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj.‡h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÞ†ubjÓ )�”}”(hŒdev”h]”hŒdev”…”�”}”(hj;‡h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÞ†ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÚ†ubjä)�”}”(hŒstruct drm_atomic_commit *state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjT‡h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjP‡ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hja‡h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjP‡ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_atomic_commit”h]”hŒdrm_atomic_commit”…”�”}”(hjr‡h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjo‡ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jt‡Œmodname”NŒ classname”Njé jì )�”}”jï ]”j‡Œc.drm_atomic_helper_async_check”†”asbuh1hhjP‡ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�‡h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjP‡ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjž‡h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjP‡ubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hj«‡h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjP‡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÚ†ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj¡†h²hh³j³†h´M6ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj�†h²hh³j³†h´M6ubah}”(h]”j˜†ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j³†h´M6hjš†h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ.check if state can be committed asynchronously”h]”hŒ.check if state can be committed asynchronously”…”�”}”(hjÕ‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M6hjÒ‡h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjš†h²hh³j³†h´M6ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jí‡j$ jí‡j% ‰j& ‰j' ‰uh1j˜ h²hhjçDh³Nh´Nubj) )�”}”(hX5**Parameters** ``struct drm_device *dev`` DRM device ``struct drm_atomic_commit *state`` the driver state object **Description** This helper will check if it is possible to commit the state asynchronously. Async commits are not supposed to swap the states like normal sync commits but just do in-place changes on the current state. It will return 0 if the commit can happen in an asynchronous fashion or error if not. Note that error just mean it can't be committed asynchronously, if it fails the commit should be treated like a normal synchronous commit.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj÷‡h]”hŒ Parameters”…”�”}”(hjù‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjõ‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M:hjñ‡ubjw )�”}”(hhh]”(j| )�”}”(hŒ&``struct drm_device *dev`` DRM device ”h]”(j‚ )�”}”(hŒ``struct drm_device *dev``”h]”jˆ )�”}”(hjˆh]”hŒstruct drm_device *dev”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M7hjˆubjž )�”}”(hhh]”hÎ)�”}”(hŒ DRM device”h]”hŒ DRM device”…”�”}”(hj/ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j+ˆh´M7hj,ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j+ˆh´M7hj ˆubj| )�”}”(hŒ<``struct drm_atomic_commit *state`` the driver state object ”h]”(j‚ )�”}”(hŒ#``struct drm_atomic_commit *state``”h]”jˆ )�”}”(hjOˆh]”hŒstruct drm_atomic_commit *state”…”�”}”(hjQˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjMˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M8hjIˆubjž )�”}”(hhh]”hÎ)�”}”(hŒthe driver state object”h]”hŒthe driver state object”…”�”}”(hjhˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jdˆh´M8hjeˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjIˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jdˆh´M8hj ˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjñ‡ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjŠˆh]”hŒ Description”…”�”}”(hjŒˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjˆˆubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M:hjñ‡ubhÎ)�”}”(hŒÊThis helper will check if it is possible to commit the state asynchronously. Async commits are not supposed to swap the states like normal sync commits but just do in-place changes on the current state.”h]”hŒÊThis helper will check if it is possible to commit the state asynchronously. Async commits are not supposed to swap the states like normal sync commits but just do in-place changes on the current state.”…”�”}”(hj ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M9hjñ‡ubhÎ)�”}”(hŒàIt will return 0 if the commit can happen in an asynchronous fashion or error if not. Note that error just mean it can't be committed asynchronously, if it fails the commit should be treated like a normal synchronous commit.”h]”hŒâIt will return 0 if the commit can happen in an asynchronous fashion or error if not. Note that error just mean it can’t be committed asynchronously, if it fails the commit should be treated like a normal synchronous commit.”…”�”}”(hj¯ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M=hjñ‡ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjçDh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ+drm_atomic_helper_async_commit (C function)”Œ c.drm_atomic_helper_async_commit”hNt”auh1j† hjçDh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ]void drm_atomic_helper_async_commit (struct drm_device *dev, struct drm_atomic_commit *state)”h]”j¤ )�”}”(hŒ\void drm_atomic_helper_async_commit(struct drm_device *dev, struct drm_atomic_commit *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÞˆh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjÚˆh²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.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Œdrm_atomic_helper_async_commit”h]”jÓ )�”}”(hŒdrm_atomic_helper_async_commit”h]”hŒdrm_atomic_helper_async_commit”…”�”}”(hjÿˆh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjûˆubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÚˆh²hh³jìˆh´MŠubjÞ)�”}”(hŒ9(struct drm_device *dev, struct drm_atomic_commit *state)”•h]”(jä)�”}”(hŒstruct drm_device *dev”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Œ drm_device”h]”hŒ drm_device”…”�”}”(hj9‰h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj6‰ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j;‰Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj‰sbŒ c.drm_atomic_helper_async_commit”†”asbuh1hhj‰ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjY‰h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj‰ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjg‰h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‰ubjÓ )�”}”(hŒdev”h]”hŒdev”…”�”}”(hjt‰h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj‰ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj‰ubjä)�”}”(hŒstruct drm_atomic_commit *state”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Œdrm_atomic_commit”h]”hŒdrm_atomic_commit”…”�”}”(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ï ]”jU‰Œ c.drm_atomic_helper_async_commit”†”asbuh1hhj‰‰ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjɉh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj‰‰ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj׉h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‰‰ubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hjä‰h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj‰‰ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj‰ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjÚˆh²hh³jìˆh´MŠubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œcommit state asynchronously”h]”hŒcommit state asynchronously”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.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²hhjçDh³Nh´Nubj) )�”}”(hXÜ**Parameters** ``struct drm_device *dev`` DRM device ``struct drm_atomic_commit *state`` the driver state object **Description** This function commits a state asynchronously, i.e., not vblank synchronized. It should be used on a state only when drm_atomic_async_check() succeeds. Async commits are not supposed to swap the states like normal sync commits, but just do in-place changes on the current state. TODO: Implement full swap instead of doing in-place changes.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj0Šh]”hŒ Parameters”…”�”}”(hj2Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj.Šubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MŽhj*Šubjw )�”}”(hhh]”(j| )�”}”(hŒ&``struct drm_device *dev`` DRM device ”h]”(j‚ )�”}”(hŒ``struct drm_device *dev``”h]”jˆ )�”}”(hjOŠh]”hŒstruct drm_device *dev”…”�”}”(hjQŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjMŠubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M‹hjIŠubjž )�”}”(hhh]”hÎ)�”}”(hŒ DRM device”h]”hŒ DRM device”…”�”}”(hjhŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jdŠh´M‹hjeŠubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjIŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jdŠh´M‹hjFŠubj| )�”}”(hŒ<``struct drm_atomic_commit *state`` the driver state object ”h]”(j‚ )�”}”(hŒ#``struct drm_atomic_commit *state``”h]”jˆ )�”}”(hjˆŠh]”hŒstruct drm_atomic_commit *state”…”�”}”(hjŠŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj†Šubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MŒhj‚Šubjž )�”}”(hhh]”hÎ)�”}”(hŒthe driver state object”h]”hŒthe driver state object”…”�”}”(hj¡Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j�Šh´MŒhjžŠubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj‚Šubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j�Šh´MŒhjFŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj*ŠubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjÊh]”hŒ Description”…”�”}”(hjÅŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÁŠubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MŽhj*ŠubhÎ)�”}”(hXThis function commits a state asynchronously, i.e., not vblank synchronized. It should be used on a state only when drm_atomic_async_check() succeeds. Async commits are not supposed to swap the states like normal sync commits, but just do in-place changes on the current state.”h]”hXThis function commits a state asynchronously, i.e., not vblank synchronized. It should be used on a state only when drm_atomic_async_check() succeeds. Async commits are not supposed to swap the states like normal sync commits, but just do in-place changes on the current state.”…”�”}”(hjÙŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M�hj*ŠubhÎ)�”}”(hŒ` callback, or its default implementation drm_atomic_helper_commit_tail(). **Return** Zero for success or -errno.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj�Œh]”hŒ Parameters”…”�”}”(hjŸŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj›Œubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M¾hj—Œubjw )�”}”(hhh]”(j| )�”}”(hŒ&``struct drm_device *dev`` DRM device ”h]”(j‚ )�”}”(hŒ``struct drm_device *dev``”h]”jˆ )�”}”(hj¼Œh]”hŒstruct drm_device *dev”…”�”}”(hj¾Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjºŒubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M»hj¶Œubjž )�”}”(hhh]”hÎ)�”}”(hŒ DRM device”h]”hŒ DRM device”…”�”}”(hjÕŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÑŒh´M»hjÒŒubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¶Œubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÑŒh´M»hj³Œubj| )�”}”(hŒ<``struct drm_atomic_commit *state`` the driver state object ”h]”(j‚ )�”}”(hŒ#``struct drm_atomic_commit *state``”h]”jˆ )�”}”(hjõŒh]”hŒstruct drm_atomic_commit *state”…”�”}”(hj÷Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjóŒubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M¼hjïŒubjž )�”}”(hhh]”hÎ)�”}”(hŒthe driver state object”h]”hŒthe driver state object”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j �h´M¼hj �ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjïŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j �h´M¼hj³Œubj| )�”}”(hŒ=``bool nonblock`` whether nonblocking behavior is requested. ”h]”(j‚ )�”}”(hŒ``bool nonblock``”h]”jˆ )�”}”(hj.�h]”hŒ bool nonblock”…”�”}”(hj0�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj,�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M½hj(�ubjž )�”}”(hhh]”hÎ)�”}”(hŒ*whether nonblocking behavior is requested.”h]”hŒ*whether nonblocking behavior is requested.”…”�”}”(hjG�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jC�h´M½hjD�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj(�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jC�h´M½hj³Œubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj—ŒubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hji�h]”hŒ Description”…”�”}”(hjk�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjg�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M¿hj—ŒubhÎ)�”}”(hŒÿThis function commits a with drm_atomic_helper_check() pre-validated state object. This can still fail when e.g. the framebuffer reservation fails. This function implements nonblocking commits, using drm_atomic_helper_setup_commit() and related functions.”h]”hŒÿThis function commits a with drm_atomic_helper_check() pre-validated state object. This can still fail when e.g. the framebuffer reservation fails. This function implements nonblocking commits, using drm_atomic_helper_setup_commit() and related functions.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M¾hj—ŒubhÎ)�”}”(hŒÚCommitting the actual hardware state is done through the :c:type:`drm_mode_config_helper_funcs.atomic_commit_tail ` callback, or its default implementation drm_atomic_helper_commit_tail().”h]”(hŒ9Committing the actual hardware state is done through the ”…”�”}”(hjŽ�h²hh³Nh´Nubh)�”}”(hŒX:c:type:`drm_mode_config_helper_funcs.atomic_commit_tail `”h]”jˆ )�”}”(hj˜�h]”hŒ/drm_mode_config_helper_funcs.atomic_commit_tail”…”�”}”(hjš�h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj–�ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_mode_config_helper_funcs”uh1hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MÃhjŽ�ubhŒI callback, or its default implementation drm_atomic_helper_commit_tail().”…”�”}”(hjŽ�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jµ�h´MÃhj—ŒubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjÂ�h]”hŒReturn”…”�”}”(hjÄ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÀ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MÇhj—ŒubhÎ)�”}”(hŒZero for success or -errno.”h]”hŒZero for success or -errno.”…”�”}”(hjØ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MÈhj—Œubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjçDh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ+drm_atomic_helper_setup_commit (C function)”Œ c.drm_atomic_helper_setup_commit”hNt”auh1j† hjçDh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒSint drm_atomic_helper_setup_commit (struct drm_atomic_commit *state, bool nonblock)”h]”j¤ )�”}”(hŒRint drm_atomic_helper_setup_commit(struct drm_atomic_commit *state, bool nonblock)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjŽh²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.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Œdrm_atomic_helper_setup_commit”h]”jÓ )�”}”(hŒdrm_atomic_helper_setup_commit”h]”hŒdrm_atomic_helper_setup_commit”…”�”}”(hj(Žh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj$Žubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjŽh²hh³jŽh´M© ubjÞ)�”}”(hŒ0(struct drm_atomic_commit *state, bool nonblock)”h]”(jä)�”}”(hŒstruct drm_atomic_commit *state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjDŽh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj@Žubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQŽh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj@Žubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_atomic_commit”h]”hŒdrm_atomic_commit”…”�”}”(hjbŽh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj_Žubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jdŽŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj*ŽsbŒ c.drm_atomic_helper_setup_commit”†”asbuh1hhj@Žubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚Žh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj@Žubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj�Žh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj@ŽubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hj�Žh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj@Žubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj<Žubjä)�”}”(hŒ bool nonblock”h]”(j¦)�”}”(hj£Ih]”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Œnonblock”h]”hŒnonblock”…”�”}”(hjÑŽh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj²Žubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj<Žubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjŽh²hh³jŽh´M© ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ!setup possibly nonblocking commit”h]”hŒ!setup possibly nonblocking commit”…”�”}”(hjûŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.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²hhjçDh³Nh´Nubj) )�”}”(hX÷**Parameters** ``struct drm_atomic_commit *state`` new modeset state to be committed ``bool nonblock`` whether nonblocking behavior is requested. **Description** This function prepares **state** to be used by the atomic helper's support for nonblocking commits. Drivers using the nonblocking commit infrastructure should always call this function from their :c:type:`drm_mode_config_funcs.atomic_commit ` hook. Drivers that need to extend the commit setup to private objects can use the :c:type:`drm_mode_config_helper_funcs.atomic_commit_setup ` hook. To be able to use this support drivers need to use a few more helper functions. drm_atomic_helper_wait_for_dependencies() must be called before actually committing the hardware state, and for nonblocking commits this call must be placed in the async worker. See also drm_atomic_helper_swap_state() and its stall parameter, for when a driver's commit hooks look at the :c:type:`drm_crtc.state `, :c:type:`drm_plane.state ` or :c:type:`drm_connector.state ` pointer directly. Completion of the hardware commit step must be signalled using drm_atomic_helper_commit_hw_done(). After this step the driver is not allowed to read or change any permanent software or hardware modeset state. The only exception is state protected by other means than :c:type:`drm_modeset_lock` locks. Only the free standing **state** with pointers to the old state structures can be inspected, e.g. to clean up old buffers using drm_atomic_helper_cleanup_planes(). At the very end, before cleaning up **state** drivers must call drm_atomic_helper_commit_cleanup_done(). This is all implemented by in drm_atomic_helper_commit(), giving drivers a complete and easy-to-use default implementation of the atomic_commit() hook. The tracking of asynchronously executed and still pending commits is done using the core structure :c:type:`drm_crtc_commit`. By default there's no need to clean up resources allocated by this function explicitly: drm_atomic_commit_default_clear() will take care of that automatically. **Return** 0 on success. -EBUSY when userspace schedules nonblocking commits too fast, -ENOMEM on allocation failures and -EINTR when a signal is pending.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj�h]”hŒ Parameters”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M­ hj�ubjw )�”}”(hhh]”(j| )�”}”(hŒF``struct drm_atomic_commit *state`` new modeset state to be committed ”h]”(j‚ )�”}”(hŒ#``struct drm_atomic_commit *state``”h]”jˆ )�”}”(hj<�h]”hŒstruct drm_atomic_commit *state”…”�”}”(hj>�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj:�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mª hj6�ubjž )�”}”(hhh]”hÎ)�”}”(hŒ!new modeset state to be committed”h]”hŒ!new modeset state to be committed”…”�”}”(hjU�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jQ�h´Mª hjR�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj6�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jQ�h´Mª hj3�ubj| )�”}”(hŒ=``bool nonblock`` whether nonblocking behavior is requested. ”h]”(j‚ )�”}”(hŒ``bool nonblock``”h]”jˆ )�”}”(hju�h]”hŒ bool nonblock”…”�”}”(hjw�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjs�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M« hjo�ubjž )�”}”(hhh]”hÎ)�”}”(hŒ*whether nonblocking behavior is requested.”h]”hŒ*whether nonblocking behavior is requested.”…”�”}”(hjŽ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jŠ�h´M« hj‹�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjo�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jŠ�h´M« hj3�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj�ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj°�h]”hŒ Description”…”�”}”(hj²�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj®�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M­ hj�ubhÎ)�”}”(hXThis function prepares **state** to be used by the atomic helper's support for nonblocking commits. Drivers using the nonblocking commit infrastructure should always call this function from their :c:type:`drm_mode_config_funcs.atomic_commit ` hook.”h]”(hŒThis function prepares ”…”�”}”(hjÆ�h²hh³Nh´Nubj3 )�”}”(hŒ **state**”h]”hŒstate”…”�”}”(hjÎ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÆ�ubhŒ¦ to be used by the atomic helper’s support for nonblocking commits. Drivers using the nonblocking commit infrastructure should always call this function from their ”…”�”}”(hjÆ�h²hh³Nh´Nubh)�”}”(hŒE:c:type:`drm_mode_config_funcs.atomic_commit `”h]”jˆ )�”}”(hjâ�h]”hŒ#drm_mode_config_funcs.atomic_commit”…”�”}”(hjä�h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjà�ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_mode_config_funcs”uh1hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M¬ hjÆ�ubhŒ hook.”…”�”}”(hjÆ�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÿ�h´M¬ hj�ubhÎ)�”}”(hŒ«Drivers that need to extend the commit setup to private objects can use the :c:type:`drm_mode_config_helper_funcs.atomic_commit_setup ` hook.”h]”(hŒLDrivers that need to extend the commit setup to private objects can use the ”…”�”}”(hj �h²hh³Nh´Nubh)�”}”(hŒY:c:type:`drm_mode_config_helper_funcs.atomic_commit_setup `”h]”jˆ )�”}”(hj�h]”hŒ0drm_mode_config_helper_funcs.atomic_commit_setup”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj�ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_mode_config_helper_funcs”uh1hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M± hj �ubhŒ hook.”…”�”}”(hj �h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j1�h´M± hj�ubhÎ)�”}”(hXýTo be able to use this support drivers need to use a few more helper functions. drm_atomic_helper_wait_for_dependencies() must be called before actually committing the hardware state, and for nonblocking commits this call must be placed in the async worker. See also drm_atomic_helper_swap_state() and its stall parameter, for when a driver's commit hooks look at the :c:type:`drm_crtc.state `, :c:type:`drm_plane.state ` or :c:type:`drm_connector.state ` pointer directly.”h]”(hXrTo be able to use this support drivers need to use a few more helper functions. drm_atomic_helper_wait_for_dependencies() must be called before actually committing the hardware state, and for nonblocking commits this call must be placed in the async worker. See also drm_atomic_helper_swap_state() and its stall parameter, for when a driver’s commit hooks look at the ”…”�”}”(hj<�h²hh³Nh´Nubh)�”}”(hŒ#:c:type:`drm_crtc.state `”h]”jˆ )�”}”(hjF�h]”hŒdrm_crtc.state”…”�”}”(hjH�h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjD�ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_crtc”uh1hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M´ hj<�ubhŒ, ”…”�”}”(hj<�h²hh³Nh´Nubh)�”}”(hŒ%:c:type:`drm_plane.state `”h]”jˆ )�”}”(hjj�h]”hŒdrm_plane.state”…”�”}”(hjl�h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjh�ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_plane”uh1hh³jc�h´M´ hj<�ubhŒ or ”…”�”}”(hj<�h²hh³Nh´Nubh)�”}”(hŒ-:c:type:`drm_connector.state `”h]”jˆ )�”}”(hj��h]”hŒdrm_connector.state”…”�”}”(hj��h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj‹�ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_connector”uh1hh³jc�h´M´ hj<�ubhŒ pointer directly.”…”�”}”(hj<�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jc�h´M´ hj�ubhÎ)�”}”(hXÐCompletion of the hardware commit step must be signalled using drm_atomic_helper_commit_hw_done(). After this step the driver is not allowed to read or change any permanent software or hardware modeset state. The only exception is state protected by other means than :c:type:`drm_modeset_lock` locks. Only the free standing **state** with pointers to the old state structures can be inspected, e.g. to clean up old buffers using drm_atomic_helper_cleanup_planes().”h]”(hX Completion of the hardware commit step must be signalled using drm_atomic_helper_commit_hw_done(). After this step the driver is not allowed to read or change any permanent software or hardware modeset state. The only exception is state protected by other means than ”…”�”}”(hj´�h²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_modeset_lock`”h]”jˆ )�”}”(hj¾�h]”hŒdrm_modeset_lock”…”�”}”(hjÀ�h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj¼�ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_modeset_lock”uh1hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M» hj´�ubhŒ locks. Only the free standing ”…”�”}”(hj´�h²hh³Nh´Nubj3 )�”}”(hŒ **state**”h]”hŒstate”…”�”}”(hjà�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj´�ubhŒƒ with pointers to the old state structures can be inspected, e.g. to clean up old buffers using drm_atomic_helper_cleanup_planes().”…”�”}”(hj´�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÛ�h´M» hj�ubhÎ)�”}”(hŒhAt the very end, before cleaning up **state** drivers must call drm_atomic_helper_commit_cleanup_done().”h]”(hŒ$At the very end, before cleaning up ”…”�”}”(hjø�h²hh³Nh´Nubj3 )�”}”(hŒ **state**”h]”hŒstate”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjø�ubhŒ; drivers must call drm_atomic_helper_commit_cleanup_done().”…”�”}”(hjø�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mà hj�ubhÎ)�”}”(hŒ—This is all implemented by in drm_atomic_helper_commit(), giving drivers a complete and easy-to-use default implementation of the atomic_commit() hook.”h]”hŒ—This is all implemented by in drm_atomic_helper_commit(), giving drivers a complete and easy-to-use default implementation of the atomic_commit() hook.”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MÆ hj�ubhÎ)�”}”(hŒ}The tracking of asynchronously executed and still pending commits is done using the core structure :c:type:`drm_crtc_commit`.”h]”(hŒcThe tracking of asynchronously executed and still pending commits is done using the core structure ”…”�”}”(hj(‘h²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_crtc_commit`”h]”jˆ )�”}”(hj2‘h]”hŒdrm_crtc_commit”…”�”}”(hj4‘h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj0‘ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_crtc_commit”uh1hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MÉ hj(‘ubhŒ.”…”�”}”(hj(‘h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jO‘h´MÉ hj�ubhÎ)�”}”(hŒŸBy default there's no need to clean up resources allocated by this function explicitly: drm_atomic_commit_default_clear() will take care of that automatically.”h]”hŒ¡By default there’s no need to clean up resources allocated by this function explicitly: drm_atomic_commit_default_clear() will take care of that automatically.”…”�”}”(hjZ‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MÌ hj�ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjk‘h]”hŒReturn”…”�”}”(hjm‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hji‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MÐ hj�ubhÎ)�”}”(hŒ�0 on success. -EBUSY when userspace schedules nonblocking commits too fast, -ENOMEM on allocation failures and -EINTR when a signal is pending.”h]”hŒ�0 on success. -EBUSY when userspace schedules nonblocking commits too fast, -ENOMEM on allocation failures and -EINTR when a signal is pending.”…”�”}”(hj�‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MÑ hj�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjçDh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ4drm_atomic_helper_wait_for_dependencies (C function)”Œ)c.drm_atomic_helper_wait_for_dependencies”hNt”auh1j† hjçDh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒNvoid drm_atomic_helper_wait_for_dependencies (struct drm_atomic_commit *state)”h]”j¤ )�”}”(hŒMvoid drm_atomic_helper_wait_for_dependencies(struct drm_atomic_commit *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj°‘h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj¬‘h²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MG ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿‘h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¬‘h²hh³j¾‘h´MG ubjÍ )�”}”(hŒ'drm_atomic_helper_wait_for_dependencies”h]”jÓ )�”}”(hŒ'drm_atomic_helper_wait_for_dependencies”h]”hŒ'drm_atomic_helper_wait_for_dependencies”…”�”}”(hjÑ‘h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÍ‘ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj¬‘h²hh³j¾‘h´MG ubjÞ)�”}”(hŒ!(struct drm_atomic_commit *state)”h]”jä)�”}”(hŒstruct drm_atomic_commit *state”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Œdrm_atomic_commit”h]”hŒdrm_atomic_commit”…”�”}”(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%)�”}”jjÓ‘sbŒ)c.drm_atomic_helper_wait_for_dependencies”†”asbuh1hhjé‘ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+’h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjé‘ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj9’h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjé‘ubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hjF’h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjé‘ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjå‘ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj¬‘h²hh³j¾‘h´MG ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj¨‘h²hh³j¾‘h´MG ubah}”(h]”j£‘ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j¾‘h´MG hj¥‘h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ#wait for required preceding commits”h]”hŒ#wait for required preceding commits”…”�”}”(hjp’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MG hjm’h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¥‘h²hh³j¾‘h´MG ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jˆ’j$ jˆ’j% ‰j& ‰j' ‰uh1j˜ h²hhjçDh³Nh´Nubj) )�”}”(hX**Parameters** ``struct drm_atomic_commit *state`` atomic state object being committed **Description** This function waits for all preceding commits that touch the same CRTC as **state** to both be committed to the hardware (as signalled by drm_atomic_helper_commit_hw_done()) and executed by the hardware (as signalled by calling drm_crtc_send_vblank_event() on the :c:type:`drm_crtc_state.event `). This is part of the atomic helper support for nonblocking commits, see drm_atomic_helper_setup_commit() for an overview.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj’’h]”hŒ Parameters”…”�”}”(hj”’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj�’ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MK hjŒ’ubjw )�”}”(hhh]”j| )�”}”(hŒH``struct drm_atomic_commit *state`` atomic state object being committed ”h]”(j‚ )�”}”(hŒ#``struct drm_atomic_commit *state``”h]”jˆ )�”}”(hj±’h]”hŒstruct drm_atomic_commit *state”…”�”}”(hj³’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¯’ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MH hj«’ubjž )�”}”(hhh]”hÎ)�”}”(hŒ#atomic state object being committed”h]”hŒ#atomic state object being committed”…”�”}”(hjÊ’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÆ’h´MH hjÇ’ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj«’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÆ’h´MH hj¨’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjŒ’ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjì’h]”hŒ Description”…”�”}”(hjî’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjê’ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MJ hjŒ’ubhÎ)�”}”(hX9This function waits for all preceding commits that touch the same CRTC as **state** to both be committed to the hardware (as signalled by drm_atomic_helper_commit_hw_done()) and executed by the hardware (as signalled by calling drm_crtc_send_vblank_event() on the :c:type:`drm_crtc_state.event `).”h]”(hŒJThis function waits for all preceding commits that touch the same CRTC as ”…”�”}”(hj“h²hh³Nh´Nubj3 )�”}”(hŒ **state**”h]”hŒstate”…”�”}”(hj “h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj“ubhŒµ to both be committed to the hardware (as signalled by drm_atomic_helper_commit_hw_done()) and executed by the hardware (as signalled by calling drm_crtc_send_vblank_event() on the ”…”�”}”(hj“h²hh³Nh´Nubh)�”}”(hŒ/:c:type:`drm_crtc_state.event `”h]”jˆ )�”}”(hj“h]”hŒdrm_crtc_state.event”…”�”}”(hj “h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj“ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_crtc_state”uh1hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MI hj“ubhŒ).”…”�”}”(hj“h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j;“h´MI hjŒ’ubhÎ)�”}”(hŒxThis is part of the atomic helper support for nonblocking commits, see drm_atomic_helper_setup_commit() for an overview.”h]”hŒxThis is part of the atomic helper support for nonblocking commits, see drm_atomic_helper_setup_commit() for an overview.”…”�”}”(hjF“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MN hjŒ’ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjçDh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ*drm_atomic_helper_fake_vblank (C function)”Œc.drm_atomic_helper_fake_vblank”hNt”auh1j† hjçDh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒDvoid drm_atomic_helper_fake_vblank (struct drm_atomic_commit *state)”h]”j¤ )�”}”(hŒCvoid drm_atomic_helper_fake_vblank(struct drm_atomic_commit *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hju“h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjq“h²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mx ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„“h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjq“h²hh³jƒ“h´Mx ubjÍ )�”}”(hŒdrm_atomic_helper_fake_vblank”h]”jÓ )�”}”(hŒdrm_atomic_helper_fake_vblank”h]”hŒdrm_atomic_helper_fake_vblank”…”�”}”(hj–“h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj’“ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjq“h²hh³jƒ“h´Mx ubjÞ)�”}”(hŒ!(struct drm_atomic_commit *state)”h]”jä)�”}”(hŒstruct drm_atomic_commit *state”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Œdrm_atomic_commit”h]”hŒdrm_atomic_commit”…”�”}”(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%)�”}”jj˜“sbŒc.drm_atomic_helper_fake_vblank”†”asbuh1hhj®“ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjð“h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj®“ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjþ“h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj®“ubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hj ”h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj®“ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjª“ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjq“h²hh³jƒ“h´Mx ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjm“h²hh³jƒ“h´Mx ubah}”(h]”jh“ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jƒ“h´Mx hjj“h²hubj )�”}”(hhh]”hÎ)�”}”(hŒfake VBLANK events if needed”h]”hŒfake VBLANK events if needed”…”�”}”(hj5”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mx hj2”h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjj“h²hh³jƒ“h´Mx ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jM”j$ jM”j% ‰j& ‰j' ‰uh1j˜ h²hhjçDh³Nh´Nubj) )�”}”(hX|**Parameters** ``struct drm_atomic_commit *state`` atomic state object being committed **Description** This function walks all CRTCs and fakes VBLANK events on those with :c:type:`drm_crtc_state.no_vblank ` set to true and :c:type:`drm_crtc_state.event ` != NULL. The primary use of this function is writeback connectors working in oneshot mode and faking VBLANK events. In this case they only fake the VBLANK event when a job is queued, and any change to the pipeline that does not touch the connector is leading to timeouts when calling drm_atomic_helper_wait_for_vblanks() or drm_atomic_helper_wait_for_flip_done(). In addition to writeback connectors, this function can also fake VBLANK events for CRTCs without VBLANK interrupt. This is part of the atomic helper support for nonblocking commits, see drm_atomic_helper_setup_commit() for an overview.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjW”h]”hŒ Parameters”…”�”}”(hjY”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjU”ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M| hjQ”ubjw )�”}”(hhh]”j| )�”}”(hŒH``struct drm_atomic_commit *state`` atomic state object being committed ”h]”(j‚ )�”}”(hŒ#``struct drm_atomic_commit *state``”h]”jˆ )�”}”(hjv”h]”hŒstruct drm_atomic_commit *state”…”�”}”(hjx”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjt”ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´My hjp”ubjž )�”}”(hhh]”hÎ)�”}”(hŒ#atomic state object being committed”h]”hŒ#atomic state object being committed”…”�”}”(hj�”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j‹”h´My hjŒ”ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjp”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j‹”h´My hjm”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjQ”ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj±”h]”hŒ Description”…”�”}”(hj³”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¯”ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M{ hjQ”ubhÎ)�”}”(hX–This function walks all CRTCs and fakes VBLANK events on those with :c:type:`drm_crtc_state.no_vblank ` set to true and :c:type:`drm_crtc_state.event ` != NULL. The primary use of this function is writeback connectors working in oneshot mode and faking VBLANK events. In this case they only fake the VBLANK event when a job is queued, and any change to the pipeline that does not touch the connector is leading to timeouts when calling drm_atomic_helper_wait_for_vblanks() or drm_atomic_helper_wait_for_flip_done(). In addition to writeback connectors, this function can also fake VBLANK events for CRTCs without VBLANK interrupt.”h]”(hŒDThis function walks all CRTCs and fakes VBLANK events on those with ”…”�”}”(hjÇ”h²hh³Nh´Nubh)�”}”(hŒ3:c:type:`drm_crtc_state.no_vblank `”h]”jˆ )�”}”(hjÑ”h]”hŒdrm_crtc_state.no_vblank”…”�”}”(hjÓ”h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÏ”ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_crtc_state”uh1hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mz hjÇ”ubhŒ set to true and ”…”�”}”(hjÇ”h²hh³Nh´Nubh)�”}”(hŒ/:c:type:`drm_crtc_state.event `”h]”jˆ )�”}”(hjõ”h]”hŒdrm_crtc_state.event”…”�”}”(hj÷”h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjó”ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_crtc_state”uh1hh³jî”h´Mz hjÇ”ubhXß != NULL. The primary use of this function is writeback connectors working in oneshot mode and faking VBLANK events. In this case they only fake the VBLANK event when a job is queued, and any change to the pipeline that does not touch the connector is leading to timeouts when calling drm_atomic_helper_wait_for_vblanks() or drm_atomic_helper_wait_for_flip_done(). In addition to writeback connectors, this function can also fake VBLANK events for CRTCs without VBLANK interrupt.”…”�”}”(hjÇ”h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jî”h´Mz hjQ”ubhÎ)�”}”(hŒxThis is part of the atomic helper support for nonblocking commits, see drm_atomic_helper_setup_commit() for an overview.”h]”hŒxThis is part of the atomic helper support for nonblocking commits, see drm_atomic_helper_setup_commit() for an overview.”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M… hjQ”ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjçDh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ-drm_atomic_helper_commit_hw_done (C function)”Œ"c.drm_atomic_helper_commit_hw_done”hNt”auh1j† hjçDh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒGvoid drm_atomic_helper_commit_hw_done (struct drm_atomic_commit *state)”h]”j¤ )�”}”(hŒFvoid drm_atomic_helper_commit_hw_done(struct drm_atomic_commit *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjK•h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjG•h²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M¡ ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZ•h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjG•h²hh³jY•h´M¡ ubjÍ )�”}”(hŒ drm_atomic_helper_commit_hw_done”h]”jÓ )�”}”(hŒ drm_atomic_helper_commit_hw_done”h]”hŒ drm_atomic_helper_commit_hw_done”…”�”}”(hjl•h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjh•ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjG•h²hh³jY•h´M¡ ubjÞ)�”}”(hŒ!(struct drm_atomic_commit *state)”h]”jä)�”}”(hŒstruct drm_atomic_commit *state”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Œdrm_atomic_commit”h]”hŒdrm_atomic_commit”…”�”}”(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%)�”}”jjn•sbŒ"c.drm_atomic_helper_commit_hw_done”†”asbuh1hhj„•ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆ•h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj„•ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÔ•h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj„•ubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hjá•h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj„•ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj€•ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjG•h²hh³jY•h´M¡ ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjC•h²hh³jY•h´M¡ ubah}”(h]”j>•ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jY•h´M¡ hj@•h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ!setup possible nonblocking commit”h]”hŒ!setup possible nonblocking commit”…”�”}”(hj –h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M¡ hj–h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj@•h²hh³jY•h´M¡ ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j#–j$ j#–j% ‰j& ‰j' ‰uh1j˜ h²hhjçDh³Nh´Nubj) )�”}”(hX\**Parameters** ``struct drm_atomic_commit *state`` atomic state object being committed **Description** This function is used to signal completion of the hardware commit step. After this step the driver is not allowed to read or change any permanent software or hardware modeset state. The only exception is state protected by other means than :c:type:`drm_modeset_lock` locks. Drivers should try to postpone any expensive or delayed cleanup work after this function is called. This is part of the atomic helper support for nonblocking commits, see drm_atomic_helper_setup_commit() for an overview.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj-–h]”hŒ Parameters”…”�”}”(hj/–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj+–ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M¥ hj'–ubjw )�”}”(hhh]”j| )�”}”(hŒH``struct drm_atomic_commit *state`` atomic state object being committed ”h]”(j‚ )�”}”(hŒ#``struct drm_atomic_commit *state``”h]”jˆ )�”}”(hjL–h]”hŒstruct drm_atomic_commit *state”…”�”}”(hjN–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjJ–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M¢ hjF–ubjž )�”}”(hhh]”hÎ)�”}”(hŒ#atomic state object being committed”h]”hŒ#atomic state object being committed”…”�”}”(hje–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³ja–h´M¢ hjb–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjF–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³ja–h´M¢ hjC–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj'–ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj‡–h]”hŒ Description”…”�”}”(hj‰–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj…–ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M¤ hj'–ubhÎ)�”}”(hXThis function is used to signal completion of the hardware commit step. After this step the driver is not allowed to read or change any permanent software or hardware modeset state. The only exception is state protected by other means than :c:type:`drm_modeset_lock` locks.”h]”(hŒðThis function is used to signal completion of the hardware commit step. After this step the driver is not allowed to read or change any permanent software or hardware modeset state. The only exception is state protected by other means than ”…”�”}”(hj�–h²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_modeset_lock`”h]”jˆ )�”}”(hj§–h]”hŒdrm_modeset_lock”…”�”}”(hj©–h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj¥–ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_modeset_lock”uh1hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M£ hj�–ubhŒ locks.”…”�”}”(hj�–h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÄ–h´M£ hj'–ubhÎ)�”}”(hŒcDrivers should try to postpone any expensive or delayed cleanup work after this function is called.”h]”hŒcDrivers should try to postpone any expensive or delayed cleanup work after this function is called.”…”�”}”(hjÏ–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M¨ hj'–ubhÎ)�”}”(hŒxThis is part of the atomic helper support for nonblocking commits, see drm_atomic_helper_setup_commit() for an overview.”h]”hŒxThis is part of the atomic helper support for nonblocking commits, see drm_atomic_helper_setup_commit() for an overview.”…”�”}”(hjÞ–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M« hj'–ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjçDh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ2drm_atomic_helper_commit_cleanup_done (C function)”Œ'c.drm_atomic_helper_commit_cleanup_done”hNt”auh1j† hjçDh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒLvoid drm_atomic_helper_commit_cleanup_done (struct drm_atomic_commit *state)”h]”j¤ )�”}”(hŒKvoid drm_atomic_helper_commit_cleanup_done(struct drm_atomic_commit *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj —h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj —h²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.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Œ%drm_atomic_helper_commit_cleanup_done”h]”jÓ )�”}”(hŒ%drm_atomic_helper_commit_cleanup_done”h]”hŒ%drm_atomic_helper_commit_cleanup_done”…”�”}”(hj.—h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj*—ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj —h²hh³j—h´MÒ ubjÞ)�”}”(hŒ!(struct drm_atomic_commit *state)”h]”jä)�”}”(hŒstruct drm_atomic_commit *state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjJ—h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjF—ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjW—h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjF—ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_atomic_commit”h]”hŒdrm_atomic_commit”…”�”}”(hjh—h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hje—ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jj—Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj0—sbŒ'c.drm_atomic_helper_commit_cleanup_done”†”asbuh1hhjF—ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆ—h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjF—ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj–—h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjF—ubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hj£—h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjF—ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjB—ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj —h²hh³j—h´MÒ ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œsignal completion of commit”h]”hŒsignal completion of commit”…”�”}”(hjÍ—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.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²hhjçDh³Nh´Nubj) )�”}”(hX‚**Parameters** ``struct drm_atomic_commit *state`` atomic state object being committed **Description** This signals completion of the atomic update **state**, including any cleanup work. If used, it must be called right before calling drm_atomic_commit_put(). This is part of the atomic helper support for nonblocking commits, see drm_atomic_helper_setup_commit() for an overview.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjï—h]”hŒ Parameters”…”�”}”(hjñ—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjí—ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MÖ hjé—ubjw )�”}”(hhh]”j| )�”}”(hŒH``struct drm_atomic_commit *state`` atomic state object being committed ”h]”(j‚ )�”}”(hŒ#``struct drm_atomic_commit *state``”h]”jˆ )�”}”(hj˜h]”hŒstruct drm_atomic_commit *state”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj ˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MÓ hj˜ubjž )�”}”(hhh]”hÎ)�”}”(hŒ#atomic state object being committed”h]”hŒ#atomic state object being committed”…”�”}”(hj'˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j#˜h´MÓ hj$˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j#˜h´MÓ hj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjé—ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjI˜h]”hŒ Description”…”�”}”(hjK˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjG˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MÕ hjé—ubhÎ)�”}”(hŒœThis signals completion of the atomic update **state**, including any cleanup work. If used, it must be called right before calling drm_atomic_commit_put().”h]”(hŒ-This signals completion of the atomic update ”…”�”}”(hj_˜h²hh³Nh´Nubj3 )�”}”(hŒ **state**”h]”hŒstate”…”�”}”(hjg˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj_˜ubhŒf, including any cleanup work. If used, it must be called right before calling drm_atomic_commit_put().”…”�”}”(hj_˜h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MÔ hjé—ubhÎ)�”}”(hŒxThis is part of the atomic helper support for nonblocking commits, see drm_atomic_helper_setup_commit() for an overview.”h]”hŒxThis is part of the atomic helper support for nonblocking commits, see drm_atomic_helper_setup_commit() for an overview.”…”�”}”(hj€˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MØ hjé—ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjçDh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ-drm_atomic_helper_prepare_planes (C function)”Œ"c.drm_atomic_helper_prepare_planes”hNt”auh1j† hjçDh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ^int drm_atomic_helper_prepare_planes (struct drm_device *dev, struct drm_atomic_commit *state)”h]”j¤ )�”}”(hŒ]int drm_atomic_helper_prepare_planes(struct drm_device *dev, struct drm_atomic_commit *state)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj¯˜h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj«˜h²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.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Œ drm_atomic_helper_prepare_planes”h]”jÓ )�”}”(hŒ drm_atomic_helper_prepare_planes”h]”hŒ drm_atomic_helper_prepare_planes”…”�”}”(hjИh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj̘ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj«˜h²hh³j½˜h´Mø ubjÞ)�”}”(hŒ9(struct drm_device *dev, struct drm_atomic_commit *state)”h]”(jä)�”}”(hŒstruct drm_device *dev”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Œ drm_device”h]”hŒ drm_device”…”�”}”(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%)�”}”jjÒ˜sbŒ"c.drm_atomic_helper_prepare_planes”†”asbuh1hhjè˜ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*™h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjè˜ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj8™h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjè˜ubjÓ )�”}”(hŒdev”h]”hŒdev”…”�”}”(hjE™h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjè˜ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjä˜ubjä)�”}”(hŒstruct drm_atomic_commit *state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj^™h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjZ™ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjk™h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjZ™ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_atomic_commit”h]”hŒdrm_atomic_commit”…”�”}”(hj|™h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjy™ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j~™Œmodname”NŒ classname”Njé jì )�”}”jï ]”j&™Œ"c.drm_atomic_helper_prepare_planes”†”asbuh1hhjZ™ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjš™h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjZ™ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj¨™h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjZ™ubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hjµ™h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjZ™ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjä˜ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj«˜h²hh³j½˜h´Mø ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ%prepare plane resources before commit”h]”hŒ%prepare plane resources before commit”…”�”}”(hjß™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.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²hhjçDh³Nh´Nubj) )�”}”(hX1**Parameters** ``struct drm_device *dev`` DRM device ``struct drm_atomic_commit *state`` atomic state object with new state structures **Description** This function prepares plane state, specifically framebuffers, for the new configuration, by calling :c:type:`drm_plane_helper_funcs.prepare_fb `. If any failure is encountered this function will call :c:type:`drm_plane_helper_funcs.cleanup_fb ` on any already successfully prepared framebuffer. **Return** 0 on success, negative error code on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjšh]”hŒ Parameters”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÿ™ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mü hjû™ubjw )�”}”(hhh]”(j| )�”}”(hŒ&``struct drm_device *dev`` DRM device ”h]”(j‚ )�”}”(hŒ``struct drm_device *dev``”h]”jˆ )�”}”(hj šh]”hŒstruct drm_device *dev”…”�”}”(hj"šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjšubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mù hjšubjž )�”}”(hhh]”hÎ)�”}”(hŒ DRM device”h]”hŒ DRM device”…”�”}”(hj9šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j5šh´Mù hj6šubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjšubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j5šh´Mù hjšubj| )�”}”(hŒR``struct drm_atomic_commit *state`` atomic state object with new state structures ”h]”(j‚ )�”}”(hŒ#``struct drm_atomic_commit *state``”h]”jˆ )�”}”(hjYšh]”hŒstruct drm_atomic_commit *state”…”�”}”(hj[šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjWšubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mú hjSšubjž )�”•}”(hhh]”hÎ)�”}”(hŒ-atomic state object with new state structures”h]”hŒ-atomic state object with new state structures”…”�”}”(hjršh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jnšh´Mú hjošubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjSšubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jnšh´Mú hjšubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjû™ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj”šh]”hŒ Description”…”�”}”(hj–šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj’šubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mü hjû™ubhÎ)�”}”(hXWThis function prepares plane state, specifically framebuffers, for the new configuration, by calling :c:type:`drm_plane_helper_funcs.prepare_fb `. If any failure is encountered this function will call :c:type:`drm_plane_helper_funcs.cleanup_fb ` on any already successfully prepared framebuffer.”h]”(hŒeThis function prepares plane state, specifically framebuffers, for the new configuration, by calling ”…”�”}”(hjªšh²hh³Nh´Nubh)�”}”(hŒD:c:type:`drm_plane_helper_funcs.prepare_fb `”h]”jˆ )�”}”(hj´šh]”hŒ!drm_plane_helper_funcs.prepare_fb”…”�”}”(hj¶šh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj²šubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_plane_helper_funcs”uh1hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mû hjªšubhŒ8. If any failure is encountered this function will call ”…”�”}”(hjªšh²hh³Nh´Nubh)�”}”(hŒD:c:type:`drm_plane_helper_funcs.cleanup_fb `”h]”jˆ )�”}”(hjØšh]”hŒ!drm_plane_helper_funcs.cleanup_fb”…”�”}”(hjÚšh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÖšubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_plane_helper_funcs”uh1hh³jÑšh´Mû hjªšubhŒ2 on any already successfully prepared framebuffer.”…”�”}”(hjªšh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÑšh´Mû hjû™ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj›h]”hŒReturn”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÿšubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M hjû™ubhÎ)�”}”(hŒ-0 on success, negative error code on failure.”h]”hŒ-0 on success, negative error code on failure.”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M hjû™ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjçDh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ/drm_atomic_helper_unprepare_planes (C function)”Œ$c.drm_atomic_helper_unprepare_planes”hNt”auh1j† hjçDh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒavoid drm_atomic_helper_unprepare_planes (struct drm_device *dev, struct drm_atomic_commit *state)”h]”j¤ )�”}”(hŒ`void drm_atomic_helper_unprepare_planes(struct drm_device *dev, struct drm_atomic_commit *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjF›h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjB›h²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MT ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjU›h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjB›h²hh³jT›h´MT ubjÍ )�”}”(hŒ"drm_atomic_helper_unprepare_planes”h]”jÓ )�”}”(hŒ"drm_atomic_helper_unprepare_planes”h]”hŒ"drm_atomic_helper_unprepare_planes”…”�”}”(hjg›h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjc›ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjB›h²hh³jT›h´MT ubjÞ)�”}”(hŒ9(struct drm_device *dev, struct drm_atomic_commit *state)”h]”(jä)�”}”(hŒstruct drm_device *dev”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Œ drm_device”h]”hŒ drm_device”…”�”}”(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%)�”}”jji›sbŒ$c.drm_atomic_helper_unprepare_planes”†”asbuh1hhj›ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁ›h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj›ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÏ›h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj›ubjÓ )�”}”(hŒdev”h]”hŒdev”…”�”}”(hjÜ›h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj›ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj{›ubjä)�”}”(hŒstruct drm_atomic_commit *state”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Œdrm_atomic_commit”h]”hŒdrm_atomic_commit”…”�”}”(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.drm_atomic_helper_unprepare_planes”†”asbuh1hhjñ›ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1œh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjñ›ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj?œh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjñ›ubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hjLœh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjñ›ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj{›ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjB›h²hh³jT›h´MT ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj>›h²hh³jT›h´MT ubah}”(h]”j9›ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jT›h´MT hj;›h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ!release plane resources on aborts”h]”hŒ!release plane resources on aborts”…”�”}”(hjvœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MT hjsœh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj;›h²hh³jT›h´MT ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jŽœj$ jŽœj% ‰j& ‰j' ‰uh1j˜ h²hhjçDh³Nh´Nubj) )�”}”(hX£**Parameters** ``struct drm_device *dev`` DRM device ``struct drm_atomic_commit *state`` atomic state object with old state structures **Description** This function cleans up plane state, specifically framebuffers, from the atomic state. It undoes the effects of drm_atomic_helper_prepare_planes() when aborting an atomic commit. For cleaning up after a successful commit use drm_atomic_helper_cleanup_planes().”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj˜œh]”hŒ Parameters”…”�”}”(hjšœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj–œubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MX hj’œubjw )�”}”(hhh]”(j| )�”}”(hŒ&``struct drm_device *dev`` DRM device ”h]”(j‚ )�”}”(hŒ``struct drm_device *dev``”h]”jˆ )�”}”(hj·œh]”hŒstruct drm_device *dev”…”�”}”(hj¹œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjµœubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MU hj±œubjž )�”}”(hhh]”hÎ)�”}”(hŒ DRM device”h]”hŒ DRM device”…”�”}”(hjМh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÌœh´MU hjÍœubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj±œubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÌœh´MU hj®œubj| )�”}”(hŒR``struct drm_atomic_commit *state`` atomic state object with old state structures ”h]”(j‚ )�”}”(hŒ#``struct drm_atomic_commit *state``”h]”jˆ )�”}”(hjðœh]”hŒstruct drm_atomic_commit *state”…”�”}”(hjòœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjîœubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MV hjêœubjž )�”}”(hhh]”hÎ)�”}”(hŒ-atomic state object with old state structures”h]”hŒ-atomic state object with old state structures”…”�”}”(hj �h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j�h´MV hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjêœubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j�h´MV hj®œubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj’œubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj+�h]”hŒ Description”…”�”}”(hj-�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj)�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MX hj’œubhÎ)�”}”(hXThis function cleans up plane state, specifically framebuffers, from the atomic state. It undoes the effects of drm_atomic_helper_prepare_planes() when aborting an atomic commit. For cleaning up after a successful commit use drm_atomic_helper_cleanup_planes().”h]”hXThis function cleans up plane state, specifically framebuffers, from the atomic state. It undoes the effects of drm_atomic_helper_prepare_planes() when aborting an atomic commit. For cleaning up after a successful commit use drm_atomic_helper_cleanup_planes().”…”�”}”(hjA�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MW hj’œubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjçDh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ,drm_atomic_helper_commit_planes (C function)”Œ!c.drm_atomic_helper_commit_planes”hNt”auh1j† hjçDh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒnvoid drm_atomic_helper_commit_planes (struct drm_device *dev, struct drm_atomic_commit *state, uint32_t flags)”h]”j¤ )�”}”(hŒmvoid drm_atomic_helper_commit_planes(struct drm_device *dev, struct drm_atomic_commit *state, uint32_t flags)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjp�h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjl�h²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mz ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjl�h²hh³j~�h´Mz ubjÍ )�”}”(hŒdrm_atomic_helper_commit_planes”h]”jÓ )�”}”(hŒdrm_atomic_helper_commit_planes”h]”hŒdrm_atomic_helper_commit_planes”…”�”}”(hj‘�h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj��ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjl�h²hh³j~�h´Mz ubjÞ)�”}”(hŒI(struct drm_device *dev, struct drm_atomic_commit *state, uint32_t flags)”h]”(jä)�”}”(hŒstruct drm_device *dev”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Œ drm_device”h]”hŒ drm_device”…”�”}”(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%)�”}”jj“�sbŒ!c.drm_atomic_helper_commit_planes”†”asbuh1hhj©�ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjë�h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj©�ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjù�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj©�ubjÓ )�”}”(hŒdev”h]”hŒdev”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj©�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¥�ubjä)�”}”(hŒstruct drm_atomic_commit *state”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Œdrm_atomic_commit”h]”hŒdrm_atomic_commit”…”�”}”(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.drm_atomic_helper_commit_planes”†”asbuh1hhjžubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[žh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjžubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjižh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjžubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hjvžh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjžubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¥�ubjä)�”}”(hŒuint32_t flags”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒuint32_t”h]”hŒuint32_t”…”�”}”(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.drm_atomic_helper_commit_planes”†”asbuh1hhj‹žubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°žh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj‹žubjÓ )�”}”(hŒflags”h]”hŒflags”…”�”}”(hj¾žh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj‹žubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¥�ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjl�h²hh³j~�h´Mz ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjh�h²hh³j~�h´Mz ubah}”(h]”jc�ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j~�h´Mz hje�h²hubj )�”}”(hhh]”hÎ)�”}”(hŒcommit plane state”h]”hŒcommit plane state”…”�”}”(hjèžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mz hjåžh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hje�h²hh³j~�h´Mz ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jŸj$ jŸj% ‰j& ‰j' ‰uh1j˜ h²hhjçDh³Nh´Nubj) )�”}”(hX"**Parameters** ``struct drm_device *dev`` DRM device ``struct drm_atomic_commit *state`` atomic state object being committed ``uint32_t flags`` flags for committing plane state **Description** This function commits the new plane state using the plane and atomic helper functions for planes and CRTCs. It assumes that the atomic state has already been pushed into the relevant object state pointers, since this step can no longer fail. It still requires the global state object **state** to know which planes and crtcs need to be updated though. Note that this function does all plane updates across all CRTCs in one step. If the hardware can't support this approach look at drm_atomic_helper_commit_planes_on_crtc() instead. Plane parameters can be updated by applications while the associated CRTC is disabled. The DRM/KMS core will store the parameters in the plane state, which will be available to the driver when the CRTC is turned on. As a result most drivers don't need to be immediately notified of plane updates for a disabled CRTC. Unless otherwise needed, drivers are advised to set the ACTIVE_ONLY flag in **flags** in order not to receive plane update notifications related to a disabled CRTC. This avoids the need to manually ignore plane updates in driver code when the driver and/or hardware can't or just don't need to deal with updates on disabled CRTCs, for example when supporting runtime PM. Drivers may set the NO_DISABLE_AFTER_MODESET flag in **flags** if the relevant display controllers require to disable a CRTC's planes when the CRTC is disabled. This function would skip the :c:type:`drm_plane_helper_funcs.atomic_disable ` call for a plane if the CRTC of the old plane state needs a modesetting operation. Of course, the drivers need to disable the planes in their CRTC disable callbacks since no one else would do that. The drm_atomic_helper_commit() default implementation doesn't set the ACTIVE_ONLY flag to most closely match the behaviour of the legacy helpers. This should not be copied blindly by drivers.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj Ÿh]”hŒ Parameters”…”�”}”(hj Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M~ hjŸubjw )�”}”(hhh]”(j| )�”}”(hŒ&``struct drm_device *dev`` DRM device ”h]”(j‚ )�”}”(hŒ``struct drm_device *dev``”h]”jˆ )�”}”(hj)Ÿh]”hŒstruct drm_device *dev”…”�”}”(hj+Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj'Ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M{ hj#Ÿubjž )�”}”(hhh]”hÎ)�”}”(hŒ DRM device”h]”hŒ DRM device”…”�”}”(hjBŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j>Ÿh´M{ hj?Ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj#Ÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j>Ÿh´M{ hj Ÿubj| )�”}”(hŒH``struct drm_atomic_commit *state`` atomic state object being committed ”h]”(j‚ )�”}”(hŒ#``struct drm_atomic_commit *state``”h]”jˆ )�”}”(hjbŸh]”hŒstruct drm_atomic_commit *state”…”�”}”(hjdŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj`Ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M| hj\Ÿubjž )�”}”(hhh]”hÎ)�”}”(hŒ#atomic state object being committed”h]”hŒ#atomic state object being committed”…”�”}”(hj{Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jwŸh´M| hjxŸubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj\Ÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jwŸh´M| hj Ÿubj| )�”}”(hŒ4``uint32_t flags`` flags for committing plane state ”h]”(j‚ )�”}”(hŒ``uint32_t flags``”h]”jˆ )�”}”(hj›Ÿh]”hŒuint32_t flags”…”�”}”(hj�Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj™Ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M} hj•Ÿubjž )�”}”(hhh]”hÎ)�”}”(hŒ flags for committing plane state”h]”hŒ flags for committing plane state”…”�”}”(hj´Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j°Ÿh´M} hj±Ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj•Ÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j°Ÿh´M} hj Ÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjŸubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjÖŸh]”hŒ Description”…”�”}”(hjØŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÔŸubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M hjŸubhÎ)�”}”(hŒñThis function commits the new plane state using the plane and atomic helper functions for planes and CRTCs. It assumes that the atomic state has already been pushed into the relevant object state pointers, since this step can no longer fail.”h]”hŒñThis function commits the new plane state using the plane and atomic helper functions for planes and CRTCs. It assumes that the atomic state has already been pushed into the relevant object state pointers, since this step can no longer fail.”…”�”}”(hjìŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M~ hjŸubhÎ)�”}”(hŒmIt still requires the global state object **state** to know which planes and crtcs need to be updated though.”h]”(hŒ*It still requires the global state object ”…”�”}”(hjûŸh²hh³Nh´Nubj3 )�”}”(hŒ **state**”h]”hŒstate”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjûŸubhŒ: to know which planes and crtcs need to be updated though.”…”�”}”(hjûŸh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mƒ hjŸubhÎ)�”}”(hŒ³Note that this function does all plane updates across all CRTCs in one step. If the hardware can't support this approach look at drm_atomic_helper_commit_planes_on_crtc() instead.”h]”hŒµNote that this function does all plane updates across all CRTCs in one step. If the hardware can’t support this approach look at drm_atomic_helper_commit_planes_on_crtc() instead.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M† hjŸubhÎ)�”}”(hX<Plane parameters can be updated by applications while the associated CRTC is disabled. The DRM/KMS core will store the parameters in the plane state, which will be available to the driver when the CRTC is turned on. As a result most drivers don't need to be immediately notified of plane updates for a disabled CRTC.”h]”hX>Plane parameters can be updated by applications while the associated CRTC is disabled. The DRM/KMS core will store the parameters in the plane state, which will be available to the driver when the CRTC is turned on. As a result most drivers don’t need to be immediately notified of plane updates for a disabled CRTC.”…”�”}”(hj+ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MŠ hjŸubhÎ)�”}”(hXrUnless otherwise needed, drivers are advised to set the ACTIVE_ONLY flag in **flags** in order not to receive plane update notifications related to a disabled CRTC. This avoids the need to manually ignore plane updates in driver code when the driver and/or hardware can't or just don't need to deal with updates on disabled CRTCs, for example when supporting runtime PM.”h]”(hŒLUnless otherwise needed, drivers are advised to set the ACTIVE_ONLY flag in ”…”�”}”(hj: h²hh³Nh´Nubj3 )�”}”(hŒ **flags**”h]”hŒflags”…”�”}”(hjB h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj: ubhX! in order not to receive plane update notifications related to a disabled CRTC. This avoids the need to manually ignore plane updates in driver code when the driver and/or hardware can’t or just don’t need to deal with updates on disabled CRTCs, for example when supporting runtime PM.”…”�”}”(hj: h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M� hjŸubhÎ)�”}”(hXÌDrivers may set the NO_DISABLE_AFTER_MODESET flag in **flags** if the relevant display controllers require to disable a CRTC's planes when the CRTC is disabled. This function would skip the :c:type:`drm_plane_helper_funcs.atomic_disable ` call for a plane if the CRTC of the old plane state needs a modesetting operation. Of course, the drivers need to disable the planes in their CRTC disable callbacks since no one else would do that.”h]”(hŒ5Drivers may set the NO_DISABLE_AFTER_MODESET flag in ”…”�”}”(hj[ h²hh³Nh´Nubj3 )�”}”(hŒ **flags**”h]”hŒflags”…”�”}”(hjc h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj[ ubhŒ‚ if the relevant display controllers require to disable a CRTC’s planes when the CRTC is disabled. This function would skip the ”…”�”}”(hj[ h²hh³Nh´Nubh)�”}”(hŒH:c:type:`drm_plane_helper_funcs.atomic_disable `”h]”jˆ )�”}”(hjw h]”hŒ%drm_plane_helper_funcs.atomic_disable”…”�”}”(hjy h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hju ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_plane_helper_funcs”uh1hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M– hj[ ubhŒÆ call for a plane if the CRTC of the old plane state needs a modesetting operation. Of course, the drivers need to disable the planes in their CRTC disable callbacks since no one else would do that.”…”�”}”(hj[ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j” h´M– hjŸubhÎ)�”}”(hŒ¿The drm_atomic_helper_commit() default implementation doesn't set the ACTIVE_ONLY flag to most closely match the behaviour of the legacy helpers. This should not be copied blindly by drivers.”h]”hŒÁThe drm_atomic_helper_commit() default implementation doesn’t set the ACTIVE_ONLY flag to most closely match the behaviour of the legacy helpers. This should not be copied blindly by drivers.”…”�”}”(hjŸ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M� hjŸubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjçDh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ4drm_atomic_helper_commit_planes_on_crtc (C function)”Œ)c.drm_atomic_helper_commit_planes_on_crtc”hNt”auh1j† hjçDh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒTvoid drm_atomic_helper_commit_planes_on_crtc (struct drm_crtc_state *old_crtc_state)”h]”j¤ )�”}”(hŒSvoid drm_atomic_helper_commit_planes_on_crtc(struct drm_crtc_state *old_crtc_state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjΠh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjÊ h²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.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Œ'drm_atomic_helper_commit_planes_on_crtc”h]”jÓ )�”}”(hŒ'drm_atomic_helper_commit_planes_on_crtc”h]”hŒ'drm_atomic_helper_commit_planes_on_crtc”…”�”}”(hjï h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjë ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÊ h²hh³jÜ h´M ubjÞ)�”}”(hŒ'(struct drm_crtc_state *old_crtc_state)”h]”jä)�”}”(hŒ%struct drm_crtc_state *old_crtc_state”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Œdrm_crtc_state”h]”hŒdrm_crtc_state”…”�”}”(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%)�”}”jjñ sbŒ)c.drm_atomic_helper_commit_planes_on_crtc”†”asbuh1hhj¡ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjI¡h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¡ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjW¡h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¡ubjÓ )�”}”(hŒold_crtc_state”h]”hŒold_crtc_state”…”�”}”(hjd¡h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¡ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjÊ h²hh³jÜ h´M ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œcommit plane state for a CRTC”h]”hŒcommit plane state for a CRTC”…”�”}”(hjŽ¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.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²hhjçDh³Nh´Nubj) )�”}”(hX1**Parameters** ``struct drm_crtc_state *old_crtc_state`` atomic state object with the old CRTC state **Description** This function commits the new plane state using the plane and atomic helper functions for planes on the specific CRTC. It assumes that the atomic state has already been pushed into the relevant object state pointers, since this step can no longer fail. This function is useful when plane updates should be done CRTC-by-CRTC instead of one global step like drm_atomic_helper_commit_planes() does. This function can only be savely used when planes are not allowed to move between different CRTCs because this function doesn't handle inter-CRTC dependencies. Callers need to ensure that either no such dependencies exist, resolve them through ordering of commit calls or through some other means.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj°¡h]”hŒ Parameters”…”�”}”(hj²¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj®¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M hjª¡ubjw )�”}”(hhh]”j| )�”}”(hŒV``struct drm_crtc_state *old_crtc_state`` atomic state object with the old CRTC state ”h]”(j‚ )�”}”(hŒ)``struct drm_crtc_state *old_crtc_state``”h]”jˆ )�”}”(hjÏ¡h]”hŒ%struct drm_crtc_state *old_crtc_state”…”�”}”(hjÑ¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÍ¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M hjÉ¡ubjž )�”}”(hhh]”hÎ)�”}”(hŒ+atomic state object with the old CRTC state”h]”hŒ+atomic state object with the old CRTC state”…”�”}”(hjè¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jä¡h´M hjå¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÉ¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jä¡h´M hjÆ¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjª¡ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj ¢h]”hŒ Description”…”�”}”(hj ¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M hjª¡ubhÎ)�”}”(hŒüThis function commits the new plane state using the plane and atomic helper functions for planes on the specific CRTC. It assumes that the atomic state has already been pushed into the relevant object state pointers, since this step can no longer fail.”h]”hŒüThis function commits the new plane state using the plane and atomic helper functions for planes on the specific CRTC. It assumes that the atomic state has already been pushed into the relevant object state pointers, since this step can no longer fail.”…”�”}”(hj ¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M hjª¡ubhÎ)�”}”(hŒŽThis function is useful when plane updates should be done CRTC-by-CRTC instead of one global step like drm_atomic_helper_commit_planes() does.”h]”hŒŽThis function is useful when plane updates should be done CRTC-by-CRTC instead of one global step like drm_atomic_helper_commit_planes() does.”…”�”}”(hj/¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M hjª¡ubhÎ)�”}”(hX)This function can only be savely used when planes are not allowed to move between different CRTCs because this function doesn't handle inter-CRTC dependencies. Callers need to ensure that either no such dependencies exist, resolve them through ordering of commit calls or through some other means.”h]”hX+This function can only be savely used when planes are not allowed to move between different CRTCs because this function doesn’t handle inter-CRTC dependencies. Callers need to ensure that either no such dependencies exist, resolve them through ordering of commit calls or through some other means.”…”�”}”(hj>¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M hjª¡ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjçDh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ5drm_atomic_helper_disable_planes_on_crtc (C function)”Œ*c.drm_atomic_helper_disable_planes_on_crtc”hNt”auh1j† hjçDh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒbvoid drm_atomic_helper_disable_planes_on_crtc (struct drm_crtc_state *old_crtc_state, bool atomic)”h]”j¤ )�”}”(hŒavoid drm_atomic_helper_disable_planes_on_crtc(struct drm_crtc_state *old_crtc_state, bool atomic)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjm¢h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hji¢h²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MO ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|¢h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hji¢h²hh³j{¢h´MO ubjÍ )�”}”(hŒ(drm_atomic_helper_disable_planes_on_crtc”h]”jÓ )�”}”(hŒ(drm_atomic_helper_disable_planes_on_crtc”h]”hŒ(drm_atomic_helper_disable_planes_on_crtc”…”�”}”(hjŽ¢h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjŠ¢ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hji¢h²hh³j{¢h´MO ubjÞ)�”}”(hŒ4(struct drm_crtc_state *old_crtc_state, bool atomic)”h]”(jä)�”}”(hŒ%struct drm_crtc_state *old_crtc_state”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Œdrm_crtc_state”h]”hŒdrm_crtc_state”…”�”}”(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%)�”}”jj�¢sbŒ*c.drm_atomic_helper_disable_planes_on_crtc”†”asbuh1hhj¦¢ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjè¢h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¦¢ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjö¢h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¦¢ubjÓ )�”}”(hŒold_crtc_state”h]”hŒold_crtc_state”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¦¢ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¢¢ubjä)�”}”(hŒ bool atomic”h]”(j¦)�”}”(hj£Ih]”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Œatomic”h]”hŒatomic”…”�”}”(hj7£h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj£ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¢¢ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhji¢h²hh³j{¢h´MO ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hje¢h²hh³j{¢h´MO ubah}”(h]”j`¢ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j{¢h´MO hjb¢h²hubj )�”}”(hhh]”hÎ)�”}”(hŒhelper to disable CRTC's planes”h]”hŒ!helper to disable CRTC’s planes”…”�”}”(hja£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MO hj^£h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjb¢h²hh³j{¢h´MO ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jy£j$ jy£j% ‰j& ‰j' ‰uh1j˜ h²hhjçDh³Nh´Nubj) )�”}”(hXy**Parameters** ``struct drm_crtc_state *old_crtc_state`` atomic state object with the old CRTC state ``bool atomic`` if set, synchronize with CRTC's atomic_begin/flush hooks **Description** Disables all planes associated with the given CRTC. This can be used for instance in the CRTC helper atomic_disable callback to disable all planes. If the atomic-parameter is set the function calls the CRTC's atomic_begin hook before and atomic_flush hook after disabling the planes. It is a bug to call this function without having implemented the :c:type:`drm_plane_helper_funcs.atomic_disable ` plane hook.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjƒ£h]”hŒ Parameters”…”�”}”(hj…£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj�£ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MS hj}£ubjw )�”}”(hhh]”(j| )�”}”(hŒV``struct drm_crtc_state *old_crtc_state`` atomic state object with the old CRTC state ”h]”(j‚ )�”}”(hŒ)``struct drm_crtc_state *old_crtc_state``”h]”jˆ )�”}”(hj¢£h]”hŒ%struct drm_crtc_state *old_crtc_state”…”�”}”(hj¤£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj £ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MP hjœ£ubjž )�”}”(hhh]”hÎ)�”}”(hŒ+atomic state object with the old CRTC state”h]”hŒ+atomic state object with the old CRTC state”…”�”}”(hj»£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j·£h´MP hj¸£ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjœ£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j·£h´MP hj™£ubj| )�”}”(hŒI``bool atomic`` if set, synchronize with CRTC's atomic_begin/flush hooks ”h]”(j‚ )�”}”(hŒ``bool atomic``”h]”jˆ )�”}”(hjÛ£h]”hŒ bool atomic”…”�”}”(hjÝ£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÙ£ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MQ hjÕ£ubjž )�”}”(hhh]”hÎ)�”}”(hŒ8if set, synchronize with CRTC's atomic_begin/flush hooks”h]”hŒ:if set, synchronize with CRTC’s atomic_begin/flush hooks”…”�”}”(hjô£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jð£h´MQ hjñ£ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÕ£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jð£h´MQ hj™£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj}£ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj¤h]”hŒ Description”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MS hj}£ubhÎ)�”}”(hŒ“Disables all planes associated with the given CRTC. This can be used for instance in the CRTC helper atomic_disable callback to disable all planes.”h]”hŒ“Disables all planes associated with the given CRTC. This can be used for instance in the CRTC helper atomic_disable callback to disable all planes.”…”�”}”(hj,¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MR hj}£ubhÎ)�”}”(hŒ‡If the atomic-parameter is set the function calls the CRTC's atomic_begin hook before and atomic_flush hook after disabling the planes.”h]”hŒ‰If the atomic-parameter is set the function calls the CRTC’s atomic_begin hook before and atomic_flush hook after disabling the planes.”…”�”}”(hj;¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MV hj}£ubhÎ)�”}”(hŒ•It is a bug to call this function without having implemented the :c:type:`drm_plane_helper_funcs.atomic_disable ` plane hook.”h]”(hŒAIt is a bug to call this function without having implemented the ”…”�”}”(hjJ¤h²hh³Nh´Nubh)�”}”(hŒH:c:type:`drm_plane_helper_funcs.atomic_disable `”h]”jˆ )�”}”(hjT¤h]”hŒ%drm_plane_helper_funcs.atomic_disable”…”�”}”(hjV¤h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjR¤ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_plane_helper_funcs”uh1hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MZ hjJ¤ubhŒ plane hook.”…”�”}”(hjJ¤h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jq¤h´MZ hj}£ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjçDh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ-drm_atomic_helper_cleanup_planes (C function)”Œ"c.drm_atomic_helper_cleanup_planes”hNt”auh1j† hjçDh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ_void drm_atomic_helper_cleanup_planes (struct drm_device *dev, struct drm_atomic_commit *state)”h]”j¤ )�”}”(hŒ^void drm_atomic_helper_cleanup_planes(struct drm_device *dev, struct drm_atomic_commit *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjœ¤h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj˜¤h²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.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Œ drm_atomic_helper_cleanup_planes”h]”jÓ )�”}”(hŒ drm_atomic_helper_cleanup_planes”h]”hŒ drm_atomic_helper_cleanup_planes”…”�”}”(hj½¤h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¹¤ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj˜¤h²hh³jª¤h´M| ubjÞ)�”}”(hŒ9(struct drm_device *dev, struct drm_atomic_commit *state)”h]”(jä)�”}”(hŒstruct drm_device *dev”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Œ drm_device”h]”hŒ drm_device”…”�”}”(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%)�”}”jj¿¤sbŒ"c.drm_atomic_helper_cleanup_planes”†”asbuh1hhjÕ¤ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÕ¤ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj%¥h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÕ¤ubjÓ )�”}”(hŒdev”h]”hŒdev”…”�”}”(hj2¥h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÕ¤ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjѤubjä)�”}”(hŒstruct drm_atomic_commit *state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjK¥h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjG¥ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjX¥h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjG¥ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_atomic_commit”h]”hŒdrm_atomic_commit”…”�”}”(hji¥h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjf¥ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jk¥Œmodname”NŒ classname”Njé jì )�”}”jï ]”j¥Œ"c.drm_atomic_helper_cleanup_planes”†”asbuh1hhjG¥ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡¥h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjG¥ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj•¥h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjG¥ubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hj¢¥h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjG¥ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjѤubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj˜¤h²hh³jª¤h´M| ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ$cleanup plane resources after commit”h]”hŒ$cleanup plane resources after commit”…”�”}”(hjÌ¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.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²hhjçDh³Nh´Nubj) )�”}”(hX**Parameters** ``struct drm_device *dev`` DRM device ``struct drm_atomic_commit *state`` atomic state object being committed **Description** This function cleans up plane state, specifically framebuffers, from the old configuration. Hence the old configuration must be perserved in **state** to be able to call this function. This function may not be called on the new state when the atomic update fails at any point after calling drm_atomic_helper_prepare_planes(). Use drm_atomic_helper_unprepare_planes() in this case.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjî¥h]”hŒ Parameters”…”�”}”(hjð¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjì¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M€ hjè¥ubjw )�”}”(hhh]”(j| )�”}”(hŒ&``struct drm_device *dev`` DRM device ”h]”(j‚ )�”}”(hŒ``struct drm_device *dev``”h]”jˆ )�”}”(hj ¦h]”hŒstruct drm_device *dev”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj ¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M} hj¦ubjž )�”}”(hhh]”hÎ)�”}”(hŒ DRM device”h]”hŒ DRM device”…”�”}”(hj&¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j"¦h´M} hj#¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j"¦h´M} hj¦ubj| )�”}”(hŒH``struct drm_atomic_commit *state`` atomic state object being committed ”h]”(j‚ )�”}”(hŒ#``struct drm_atomic_commit *state``”h]”jˆ )�”}”(hjF¦h]”hŒstruct drm_atomic_commit *state”…”�”}”(hjH¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjD¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M~ hj@¦ubjž )�”}”(hhh]”hÎ)�”}”(hŒ#atomic state object being committed”h]”hŒ#atomic state object being committed”…”�”}”(hj_¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j[¦h´M~ hj\¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj@¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j[¦h´M~ hj¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjè¥ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj�¦h]”hŒ Description”…”�”}”(hjƒ¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M€ hjè¥ubhÎ)�”}”(hŒ¸This function cleans up plane state, specifically framebuffers, from the old configuration. Hence the old configuration must be perserved in **state** to be able to call this function.”h]”(hŒ�This function cleans up plane state, specifically framebuffers, from the old configuration. Hence the old configuration must be perserved in ”…”�”}”(hj—¦h²hh³Nh´Nubj3 )�”}”(hŒ **state**”h]”hŒstate”…”�”}”(hjŸ¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj—¦ubhŒ" to be able to call this function.”…”�”}”(hj—¦h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M hjè¥ubhÎ)�”}”(hŒÃThis function may not be called on the new state when the atomic update fails at any point after calling drm_atomic_helper_prepare_planes(). Use drm_atomic_helper_unprepare_planes() in this case.”h]”hŒÃThis function may not be called on the new state when the atomic update fails at any point after calling drm_atomic_helper_prepare_planes(). Use drm_atomic_helper_unprepare_planes() in this case.”…”�”}”(hj¸¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mƒ hjè¥ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjçDh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ)drm_atomic_helper_swap_state (C function)”Œc.drm_atomic_helper_swap_state”hNt”auh1j† hjçDh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒNint drm_atomic_helper_swap_state (struct drm_atomic_commit *state, bool stall)”h]”j¤ )�”}”(hŒMint drm_atomic_helper_swap_state(struct drm_atomic_commit *state, bool stall)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjç¦h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjã¦h²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.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Œdrm_atomic_helper_swap_state”h]”jÓ )�”}”(hŒdrm_atomic_helper_swap_state”h]”hŒdrm_atomic_helper_swap_state”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj§ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjã¦h²hh³jõ¦h´M™ ubjÞ)�”}”(hŒ-(struct drm_atomic_commit *state, bool stall)”h]”(jä)�”}”(hŒstruct drm_atomic_commit *state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj$§h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj §ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1§h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj §ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_atomic_commit”h]”hŒdrm_atomic_commit”…”�”}”(hjB§h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj?§ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jD§Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj §sbŒc.drm_atomic_helper_swap_state”†”asbuh1hhj §ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjb§h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj §ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjp§h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj §ubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hj}§h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj §ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj§ubjä)�”}”(hŒ bool stall”h]”(j¦)�”}”(hj£Ih]”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Œstall”h]”hŒstall”…”�”}”(hj±§h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj’§ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj§ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjã¦h²hh³jõ¦h´M™ ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ(store atomic state into current sw state”h]”hŒ(store atomic state into current sw state”…”�”}”(hjÛ§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.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²hhjçDh³Nh´Nubj) )�”}”(hX‹**Parameters** ``struct drm_atomic_commit *state`` atomic state ``bool stall`` stall for preceding commits **Description** This function stores the atomic state into the current state pointers in all driver objects. It should be called after all failing steps have been done and succeeded, but before the actual hardware state is committed. For cleanup and error recovery the current state for all changed objects will be swapped into **state**. With that sequence it fits perfectly into the plane prepare/cleanup sequence: 1. Call drm_atomic_helper_prepare_planes() with the staged atomic state. 2. Do any other steps that might fail. 3. Put the staged state into the current state pointers with this function. 4. Actually commit the hardware state. 5. Call drm_atomic_helper_cleanup_planes() with **state**, which since step 3 contains the old state. Also do any other cleanup required with that state. **stall** must be set when nonblocking commits for this driver directly access the :c:type:`drm_plane.state `, :c:type:`drm_crtc.state ` or :c:type:`drm_connector.state ` pointer. With the current atomic helpers this is almost always the case, since the helpers don't pass the right state structures to the callbacks. **Return** Returns 0 on success. Can return -ERESTARTSYS when **stall** is true and the waiting for the previous commits has been interrupted.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjý§h]”hŒ Parameters”…”�”}”(hjÿ§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjû§ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M� hj÷§ubjw )�”}”(hhh]”(j| )�”}”(hŒ1``struct drm_atomic_commit *state`` atomic state ”h]”(j‚ )�”}”(hŒ#``struct drm_atomic_commit *state``”h]”jˆ )�”}”(hj¨h]”hŒstruct drm_atomic_commit *state”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mš hj¨ubjž )�”}”(hhh]”hÎ)�”}”(hŒ atomic state”h]”hŒ atomic state”…”�”}”(hj5¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j1¨h´Mš hj2¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j1¨h´Mš hj¨ubj| )�”}”(hŒ+``bool stall`` stall for preceding commits ”h]”(j‚ )�”}”(hŒ``bool stall``”h]”jˆ )�”}”(hjU¨h]”hŒ bool stall”…”�”}”(hjW¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjS¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M› hjO¨ubjž )�”}”(hhh]”hÎ)�”}”(hŒstall for preceding commits”h]”hŒstall for preceding commits”…”�”}”(hjn¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jj¨h´M› hjk¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjO¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jj¨h´M› hj¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj÷§ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj�¨h]”hŒ Description”…”�”}”(hj’¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjލubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M� hj÷§ubhÎ)�”}”(hŒÙThis function stores the atomic state into the current state pointers in all driver objects. It should be called after all failing steps have been done and succeeded, but before the actual hardware state is committed.”h]”hŒÙThis function stores the atomic state into the current state pointers in all driver objects. It should be called after all failing steps have been done and succeeded, but before the actual hardware state is committed.”…”�”}”(hj¦¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mœ hj÷§ubhÎ)�”}”(hŒhFor cleanup and error recovery the current state for all changed objects will be swapped into **state**.”h]”(hŒ^For cleanup and error recovery the current state for all changed objects will be swapped into ”…”�”}”(hjµ¨h²hh³Nh´Nubj3 )�”}”(hŒ **state**”h]”hŒstate”…”�”}”(hj½¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjµ¨ubhŒ.”…”�”}”(hjµ¨h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M  hj÷§ubhÎ)�”}”(hŒMWith that sequence it fits perfectly into the plane prepare/cleanup sequence:”h]”hŒMWith that sequence it fits perfectly into the plane prepare/cleanup sequence:”…”�”}”(hjÖ¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M£ hj÷§ubjMP)�”}”(hhh]”(hÿ)�”}”(hŒFCall drm_atomic_helper_prepare_planes() with the staged atomic state. ”h]”hÎ)�”}”(hŒECall drm_atomic_helper_prepare_planes() with the staged atomic state.”h]”hŒECall drm_atomic_helper_prepare_planes() with the staged atomic state.”…”�”}”(hjì¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M¥ hjè¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjå¨ubhÿ)�”}”(hŒ$Do any other steps that might fail. ”h]”hÎ)�”}”(hŒ#Do any other steps that might fail.”h]”hŒ#Do any other steps that might fail.”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M§ hj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjå¨ubhÿ)�”}”(hŒIPut the staged state into the current state pointers with this function. ”h]”hÎ)�”}”(hŒHPut the staged state into the current state pointers with this function.”h]”hŒHPut the staged state into the current state pointers with this function.”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M© hj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjå¨ubhÿ)�”}”(hŒ$Actually commit the hardware state. ”h]”hÎ)�”}”(hŒ#Actually commit the hardware state.”h]”hŒ#Actually commit the hardware state.”…”�”}”(hj7©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M« hj3©ubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjå¨ubeh}”(h]”h ]”h"]”h$]”h&]”jIRjJRjKRhjLRjMRuh1jLPhj÷§ubhÎ)�”}”(hŒ™5. Call drm_atomic_helper_cleanup_planes() with **state**, which since step 3 contains the old state. Also do any other cleanup required with that state.”h]”(hŒ05. Call drm_atomic_helper_cleanup_planes() with ”…”�”}”(hjR©h²hh³Nh´Nubj3 )�”}”(hŒ **state**”h]”hŒstate”…”�”}”(hjZ©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjR©ubhŒ`, which since step 3 contains the old state. Also do any other cleanup required with that state.”…”�”}”(hjR©h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M­ hj÷§ubhÎ)�”}”(hXa**stall** must be set when nonblocking commits for this driver directly access the :c:type:`drm_plane.state `, :c:type:`drm_crtc.state ` or :c:type:`drm_connector.state ` pointer. With the current atomic helpers this is almost always the case, since the helpers don't pass the right state structures to the callbacks.”h]”(j3 )�”}”(hŒ **stall**”h]”hŒstall”…”�”}”(hjw©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjs©ubhŒJ must be set when nonblocking commits for this driver directly access the ”…”�”}”(hjs©h²hh³Nh´Nubh)�”}”(hŒ%:c:type:`drm_plane.state `”h]”jˆ )�”}”(hj‹©h]”hŒdrm_plane.state”…”�”}”(hj�©h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj‰©ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_plane”uh1hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M° hjs©ubhŒ, ”…”�”}”(hjs©h²hh³Nh´Nubh)�”}”(hŒ#:c:type:`drm_crtc.state `”h]”jˆ )�”}”(hj¯©h]”hŒdrm_crtc.state”…”�”}”(hj±©h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj­©ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_crtc”uh1hh³j¨©h´M° hjs©ubhŒ or ”…”�”}”(hjs©h²hh³Nh´Nubh)�”}”(hŒ-:c:type:`drm_connector.state `”h]”jˆ )�”}”(hjÒ©h]”hŒdrm_connector.state”…”�”}”(hjÔ©h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjЩubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_connector”uh1hh³j¨©h´M° hjs©ubhŒ• pointer. With the current atomic helpers this is almost always the case, since the helpers don’t pass the right state structures to the callbacks.”…”�”}”(hjs©h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¨©h´M° hj÷§ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjû©h]”hŒReturn”…”�”}”(hjý©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjù©ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mµ hj÷§ubhÎ)�”}”(hŒƒReturns 0 on success. Can return -ERESTARTSYS when **stall** is true and the waiting for the previous commits has been interrupted.”h]”(hŒ3Returns 0 on success. Can return -ERESTARTSYS when ”…”�”}”(hjªh²hh³Nh´Nubj3 )�”}”(hŒ **stall**”h]”hŒstall”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjªubhŒG is true and the waiting for the previous commits has been interrupted.”…”�”}”(hjªh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M¶ hj÷§ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjçDh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ+drm_atomic_helper_update_plane (C function)”Œ c.drm_atomic_helper_update_plane”hNt”auh1j† hjçDh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hXint drm_atomic_helper_update_plane (struct drm_plane *plane, struct drm_crtc *crtc, struct drm_framebuffer *fb, int crtc_x, int crtc_y, unsigned int crtc_w, unsigned int crtc_h, uint32_t src_x, uint32_t src_y, uint32_t src_w, uint32_t src_h, struct drm_modeset_acquire_ctx *ctx)”h]”j¤ )�”}”(hXint drm_atomic_helper_update_plane(struct drm_plane *plane, struct drm_crtc *crtc, struct drm_framebuffer *fb, int crtc_x, int crtc_y, unsigned int crtc_w, unsigned int crtc_h, uint32_t src_x, uint32_t src_y, uint32_t src_w, uint32_t src_h, struct drm_modeset_acquire_ctx *ctx)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjRªh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjNªh²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M9 ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjaªh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjNªh²hh³j`ªh´M9 ubjÍ )�”}”(hŒdrm_atomic_helper_update_plane”h]”jÓ )�”}”(hŒdrm_atomic_helper_update_plane”h]”hŒdrm_atomic_helper_update_plane”…”�”}”(hjsªh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjoªubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjNªh²hh³j`ªh´M9 ubjÞ)�”}”(hŒó(struct drm_plane *plane, struct drm_crtc *crtc, struct drm_framebuffer *fb, int crtc_x, int crtc_y, unsigned int crtc_w, unsigned int crtc_h, uint32_t src_x, uint32_t src_y, uint32_t src_w, uint32_t src_h, struct drm_modeset_acquire_ctx *ctx)”h]”(jä)�”}”(hŒstruct drm_plane *plane”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Œ drm_plane”h]”hŒ drm_plane”…”�”}”(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%)�”}”jjuªsbŒ c.drm_atomic_helper_update_plane”†”asbuh1hhj‹ªubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjͪh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj‹ªubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÛªh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‹ªubjÓ )�”}”(hŒplane”h]”hŒplane”…”�”}”(hjèªh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj‹ªubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj‡ªubjä)�”}”(hŒstruct drm_crtc *crtc”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Œdrm_crtc”h]”hŒdrm_crtc”…”�”}”(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.drm_atomic_helper_update_plane”†”asbuh1hhjýªubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=«h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjýªubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjK«h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjýªubjÓ )�”}”(hŒcrtc”h]”hŒcrtc”…”�”}”(hjX«h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjýªubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj‡ªubjä)�”}”(hŒstruct drm_framebuffer *fb”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjq«h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjm«ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~«h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjm«ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_framebuffer”h]”hŒdrm_framebuffer”…”�”}”(hj�«h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjŒ«ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j •iŒreftype”jŒ reftarget”j‘«Œmodname”NŒ classname”Njé jì )�”}”jï ]”jɪŒ c.drm_atomic_helper_update_plane”†”asbuh1hhjm«ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­«h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjm«ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj»«h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjm«ubjÓ )�”}”(hŒfb”h]”hŒfb”…”�”}”(hjÈ«h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjm«ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj‡ªubjä)�”}”(hŒ int crtc_x”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(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Œcrtc_x”h]”hŒcrtc_x”…”�”}”(hjý«h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÝ«ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj‡ªubjä)�”}”(hŒ int crtc_y”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(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Œcrtc_y”h]”hŒcrtc_y”…”�”}”(hj2¬h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¬ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj‡ªubjä)�”}”(hŒunsigned int crtc_w”h]”(j¦)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjK¬h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjG¬ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjY¬h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjG¬ubj¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjg¬h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjG¬ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hju¬h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjG¬ubjÓ )�”}”(hŒcrtc_w”h]”hŒcrtc_w”…”�”}”(hjƒ¬h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjG¬ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj‡ªubjä)�”}”(hŒunsigned int crtc_h”h]”(j¦)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(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Œint”h]”hŒint”…”�”}”(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Œcrtc_h”h]”hŒcrtc_h”…”�”}”(hjÔ¬h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj˜¬ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj‡ªubjä)�”}”(hŒuint32_t src_x”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒuint32_t”h]”hŒuint32_t”…”�”}”(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.drm_atomic_helper_update_plane”†”asbuh1hhjé¬ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjé¬ubjÓ )�”}”(hŒsrc_x”h]”hŒsrc_x”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjé¬ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj‡ªubjä)�”}”(hŒuint32_t src_y”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒuint32_t”h]”hŒuint32_t”…”�”}”(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ɪŒ c.drm_atomic_helper_update_plane”†”asbuh1hhj1­ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjV­h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj1­ubjÓ )�”}”(hŒsrc_y”h]”hŒsrc_y”…”�”}”(hjd­h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj1­ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj‡ªubjä)�”}”(hŒuint32_t src_w”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒuint32_t”h]”hŒuint32_t”…”�”}”(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.drm_atomic_helper_update_plane”†”asbuh1hhjy­ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjž­h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjy­ubjÓ )�”}”(hŒsrc_w”h]”hŒsrc_w”…”�”}”(hj¬­h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjy­ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj‡ªubjä)�”}”(hŒuint32_t src_h”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒuint32_t”h]”hŒuint32_t”…”�”}”(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.drm_atomic_helper_update_plane”†”asbuh1hhjÁ­ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæ­h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÁ­ubjÓ )�”}”(hŒsrc_h”h]”hŒsrc_h”…”�”}”(hjô­h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÁ­ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj‡ªubjä)�”}”(hŒ#struct drm_modeset_acquire_ctx *ctx”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Œdrm_modeset_acquire_ctx”h]”hŒdrm_modeset_acquire_ctx”…”�”}”(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.drm_atomic_helper_update_plane”†”asbuh1hhj ®ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjI®h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj ®ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjW®h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ®ubjÓ )�”}”(hŒctx”h]”hŒctx”…”�”}”(hjd®h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj ®ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj‡ªubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjNªh²hh³j`ªh´M9 ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjJªh²hh³j`ªh´M9 ubah}”(h]”jEªah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j`ªh´M9 hjGªh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ,Helper for primary plane update using atomic”h]”hŒ,Helper for primary plane update using atomic”…”�”}”(hjŽ®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M9 hj‹®h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjGªh²hh³j`ªh´M9 ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j¦®j$ j¦®j% ‰j& ‰j' ‰uh1j˜ h²hhjçDh³Nh´Nubj) )�”}”(hXo**Parameters** ``struct drm_plane *plane`` plane object to update ``struct drm_crtc *crtc`` owning CRTC of owning plane ``struct drm_framebuffer *fb`` framebuffer to flip onto plane ``int crtc_x`` x offset of primary plane on **crtc** ``int crtc_y`` y offset of primary plane on **crtc** ``unsigned int crtc_w`` width of primary plane rectangle on **crtc** ``unsigned int crtc_h`` height of primary plane rectangle on **crtc** ``uint32_t src_x`` x offset of **fb** for panning ``uint32_t src_y`` y offset of **fb** for panning ``uint32_t src_w`` width of source rectangle in **fb** ``uint32_t src_h`` height of source rectangle in **fb** ``struct drm_modeset_acquire_ctx *ctx`` lock acquire context **Description** Provides a default plane update handler using the atomic driver interface. **Return** Zero on success, error code on failure”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj°®h]”hŒ Parameters”…”�”}”(hj²®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj®®ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M= hjª®ubjw )�”}”(hhh]”(j| )�”}”(hŒ3``struct drm_plane *plane`` plane object to update ”h]”(j‚ )�”}”(hŒ``struct drm_plane *plane``”h]”jˆ )�”}”(hjÏ®h]”hŒstruct drm_plane *plane”…”�”}”(hjÑ®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÍ®ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M: hjÉ®ubjž )�”}”(hhh]”hÎ)�”}”(hŒplane object to update”h]”hŒplane object to update”…”�”}”(hjè®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jä®h´M: hjå®ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÉ®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jä®h´M: hjÆ®ubj| )�”}”(hŒ6``struct drm_crtc *crtc`` owning CRTC of owning plane ”h]”(j‚ )�”}”(hŒ``struct drm_crtc *crtc``”h]”jˆ )�”}”(hj¯h]”hŒstruct drm_crtc *crtc”…”�”}”(hj ¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M; hj¯ubjž )�”}”(hhh]”hÎ)�”}”(hŒowning CRTC of owning plane”h]”hŒowning CRTC of owning plane”…”�”}”(hj!¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¯h´M; hj¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¯h´M; hjÆ®ubj| )�”}”(hŒ>``struct drm_framebuffer *fb`` framebuffer to flip onto plane ”h]”(j‚ )�”}”(hŒ``struct drm_framebuffer *fb``”h]”jˆ )�”}”(hjA¯h]”hŒstruct drm_framebuffer *fb”…”�”}”(hjC¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj?¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M< hj;¯ubjž )�”}”(hhh]”hÎ)�”}”(hŒframebuffer to flip onto plane”h]”hŒframebuffer to flip onto plane”…”�”}”(hjZ¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jV¯h´M< hjW¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj;¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jV¯h´M< hjÆ®ubj| )�”}”(hŒ5``int crtc_x`` x offset of primary plane on **crtc** ”h]”(j‚ )�”}”(hŒ``int crtc_x``”h]”jˆ )�”}”(hjz¯h]”hŒ int crtc_x”…”�”}”(hj|¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjx¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M= hjt¯ubjž )�”}”(hhh]”hÎ)�”}”(hŒ%x offset of primary plane on **crtc**”h]”(hŒx offset of primary plane on ”…”�”}”(hj“¯h²hh³Nh´Nubj3 )�”}”(hŒ**crtc**”h]”hŒcrtc”…”�”}”(hj›¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj“¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j�¯h´M= hj�¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjt¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j�¯h´M= hjÆ®ubj| )�”}”(hŒ5``int crtc_y`` y offset of primary plane on **crtc** ”h]”(j‚ )�”}”(hŒ``int crtc_y``”h]”jˆ )�”}”(hjÁ¯h]”hŒ int crtc_y”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¿¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M> hj»¯ubjž )�”}”(hhh]”hÎ)�”}”(hŒ%y offset of primary plane on **crtc**”h]”(hŒy offset of primary plane on ”…”�”}”(hjÚ¯h²hh³Nh´Nubj3 )�”}”(hŒ**crtc**”h]”hŒcrtc”…”�”}”(hjâ¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÚ¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÖ¯h´M> hjׯubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj»¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÖ¯h´M> hjÆ®ubj| )�”}”(hŒE``unsigned int crtc_w`` width of primary plane rectangle on **crtc** ”h]”(j‚ )�”}”(hŒ``unsigned int crtc_w``”h]”jˆ )�”}”(hj°h]”hŒunsigned int crtc_w”…”�”}”(hj °h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj°ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M? hj°ubjž )�”}”(hhh]”hÎ)�”}”(hŒ,width of primary plane rectangle on **crtc**”h]”(hŒ$width of primary plane rectangle on ”…”�”}”(hj!°h²hh³Nh´Nubj3 )�”}”(hŒ**crtc**”h]”hŒcrtc”…”�”}”(hj)°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj!°ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j°h´M? hj°ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj°ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j°h´M? hjÆ®ubj| )�”}”(hŒF``unsigned int crtc_h`` height of primary plane rectangle on **crtc** ”h]”(j‚ )�”}”(hŒ``unsigned int crtc_h``”h]”jˆ )�”}”(hjO°h]”hŒunsigned int crtc_h”…”�”}”(hjQ°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjM°ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M@ hjI°ubjž )�”}”(hhh]”hÎ)�”}”(hŒ-height of primary plane rectangle on **crtc**”h]”(hŒ%height of primary plane rectangle on ”…”�”}”(hjh°h²hh³Nh´Nubj3 )�”}”(hŒ**crtc**”h]”hŒcrtc”…”�”}”(hjp°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjh°ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jd°h´M@ hje°ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjI°ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jd°h´M@ hjÆ®ubj| )�”}”(hŒ2``uint32_t src_x`` x offset of **fb** for panning ”h]”(j‚ )�”}”(hŒ``uint32_t src_x``”h]”jˆ )�”}”(hj–°h]”hŒuint32_t src_x”…”�”}”(hj˜°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj”°ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MA hj�°ubjž )�”}”(hhh]”hÎ)�”}”(hŒx offset of **fb** for panning”h]”(hŒ x offset of ”…”�”}”(hj¯°h²hh³Nh´Nubj3 )�”}”(hŒ**fb**”h]”hŒfb”…”�”}”(hj·°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¯°ubhŒ for panning”…”�”}”(hj¯°h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j«°h´MA hj¬°ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj�°ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j«°h´MA hjÆ®ubj| )�”}”(hŒ2``uint32_t src_y`` y offset of **fb** for panning ”h]”(j‚ )�”}”(hŒ``uint32_t src_y``”h]”jˆ )�”}”(hjá°h]”hŒuint32_t src_y”…”�”}”(hjã°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjß°ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MB hjÛ°ubjž )�”}”(hhh]”hÎ)�”}”(hŒy offset of **fb** for panning”h]”(hŒ y offset of ”…”�”}”(hjú°h²hh³Nh´Nubj3 )�”}”(hŒ**fb**”h]”hŒfb”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjú°ubhŒ for panning”…”�”}”(hjú°h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jö°h´MB hj÷°ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÛ°ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jö°h´MB hjÆ®ubj| )�”}”(hŒ7``uint32_t src_w`` width of source rectangle in **fb** ”h]”(j‚ )�”}”(hŒ``uint32_t src_w``”h]”jˆ )�”}”(hj,±h]”hŒuint32_t src_w”…”�”}”(hj.±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj*±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MC hj&±ubjž )�”}”(hhh]”hÎ)�”}”(hŒ#width of source rectangle in **fb**”h]”(hŒwidth of source rectangle in ”…”�”}”(hjE±h²hh³Nh´Nubj3 )�”}”(hŒ**fb**”h]”hŒfb”…”�”}”(hjM±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjE±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jA±h´MC hjB±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj&±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jA±h´MC hjÆ®ubj| )�”}”(hŒ8``uint32_t src_h`` height of source rectangle in **fb** ”h]”(j‚ )�”}”(hŒ``uint32_t src_h``”h]”jˆ )�”}”(hjs±h]”hŒuint32_t src_h”…”�”}”(hju±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjq±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MD hjm±ubjž )�”}”(hhh]”hÎ)�”}”(hŒ$height of source rectangle in **fb**”h]”(hŒheight of source rectangle in ”…”�”}”(hjŒ±h²hh³Nh´Nubj3 )�”}”(hŒ**fb**”h]”hŒfb”…”�”}”(hj”±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjŒ±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jˆ±h´MD hj‰±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjm±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jˆ±h´MD hjÆ®ubj| )�”}”(hŒ=``struct drm_modeset_acquire_ctx *ctx`` lock acquire context ”h]”(j‚ )�”}”(hŒ'``struct drm_modeset_acquire_ctx *ctx``”h]”jˆ )�”}”(hjº±h]”hŒ#struct drm_modeset_acquire_ctx *ctx”…”�”}”(hj¼±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¸±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´ME hj´±ubjž )�”}”(hhh]”hÎ)�”}”(hŒlock acquire context”h]”hŒlock acquire context”…”�”}”(hjÓ±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jϱh´ME hjбubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj´±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jϱh´ME hjÆ®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjª®ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjõ±h]”hŒ Description”…”�”}”(hj÷±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjó±ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MG hjª®ubhÎ)�”}”(hŒJProvides a default plane update handler using the atomic driver interface.”h]”hŒJProvides a default plane update handler using the atomic driver interface.”…”�”}”(hj ²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MF hjª®ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj²h]”hŒReturn”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MH hjª®ubhÎ)�”}”(hŒ&Zero on success, error code on failure”h]”hŒ&Zero on success, error code on failure”…”�”}”(hj2²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MI hjª®ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjçDh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ,drm_atomic_helper_disable_plane (C function)”Œ!c.drm_atomic_helper_disable_plane”hNt”auh1j† hjçDh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒbint drm_atomic_helper_disable_plane (struct drm_plane *plane, struct drm_modeset_acquire_ctx *ctx)”h]”j¤ )�”}”(hŒaint drm_atomic_helper_disable_plane(struct drm_plane *plane, struct drm_modeset_acquire_ctx *ctx)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hja²h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj]²h²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M| ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjp²h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj]²h²hh³jo²h´M| ubjÍ )�”}”(hŒdrm_atomic_helper_disable_plane”h]”jÓ )�”}”(hŒdrm_atomic_helper_disable_plane”h]”hŒdrm_atomic_helper_disable_plane”…”�”}”(hj‚²h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj~²ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj]²h²hh³jo²h´M| ubjÞ)�”}”(hŒ>(struct drm_plane *plane, struct drm_modeset_acquire_ctx *ctx)”h]”(jä)�”}”(hŒstruct drm_plane *plane”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Œ drm_plane”h]”hŒ drm_plane”…”�”}”(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%)�”}”jj„²sbŒ!c.drm_atomic_helper_disable_plane”†”asbuh1hhjš²ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjܲh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjš²ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjê²h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjš²ubjÓ )�”}”(hŒplane”h]”hŒplane”…”�”}”(hj÷²h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjš²ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj–²ubjä)�”}”(hŒ#struct drm_modeset_acquire_ctx *ctx”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Œdrm_modeset_acquire_ctx”h]”hŒdrm_modeset_acquire_ctx”…”�”}”(hj.³h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj+³ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j0³Œmodname”NŒ classname”Njé jì )�”}”jï ]”jزŒ!c.drm_atomic_helper_disable_plane”†”asbuh1hhj ³ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjL³h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj ³ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjZ³h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ³ubjÓ )�”}”(hŒctx”h]”hŒctx”…”�”}”(hjg³h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj ³ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj–²ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj]²h²hh³jo²h´M| ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjY²h²hh³jo²h´M| ubah}”(h]”jT²ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jo²h´M| hjV²h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ-Helper for primary plane disable using atomic”h]”hŒ-Helper for primary plane disable using atomic”…”�”}”(hj‘³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M| hj޳h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjV²h²hh³jo²h´M| ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j©³j$ j©³j% ‰j& ‰j' ‰uh1j˜ h²hhjçDh³Nh´Nubj) )�”}”(hX**Parameters** ``struct drm_plane *plane`` plane to disable ``struct drm_modeset_acquire_ctx *ctx`` lock acquire context **Description** Provides a default plane disable handler using the atomic driver interface. **Return** Zero on success, error code on failure”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj³³h]”hŒ Parameters”…”�”}”(hjµ³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj±³ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M€ hj­³ubjw )�”}”(hhh]”(j| )�”}”(hŒ-``struct drm_plane *plane`` plane to disable ”h]”(j‚ )�”}”(hŒ``struct drm_plane *plane``”h]”jˆ )�”}”(hjÒ³h]”hŒstruct drm_plane *plane”…”�”}”(hjÔ³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjгubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M} hj̳ubjž )�”}”(hhh]”hÎ)�”}”(hŒplane to disable”h]”hŒplane to disable”…”�”}”(hjë³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jç³h´M} hjè³ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj̳ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jç³h´M} hjɳubj| )�”}”(hŒ=``struct drm_modeset_acquire_ctx *ctx`` lock acquire context ”h]”(j‚ )�”}”(hŒ'``struct drm_modeset_acquire_ctx *ctx``”h]”jˆ )�”}”(hj ´h]”hŒ#struct drm_modeset_acquire_ctx *ctx”…”�”}”(hj ´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj ´ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M~ hj´ubjž )�”}”(hhh]”hÎ)�”}”(hŒlock acquire context”h]”hŒlock acquire context”…”�”}”(hj$´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j ´h´M~ hj!´ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j ´h´M~ hjɳubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj­³ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjF´h]”hŒ Description”…”�”}”(hjH´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjD´ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M€ hj­³ubhÎ)�”}”(hŒKProvides a default plane disable handler using the atomic driver interface.”h]”hŒKProvides a default plane disable handler using the atomic driver interface.”…”�”}”(hj\´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M hj­³ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjm´h]”hŒReturn”…”�”}”(hjo´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjk´ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M� hj­³ubhÎ)�”}”(hŒ&Zero on success, error code on failure”h]”hŒ&Zero on success, error code on failure”…”�”}”(hjƒ´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M‚ hj­³ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjçDh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ)drm_atomic_helper_set_config (C function)”Œc.drm_atomic_helper_set_config”hNt”auh1j† hjçDh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ`int drm_atomic_helper_set_config (struct drm_mode_set *set, struct drm_modeset_acquire_ctx *ctx)”h]”j¤ )�”}”(hŒ_int drm_atomic_helper_set_config(struct drm_mode_set *set, struct drm_modeset_acquire_ctx *ctx)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj²´h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj®´h²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.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Œdrm_atomic_helper_set_config”h]”jÓ )�”}”(hŒdrm_atomic_helper_set_config”h]”hŒdrm_atomic_helper_set_config”…”�”}”(hjÓ´h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÏ´ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj®´h²hh³jÀ´h´M¦ ubjÞ)�”}”(hŒ?(struct drm_mode_set *set, struct drm_modeset_acquire_ctx *ctx)”h]”(jä)�”}”(hŒstruct drm_mode_set *set”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Œ drm_mode_set”h]”hŒ drm_mode_set”…”�”}”(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%)�”}”jjÕ´sbŒc.drm_atomic_helper_set_config”†”asbuh1hhjë´ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-µh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjë´ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj;µh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjë´ubjÓ )�”}”(hŒset”h]”hŒset”…”�”}”(hjHµh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjë´ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjç´ubjä)�”}”(hŒ#struct drm_modeset_acquire_ctx *ctx”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjaµh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj]µubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnµh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj]µubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_modeset_acquire_ctx”h]”hŒdrm_modeset_acquire_ctx”…”�”}”(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.drm_atomic_helper_set_config”†”asbuh1hhj]µubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�µh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj]µubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj«µh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj]µubjÓ )�”}”(hŒctx”h]”hŒctx”…”�”}”(hj¸µh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj]µubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjç´ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj®´h²hh³jÀ´h´M¦ ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œset a new config from userspace”h]”hŒset a new config from userspace”…”�”}”(hjâµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.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²hhjçDh³Nh´Nubj) )�”}”(hX~**Parameters** ``struct drm_mode_set *set`` mode set configuration ``struct drm_modeset_acquire_ctx *ctx`` lock acquisition context **Description** Provides a default CRTC set_config handler using the atomic driver interface. **NOTE** For backwards compatibility with old userspace this automatically resets the "link-status" property to GOOD, to force any link re-training. The SETCRTC ioctl does not define whether an update does need a full modeset or just a plane update, hence we're allowed to do that. See also drm_connector_set_link_status_property(). **Return** Returns 0 on success, negative errno numbers on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj¶h]”hŒ Parameters”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mª hjþµubjw )�”}”(hhh]”(j| )�”}”(hŒ4``struct drm_mode_set *set`` mode set configuration ”h]”(j‚ )�”}”(hŒ``struct drm_mode_set *set``”h]”jˆ )�”}”(hj#¶h]”hŒstruct drm_mode_set *set”…”�”}”(hj%¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj!¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M§ hj¶ubjž )�”}”(hhh]”hÎ)�”}”(hŒmode set configuration”h]”hŒmode set configuration”…”�”}”(hj<¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j8¶h´M§ hj9¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j8¶h´M§ hj¶ubj| )�”}”(hŒA``struct drm_modeset_acquire_ctx *ctx`` lock acquisition context ”h]”(j‚ )�”}”(hŒ'``struct drm_modeset_acquire_ctx *ctx``”h]”jˆ )�”}”(hj\¶h]”hŒ#struct drm_modeset_acquire_ctx *ctx”…”�”}”(hj^¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjZ¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M¨ hjV¶ubjž )�”}”(hhh]”hÎ)�”}”(hŒlock acquisition context”h]”hŒlock acquisition context”…”�”}”(hju¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jq¶h´M¨ hjr¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjV¶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jq¶h´M¨ hj¶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjþµubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj—¶h]”hŒ Description”…”�”}”(hj™¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj•¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mª hjþµubhÎ)�”}”(hŒMProvides a default CRTC set_config handler using the atomic driver interface.”h]”hŒMProvides a default CRTC set_config handler using the atomic driver interface.”…”�”}”(hj­¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M© hjþµubhÎ)�”}”(hŒ**NOTE**”h]”j3 )�”}”(hj¾¶h]”hŒNOTE”…”�”}”(hjÀ¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¼¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M« hjþµubhÎ)�”}”(hXCFor backwards compatibility with old userspace this automatically resets the "link-status" property to GOOD, to force any link re-training. The SETCRTC ioctl does not define whether an update does need a full modeset or just a plane update, hence we're allowed to do that. See also drm_connector_set_link_status_property().”h]”hXIFor backwards compatibility with old userspace this automatically resets the “link-statusâ€� property to GOOD, to force any link re-training. The SETCRTC ioctl does not define whether an update does need a full modeset or just a plane update, hence we’re allowed to do that. See also drm_connector_set_link_status_property().”…”�”}”(hjÔ¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M¬ hjþµubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjå¶h]”hŒReturn”…”�”}”(hjç¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjã¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M² hjþµubhÎ)�”}”(hŒ8Returns 0 on success, negative errno numbers on failure.”h]”hŒ8Returns 0 on success, negative errno numbers on failure.”…”�”}”(hjû¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M² hjþµubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjçDh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ*drm_atomic_helper_disable_all (C function)”Œc.drm_atomic_helper_disable_all”hNt”auh1j† hjçDh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ_int drm_atomic_helper_disable_all (struct drm_device *dev, struct drm_modeset_acquire_ctx *ctx)”h]”j¤ )�”}”(hŒ^int drm_atomic_helper_disable_all(struct drm_device *dev, struct drm_modeset_acquire_ctx *ctx)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj*·h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj&·h²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MÒ ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9·h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj&·h²hh³j8·h´MÒ ubjÍ )�”}”(hŒdrm_atomic_helper_disable_all”h]”jÓ )�”}”(hŒdrm_atomic_helper_disable_all”h]”hŒdrm_atomic_helper_disable_all”…”�”}”(hjK·h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjG·ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj&·h²hh³j8·h´MÒ ubjÞ)�”}”(hŒ=(struct drm_device *dev, struct drm_modeset_acquire_ctx *ctx)”h]”(jä)�”}”(hŒstruct drm_device *dev”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjg·h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjc·ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjt·h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjc·ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_device”h]”hŒ drm_device”…”�”}”(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%)�”}”jjM·sbŒc.drm_atomic_helper_disable_all”†”asbuh1hhjc·ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥·h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjc·ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj³·h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjc·ubjÓ )�”}”(hŒdev”h]”hŒdev”…”�”}”(hjÀ·h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjc·ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj_·ubjä)�”}”(hŒ#struct drm_modeset_acquire_ctx *ctx”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Œdrm_modeset_acquire_ctx”h]”hŒdrm_modeset_acquire_ctx”…”�”}”(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.drm_atomic_helper_disable_all”†”asbuh1hhjÕ·ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÕ·ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj#¸h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÕ·ubjÓ )�”}”(hŒctx”h]”hŒctx”…”�”}”(hj0¸h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÕ·ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj_·ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj&·h²hh³j8·h´MÒ ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj"·h²hh³j8·h´MÒ ubah}”(h]”j·ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j8·h´MÒ hj·h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ$disable all currently active outputs”h]”hŒ$disable all currently active outputs”…”�”}”(hjZ¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MÒ hjW¸h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj·h²hh³j8·h´MÒ ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jr¸j$ jr¸j% ‰j& ‰j' ‰uh1j˜ h²hhjçDh³Nh´Nubj) )�”}”(hXG**Parameters** ``struct drm_device *dev`` DRM device ``struct drm_modeset_acquire_ctx *ctx`` lock acquisition context **Description** Loops through all connectors, finding those that aren't turned off and then turns them off by setting their DPMS mode to OFF and deactivating the CRTC that they are connected to. This is used for example in suspend/resume to disable all currently active functions when suspending. If you just want to shut down everything at e.g. driver unload, look at drm_atomic_helper_shutdown(). Note that if callers haven't already acquired all modeset locks this might return -EDEADLK, which must be handled by calling drm_modeset_backoff(). See also: drm_atomic_helper_suspend(), drm_atomic_helper_resume() and drm_atomic_helper_shutdown(). **Return** 0 on success or a negative error code on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj|¸h]”hŒ Parameters”…”�”}”(hj~¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjz¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MÖ hjv¸ubjw )�”}”(hhh]”(j| )�”}”(hŒ&``struct drm_device *dev`` DRM device ”h]”(j‚ )�”}”(hŒ``struct drm_device *dev``”h]”jˆ )�”}”(hj›¸h]”hŒstruct drm_device *dev”…”�”}”(hj�¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj™¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MÓ hj•¸ubjž )�”}”(hhh]”hÎ)�”}”(hŒ DRM device”h]”hŒ DRM device”…”�”}”(hj´¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j°¸h´MÓ hj±¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj•¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j°¸h´MÓ hj’¸ubj| )�”}”(hŒA``struct drm_modeset_acquire_ctx *ctx`` lock acquisition context ”h]”(j‚ )�”}”(hŒ'``struct drm_modeset_acquire_ctx *ctx``”h]”jˆ )�”}”(hjÔ¸h]”hŒ#struct drm_modeset_acquire_ctx *ctx”…”�”}”(hjÖ¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÒ¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MÔ hjθubjž )�”}”(hhh]”hÎ)�”}”(hŒlock acquisition context”h]”hŒlock acquisition context”…”�”}”(hjí¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jé¸h´MÔ hjê¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjθubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jé¸h´MÔ hj’¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjv¸ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj¹h]”hŒ Description”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj ¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MÖ hjv¸ubhÎ)�”}”(hŒ²Loops through all connectors, finding those that aren't turned off and then turns them off by setting their DPMS mode to OFF and deactivating the CRTC that they are connected to.”h]”hŒ´Loops through all connectors, finding those that aren’t turned off and then turns them off by setting their DPMS mode to OFF and deactivating the CRTC that they are connected to.”…”�”}”(hj%¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MÕ hjv¸ubhÎ)�”}”(hŒËThis is used for example in suspend/resume to disable all currently active functions when suspending. If you just want to shut down everything at e.g. driver unload, look at drm_atomic_helper_shutdown().”h]”hŒËThis is used for example in suspend/resume to disable all currently active functions when suspending. If you just want to shut down everything at e.g. driver unload, look at drm_atomic_helper_shutdown().”…”�”}”(hj4¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MÙ hjv¸ubhÎ)�”}”(hŒ“Note that if callers haven't already acquired all modeset locks this might return -EDEADLK, which must be handled by calling drm_modeset_backoff().”h]”hŒ•Note that if callers haven’t already acquired all modeset locks this might return -EDEADLK, which must be handled by calling drm_modeset_backoff().”…”�”}”(hjC¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MÝ hjv¸ubhÎ)�”}”(hŒcSee also: drm_atomic_helper_suspend(), drm_atomic_helper_resume() and drm_atomic_helper_shutdown().”h]”hŒcSee also: drm_atomic_helper_suspend(), drm_atomic_helper_resume() and drm_atomic_helper_shutdown().”…”�”}”(hjR¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Má hjv¸ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjc¹h]”hŒReturn”…”�”}”(hje¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hja¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Må hjv¸ubhÎ)�”}”(hŒ10 on success or a negative error code on failure.”h]”hŒ10 on success or a negative error code on failure.”…”�”}”(hjy¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Má hjv¸ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjçDh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ)drm_atomic_helper_reset_crtc (C function)”Œc.drm_atomic_helper_reset_crtc”hNt”auh1j† hjçDh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ]int drm_atomic_helper_reset_crtc (struct drm_crtc *crtc, struct drm_modeset_acquire_ctx *ctx)”h]”j¤ )�”}”(hŒ\int drm_atomic_helper_reset_crtc(struct drm_crtc *crtc, struct drm_modeset_acquire_ctx *ctx)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj¨¹h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj¤¹h²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.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Œdrm_atomic_helper_reset_crtc”h]”jÓ )�”}”(hŒdrm_atomic_helper_reset_crtc”h]”hŒdrm_atomic_helper_reset_crtc”…”�”}”(hjɹh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjŹubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj¤¹h²hh³j¶¹h´M&ubjÞ)�”}”(hŒ<(struct drm_crtc *crtc, struct drm_modeset_acquire_ctx *ctx)”h]”(jä)�”}”(hŒstruct drm_crtc *crtc”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Œdrm_crtc”h]”hŒdrm_crtc”…”�”}”(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%)�”}”jj˹sbŒc.drm_atomic_helper_reset_crtc”†”asbuh1hhjá¹ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#ºh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjá¹ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj1ºh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjá¹ubjÓ )�”}”(hŒcrtc”h]”hŒcrtc”…”�”}”(hj>ºh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjá¹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjݹubjä)�”}”(hŒ#struct drm_modeset_acquire_ctx *ctx”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjWºh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjSºubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdºh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjSºubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_modeset_acquire_ctx”h]”hŒdrm_modeset_acquire_ctx”…”�”}”(hjuºh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjrºubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jwºŒmodname”NŒ classname”Njé jì )�”}”jï ]”jºŒc.drm_atomic_helper_reset_crtc”†”asbuh1hhjSºubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“ºh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjSºubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj¡ºh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjSºubjÓ )�”}”(hŒctx”h]”hŒctx”…”�”}”(hj®ºh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjSºubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjݹubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj¤¹h²hh³j¶¹h´M&ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ"reset the active outputs of a CRTC”h]”hŒ"reset the active outputs of a CRTC”…”�”}”(hjغh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.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²hhjçDh³Nh´Nubj) )�”}”(hX’**Parameters** ``struct drm_crtc *crtc`` DRM CRTC ``struct drm_modeset_acquire_ctx *ctx`` lock acquisition context **Description** Reset the active outputs by indicating that connectors have changed. This implies a reset of all active components available between the CRTC and connectors. A variant of this function exists with drm_bridge_helper_reset_crtc(), dedicated to bridges. **NOTE** This relies on resetting :c:type:`drm_crtc_state.connectors_changed `. For drivers which optimize out unnecessary modesets this will result in a no-op commit, achieving nothing. **Return** 0 on success or a negative error code on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjúºh]”hŒ Parameters”…”�”}”(hjüºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjøºubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M*hjôºubjw )�”}”(hhh]”(j| )�”}”(hŒ#``struct drm_crtc *crtc`` DRM CRTC ”h]”(j‚ )�”}”(hŒ``struct drm_crtc *crtc``”h]”jˆ )�”}”(hj»h]”hŒstruct drm_crtc *crtc”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj»ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M'hj»ubjž )�”}”(hhh]”hÎ)�”}”(hŒDRM CRTC”h]”hŒDRM CRTC”…”�”}”(hj2»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j.»h´M'hj/»ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj»ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j.»h´M'hj»ubj| )�”}”(hŒA``struct drm_modeset_acquire_ctx *ctx`` lock acquisition context ”h]”(j‚ )�”}”(hŒ'``struct drm_modeset_acquire_ctx *ctx``”h]”jˆ )�”}”(hjR»h]”hŒ#struct drm_modeset_acquire_ctx *ctx”…”�”}”(hjT»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjP»ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M(hjL»ubjž )�”}”(hhh]”hÎ)�”}”(hŒlock acquisition context”h]”hŒlock acquisition context”…”�”}”(hjk»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jg»h´M(hjh»ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjL»ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jg»h´M(hj»ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjôºubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj�»h]”hŒ Description”…”�”}”(hj�»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj‹»ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M*hjôºubhÎ)�”}”(hŒ�Reset the active outputs by indicating that connectors have changed. This implies a reset of all active components available between the CRTC and connectors.”h]”hŒ�Reset the active outputs by indicating that connectors have changed. This implies a reset of all active components available between the CRTC and connectors.”…”�”}”(hj£»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M)hjôºubhÎ)�”}”(hŒ\A variant of this function exists with drm_bridge_helper_reset_crtc(), dedicated to bridges.”h]”hŒ\A variant of this function exists with drm_bridge_helper_reset_crtc(), dedicated to bridges.”…”�”}”(hj²»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M-hjôºubhÎ)�”}”(hŒ**NOTE**”h]”j3 )�”}”(hjûh]”hŒNOTE”…”�”}”(hjÅ»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÁ»ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M0hjôºubhÎ)�”}”(hŒÁThis relies on resetting :c:type:`drm_crtc_state.connectors_changed `. For drivers which optimize out unnecessary modesets this will result in a no-op commit, achieving nothing.”h]”(hŒThis relies on resetting ”…”�”}”(hjÙ»h²hh³Nh´Nubh)�”}”(hŒ<:c:type:`drm_crtc_state.connectors_changed `”h]”jˆ )�”}”(hjã»h]”hŒ!drm_crtc_state.connectors_changed”…”�”}”(hjå»h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjá»ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_crtc_state”uh1hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M1hjÙ»ubhŒl. For drivers which optimize out unnecessary modesets this will result in a no-op commit, achieving nothing.”…”�”}”(hjÙ»h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¼h´M1hjôºubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj ¼h]”hŒReturn”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj ¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M5hjôºubhÎ)�”}”(hŒ10 on success or a negative error code on failure.”h]”hŒ10 on success or a negative error code on failure.”…”�”}”(hj#¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M5hjôºubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjçDh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ'drm_atomic_helper_shutdown (C function)”Œc.drm_atomic_helper_shutdown”hNt”auh1j† hjçDh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ8void drm_atomic_helper_shutdown (struct drm_device *dev)”h]”j¤ )�”}”(hŒ7void drm_atomic_helper_shutdown(struct drm_device *dev)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjR¼h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjN¼h²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MVubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hja¼h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjN¼h²hh³j`¼h´MVubjÍ )�”}”(hŒdrm_atomic_helper_shutdown”h]”jÓ )�”}”(hŒdrm_atomic_helper_shutdown”h]”hŒdrm_atomic_helper_shutdown”…”�”}”(hjs¼h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjo¼ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjN¼h²hh³j`¼h´MVubjÞ)�”}”(hŒ(struct drm_device *dev)”h]”jä)�”}”(hŒstruct drm_device *dev”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Œ drm_device”h]”hŒ drm_device”…”�”}”(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%)�”}”jju¼sbŒc.drm_atomic_helper_shutdown”†”asbuh1hhj‹¼ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjͼh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj‹¼ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÛ¼h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‹¼ubjÓ )�”}”(hŒdev”h]”hŒdev”…”�”}”(hjè¼h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj‹¼ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj‡¼ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjN¼h²hh³j`¼h´MVubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjJ¼h²hh³j`¼h´MVubah}”(h]”jE¼ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j`¼h´MVhjG¼h²hubj )�”}”(hhh]”hÎ)�”}”(hŒshutdown all CRTC”h]”hŒshutdown all CRTC”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MVhj½h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjG¼h²hh³j`¼h´MVubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j*½j$ j*½j% ‰j& ‰j' ‰uh1j˜ h²hhjçDh³Nh´Nubj) )�”}”(hXµ**Parameters** ``struct drm_device *dev`` DRM device **Description** This shuts down all CRTC, which is useful for driver unloading. Shutdown on suspend should instead be handled with drm_atomic_helper_suspend(), since that also takes a snapshot of the modeset state to be restored on resume. This is just a convenience wrapper around drm_atomic_helper_disable_all(), and it is the atomic version of drm_helper_force_disable_all().”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj4½h]”hŒ Parameters”…”�”}”(hj6½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj2½ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MZhj.½ubjw )�”}”(hhh]”j| )�”}”(hŒ&``struct drm_device *dev`` DRM device ”h]”(j‚ )�”}”(hŒ``struct drm_device *dev``”h]”jˆ )�”}”(hjS½h]”hŒstruct drm_device *dev”…”�”}”(hjU½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjQ½ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MWhjM½ubjž )�”}”(hhh]”hÎ)�”}”(hŒ DRM device”h]”hŒ DRM device”…”�”}”(hjl½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jh½h´MWhji½ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjM½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jh½h´MWhjJ½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj.½ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj޽h]”hŒ Description”…”�”}”(hj�½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjŒ½ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MYhj.½ubhÎ)�”}”(hŒßThis shuts down all CRTC, which is useful for driver unloading. Shutdown on suspend should instead be handled with drm_atomic_helper_suspend(), since that also takes a snapshot of the modeset state to be restored on resume.”h]”hŒßThis shuts down all CRTC, which is useful for driver unloading. Shutdown on suspend should instead be handled with drm_atomic_helper_suspend(), since that also takes a snapshot of the modeset state to be restored on resume.”…”�”}”(hj¤½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MXhj.½ubhÎ)�”}”(hŒŠThis is just a convenience wrapper around drm_atomic_helper_disable_all(), and it is the atomic version of drm_helper_force_disable_all().”h]”hŒŠThis is just a convenience wrapper around drm_atomic_helper_disable_all(), and it is the atomic version of drm_helper_force_disable_all().”…”�”}”(hj³½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M\hj.½ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjçDh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ.drm_atomic_helper_duplicate_state (C function)”Œ#c.drm_atomic_helper_duplicate_state”hNt”auh1j† hjçDh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒzstruct drm_atomic_commit * drm_atomic_helper_duplicate_state (struct drm_device *dev, struct drm_modeset_acquire_ctx *ctx)”h]”j¤ )�”}”(hŒxstruct drm_atomic_commit *drm_atomic_helper_duplicate_state(struct drm_device *dev, struct drm_modeset_acquire_ctx *ctx)”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjâ½h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjÞ½h²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Muubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjð½h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÞ½h²hh³jï½h´Muubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_atomic_commit”h]”hŒdrm_atomic_commit”…”�”}”(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Œ!drm_atomic_helper_duplicate_state”sbŒ#c.drm_atomic_helper_duplicate_state”†”asbuh1hhjÞ½h²hh³jï½h´Muubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"¾h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÞ½h²hh³jï½h´Muubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj0¾h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÞ½h²hh³jï½h´MuubjÍ )�”}”(hŒ!drm_atomic_helper_duplicate_state”h]”jÓ )�”}”(hj¾h]”hŒ!drm_atomic_helper_duplicate_state”…”�”}”(hjA¾h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj=¾ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÞ½h²hh³jï½h´MuubjÞ)�”}”(hŒ=(struct drm_device *dev, struct drm_modeset_acquire_ctx *ctx)”h]”(jä)�”}”(hŒstruct drm_device *dev”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj\¾h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjX¾ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hji¾h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjX¾ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_device”h]”hŒ drm_device”…”�”}”(hjz¾h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjw¾ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j|¾Œmodname”NŒ classname”Njé jì )�”}”jï ]”j¾Œ#c.drm_atomic_helper_duplicate_state”†”asbuh1hhjX¾ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜¾h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjX¾ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj¦¾h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjX¾ubjÓ )�”}”(hŒdev”h]”hŒdev”…”�”}”(hj³¾h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjX¾ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjT¾ubjä)�”}”(hŒ#struct drm_modeset_acquire_ctx *ctx”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Œdrm_modeset_acquire_ctx”h]”hŒdrm_modeset_acquire_ctx”…”�”}”(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.drm_atomic_helper_duplicate_state”†”asbuh1hhjȾubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjȾubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjȾubjÓ )�”}”(hŒctx”h]”hŒctx”…”�”}”(hj#¿h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjȾubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjT¾ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjÞ½h²hh³jï½h´Muubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjÚ½h²hh³jï½h´Muubah}”(h]”jÕ½ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jï½h´Muhj×½h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ duplicate an atomic state object”h]”hŒ duplicate an atomic state object”…”�”}”(hjM¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MuhjJ¿h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj×½h²hh³jï½h´Muubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# je¿j$ je¿j% ‰j& ‰j' ‰uh1j˜ h²hhjçDh³Nh´Nubj) )�”}”(hX�**Parameters** ``struct drm_device *dev`` DRM device ``struct drm_modeset_acquire_ctx *ctx`` lock acquisition context **Description** Makes a copy of the current atomic state by looping over all objects and duplicating their respective states. This is used for example by suspend/ resume support code to save the state prior to suspend such that it can be restored upon resume. Note that this treats atomic state as persistent between save and restore. Drivers must make sure that this is possible and won't result in confusion or erroneous behaviour. Note that if callers haven't already acquired all modeset locks this might return -EDEADLK, which must be handled by calling drm_modeset_backoff(). See also: drm_atomic_helper_suspend(), drm_atomic_helper_resume() **Return** A pointer to the copy of the atomic state object on success or an ERR_PTR()-encoded error code on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjo¿h]”hŒ Parameters”…”�”}”(hjq¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjm¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Myhji¿ubjw )�”}”(hhh]”(j| )�”}”(hŒ&``struct drm_device *dev`` DRM device ”h]”(j‚ )�”}”(hŒ``struct drm_device *dev``”h]”jˆ )�”}”(hjŽ¿h]”hŒstruct drm_device *dev”…”�”}”(hj�¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjŒ¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mvhjˆ¿ubjž )�”}”(hhh]”hÎ)�”}”(hŒ DRM device”h]”hŒ DRM device”…”�”}”(hj§¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j£¿h´Mvhj¤¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjˆ¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j£¿h´Mvhj…¿ubj| )�”}”(hŒA``struct drm_modeset_acquire_ctx *ctx`` lock acquisition context ”h]”(j‚ )�”}”(hŒ'``struct drm_modeset_acquire_ctx *ctx``”h]”jˆ )�”}”(hjÇ¿h]”hŒ#struct drm_modeset_acquire_ctx *ctx”…”�”}”(hjÉ¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÅ¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MwhjÁ¿ubjž )�”}”(hhh]”hÎ)�”}”(hŒlock acquisition context”h]”hŒlock acquisition context”…”�”}”(hjà¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÜ¿h´MwhjÝ¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÁ¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÜ¿h´Mwhj…¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hji¿ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjÀh]”hŒ Description”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Myhji¿ubhÎ)�”}”(hŒóMakes a copy of the current atomic state by looping over all objects and duplicating their respective states. This is used for example by suspend/ resume support code to save the state prior to suspend such that it can be restored upon resume.”•0h]”hŒóMakes a copy of the current atomic state by looping over all objects and duplicating their respective states. This is used for example by suspend/ resume support code to save the state prior to suspend such that it can be restored upon resume.”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mxhji¿ubhÎ)�”}”(hŒ­Note that this treats atomic state as persistent between save and restore. Drivers must make sure that this is possible and won't result in confusion or erroneous behaviour.”h]”hŒ¯Note that this treats atomic state as persistent between save and restore. Drivers must make sure that this is possible and won’t result in confusion or erroneous behaviour.”…”�”}”(hj'Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M}hji¿ubhÎ)�”}”(hŒ“Note that if callers haven't already acquired all modeset locks this might return -EDEADLK, which must be handled by calling drm_modeset_backoff().”h]”hŒ•Note that if callers haven’t already acquired all modeset locks this might return -EDEADLK, which must be handled by calling drm_modeset_backoff().”…”�”}”(hj6Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M�hji¿ubhÎ)�”}”(hŒASee also: drm_atomic_helper_suspend(), drm_atomic_helper_resume()”h]”hŒASee also: drm_atomic_helper_suspend(), drm_atomic_helper_resume()”…”�”}”(hjEÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M…hji¿ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjVÀh]”hŒReturn”…”�”}”(hjXÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjTÀubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mˆhji¿ubhÎ)�”}”(hŒjA pointer to the copy of the atomic state object on success or an ERR_PTR()-encoded error code on failure.”h]”hŒjA pointer to the copy of the atomic state object on success or an ERR_PTR()-encoded error code on failure.”…”�”}”(hjlÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M…hji¿ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjçDh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ&drm_atomic_helper_suspend (C function)”Œc.drm_atomic_helper_suspend”hNt”auh1j† hjçDh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒMstruct drm_atomic_commit * drm_atomic_helper_suspend (struct drm_device *dev)”h]”j¤ )�”}”(hŒKstruct drm_atomic_commit *drm_atomic_helper_suspend(struct drm_device *dev)”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj›Àh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj—Àh²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.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Ôubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_atomic_commit”h]”hŒdrm_atomic_commit”…”�”}”(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Œdrm_atomic_helper_suspend”sbŒc.drm_atomic_helper_suspend”†”asbuh1hhj—Àh²hh³j¨Àh´MÔubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛÀh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj—Àh²hh³j¨Àh´MÔubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjéÀh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj—Àh²hh³j¨Àh´MÔubjÍ )�”}”(hŒdrm_atomic_helper_suspend”h]”jÓ )�”}”(hjØÀh]”hŒdrm_atomic_helper_suspend”…”�”}”(hjúÀh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjöÀubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj—Àh²hh³j¨Àh´MÔubjÞ)�”}”(hŒ(struct drm_device *dev)”h]”jä)�”}”(hŒstruct drm_device *dev”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Œ drm_device”h]”hŒ drm_device”…”�”}”(hj3Áh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj0Áubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j5ÁŒmodname”NŒ classname”Njé jì )�”}”jï ]”jÖÀŒc.drm_atomic_helper_suspend”†”asbuh1hhjÁubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQÁh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÁubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj_Áh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÁubjÓ )�”}”(hŒdev”h]”hŒdev”…”�”}”(hjlÁh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÁubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj Áubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj—Àh²hh³j¨Àh´MÔubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œsubsystem-level suspend helper”h]”hŒsubsystem-level suspend helper”…”�”}”(hj–Áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.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²hhjçDh³Nh´Nubj) )�”}”(hX-**Parameters** ``struct drm_device *dev`` DRM device **Description** Duplicates the current atomic state, disables all active outputs and then returns a pointer to the original atomic state to the caller. Drivers can pass this pointer to the drm_atomic_helper_resume() helper upon resume to restore the output configuration that was active at the time the system entered suspend. Note that it is potentially unsafe to use this. The atomic state object returned by this function is assumed to be persistent. Drivers must ensure that this holds true. Before calling this function, drivers must make sure to suspend fbdev emulation so that nothing can be using the device. See also: drm_atomic_helper_duplicate_state(), drm_atomic_helper_disable_all(), drm_atomic_helper_resume(), drm_atomic_helper_commit_duplicated_state() **Return** A pointer to a copy of the state before suspend on success or an ERR_PTR()- encoded error code on failure. Drivers should store the returned atomic state object and pass it to the drm_atomic_helper_resume() helper upon resume.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj¸Áh]”hŒ Parameters”…”�”}”(hjºÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¶Áubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MØhj²Áubjw )�”}”(hhh]”j| )�”}”(hŒ&``struct drm_device *dev`` DRM device ”h]”(j‚ )�”}”(hŒ``struct drm_device *dev``”h]”jˆ )�”}”(hj×Áh]”hŒstruct drm_device *dev”…”�”}”(hjÙÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÕÁubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MÕhjÑÁubjž )�”}”(hhh]”hÎ)�”}”(hŒ DRM device”h]”hŒ DRM device”…”�”}”(hjðÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jìÁh´MÕhjíÁubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÑÁubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jìÁh´MÕhjÎÁubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj²ÁubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjÂh]”hŒ Description”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÂubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M×hj²ÁubhÎ)�”}”(hX6Duplicates the current atomic state, disables all active outputs and then returns a pointer to the original atomic state to the caller. Drivers can pass this pointer to the drm_atomic_helper_resume() helper upon resume to restore the output configuration that was active at the time the system entered suspend.”h]”hX6Duplicates the current atomic state, disables all active outputs and then returns a pointer to the original atomic state to the caller. Drivers can pass this pointer to the drm_atomic_helper_resume() helper upon resume to restore the output configuration that was active at the time the system entered suspend.”…”�”}”(hj(Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MÖhj²ÁubhÎ)�”}”(hX!Note that it is potentially unsafe to use this. The atomic state object returned by this function is assumed to be persistent. Drivers must ensure that this holds true. Before calling this function, drivers must make sure to suspend fbdev emulation so that nothing can be using the device.”h]”hX!Note that it is potentially unsafe to use this. The atomic state object returned by this function is assumed to be persistent. Drivers must ensure that this holds true. Before calling this function, drivers must make sure to suspend fbdev emulation so that nothing can be using the device.”…”�”}”(hj7Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MÜhj²ÁubhÎ)�”}”(hŒ—See also: drm_atomic_helper_duplicate_state(), drm_atomic_helper_disable_all(), drm_atomic_helper_resume(), drm_atomic_helper_commit_duplicated_state()”h]”hŒ—See also: drm_atomic_helper_duplicate_state(), drm_atomic_helper_disable_all(), drm_atomic_helper_resume(), drm_atomic_helper_commit_duplicated_state()”…”�”}”(hjFÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mâhj²ÁubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjWÂh]”hŒReturn”…”�”}”(hjYÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjUÂubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mæhj²ÁubhÎ)�”}”(hŒâA pointer to a copy of the state before suspend on success or an ERR_PTR()- encoded error code on failure. Drivers should store the returned atomic state object and pass it to the drm_atomic_helper_resume() helper upon resume.”h]”hŒâA pointer to a copy of the state before suspend on success or an ERR_PTR()- encoded error code on failure. Drivers should store the returned atomic state object and pass it to the drm_atomic_helper_resume() helper upon resume.”…”�”}”(hjmÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mâhj²Áubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjçDh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ6drm_atomic_helper_commit_duplicated_state (C function)”Œ+c.drm_atomic_helper_commit_duplicated_state”hNt”auh1j† hjçDh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒtint drm_atomic_helper_commit_duplicated_state (struct drm_atomic_commit *state, struct drm_modeset_acquire_ctx *ctx)”h]”j¤ )�”}”(hŒsint drm_atomic_helper_commit_duplicated_state(struct drm_atomic_commit *state, struct drm_modeset_acquire_ctx *ctx)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjœÂh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj˜Âh²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.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Œ)drm_atomic_helper_commit_duplicated_state”h]”jÓ )�”}”(hŒ)drm_atomic_helper_commit_duplicated_state”h]”hŒ)drm_atomic_helper_commit_duplicated_state”…”�”}”(hj½Âh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¹Âubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj˜Âh²hh³jªÂh´M ubjÞ)�”}”(hŒF(struct drm_atomic_commit *state, struct drm_modeset_acquire_ctx *ctx)”h]”(jä)�”}”(hŒstruct drm_atomic_commit *state”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Œdrm_atomic_commit”h]”hŒdrm_atomic_commit”…”�”}”(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%)�”}”jj¿ÂsbŒ+c.drm_atomic_helper_commit_duplicated_state”†”asbuh1hhjÕÂubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÕÂubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj%Ãh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÕÂubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hj2Ãh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÕÂubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÑÂubjä)�”}”(hŒ#struct drm_modeset_acquire_ctx *ctx”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjKÃh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjGÃubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXÃh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjGÃubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_modeset_acquire_ctx”h]”hŒdrm_modeset_acquire_ctx”…”�”}”(hjiÃh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjfÃubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jkÃŒmodname”NŒ classname”Njé jì )�”}”jï ]”jÃŒ+c.drm_atomic_helper_commit_duplicated_state”†”asbuh1hhjGÃubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡Ãh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjGÃubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj•Ãh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjGÃubjÓ )�”}”(hŒctx”h]”hŒctx”…”�”}”(hj¢Ãh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjGÃubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÑÂubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj˜Âh²hh³jªÂh´M ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œcommit duplicated state”h]”hŒcommit duplicated state”…”�”}”(hjÌÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.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²hhjçDh³Nh´Nubj) )�”}”(hX½**Parameters** ``struct drm_atomic_commit *state`` duplicated atomic state to commit ``struct drm_modeset_acquire_ctx *ctx`` pointer to acquire_ctx to use for commit. **Description** The state returned by drm_atomic_helper_duplicate_state() and drm_atomic_helper_suspend() is partially invalid, and needs to be fixed up before commit. See also: drm_atomic_helper_suspend() **Return** 0 on success or a negative error code on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjîÃh]”hŒ Parameters”…”�”}”(hjðÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjìÃubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MhjèÃubjw )�”}”(hhh]”(j| )�”}”(hŒF``struct drm_atomic_commit *state`` duplicated atomic state to commit ”h]”(j‚ )�”}”(hŒ#``struct drm_atomic_commit *state``”h]”jˆ )�”}”(hj Äh]”hŒstruct drm_atomic_commit *state”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj Äubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M hjÄubjž )�”}”(hhh]”hÎ)�”}”(hŒ!duplicated atomic state to commit”h]”hŒ!duplicated atomic state to commit”…”�”}”(hj&Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j"Äh´M hj#Äubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÄubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j"Äh´M hjÄubj| )�”}”(hŒR``struct drm_modeset_acquire_ctx *ctx`` pointer to acquire_ctx to use for commit. ”h]”(j‚ )�”}”(hŒ'``struct drm_modeset_acquire_ctx *ctx``”h]”jˆ )�”}”(hjFÄh]”hŒ#struct drm_modeset_acquire_ctx *ctx”…”�”}”(hjHÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjDÄubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mhj@Äubjž )�”}”(hhh]”hÎ)�”}”(hŒ)pointer to acquire_ctx to use for commit.”h]”hŒ)pointer to acquire_ctx to use for commit.”…”�”}”(hj_Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j[Äh´Mhj\Äubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj@Äubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j[Äh´MhjÄubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjèÃubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj�Äh]”hŒ Description”…”�”}”(hjƒÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÄubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MhjèÃubhÎ)�”}”(hŒ—The state returned by drm_atomic_helper_duplicate_state() and drm_atomic_helper_suspend() is partially invalid, and needs to be fixed up before commit.”h]”hŒ—The state returned by drm_atomic_helper_duplicate_state() and drm_atomic_helper_suspend() is partially invalid, and needs to be fixed up before commit.”…”�”}”(hj—Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MhjèÃubhÎ)�”}”(hŒ%See also: drm_atomic_helper_suspend()”h]”hŒ%See also: drm_atomic_helper_suspend()”…”�”}”(hj¦Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MhjèÃubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj·Äh]”hŒReturn”…”�”}”(hj¹Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjµÄubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MhjèÃubhÎ)�”}”(hŒ10 on success or a negative error code on failure.”h]”hŒ10 on success or a negative error code on failure.”…”�”}”(hjÍÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MhjèÃubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjçDh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ%drm_atomic_helper_resume (C function)”Œc.drm_atomic_helper_resume”hNt”auh1j† hjçDh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒVint drm_atomic_helper_resume (struct drm_device *dev, struct drm_atomic_commit *state)”h]”j¤ )�”}”(hŒUint drm_atomic_helper_resume(struct drm_device *dev, struct drm_atomic_commit *state)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjüÄh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjøÄh²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.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Œdrm_atomic_helper_resume”h]”jÓ )�”}”(hŒdrm_atomic_helper_resume”h]”hŒdrm_atomic_helper_resume”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÅubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjøÄh²hh³j Åh´M>ubjÞ)�”}”(hŒ9(struct drm_device *dev, struct drm_atomic_commit *state)”h]”(jä)�”}”(hŒstruct drm_device *dev”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj9Åh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj5Åubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFÅh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj5Åubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_device”h]”hŒ drm_device”…”�”}”(hjWÅh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjTÅubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jYÅŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjÅsbŒc.drm_atomic_helper_resume”†”asbuh1hhj5Åubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwÅh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj5Åubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj…Åh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj5ÅubjÓ )�”}”(hŒdev”h]”hŒdev”…”�”}”(hj’Åh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj5Åubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj1Åubjä)�”}”(hŒstruct drm_atomic_commit *state”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Œdrm_atomic_commit”h]”hŒdrm_atomic_commit”…”�”}”(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ï ]”jsÅŒc.drm_atomic_helper_resume”†”asbuh1hhj§Åubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjçÅh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj§Åubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjõÅh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj§ÅubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj§Åubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj1Åubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjøÄh²hh³j Åh´M>ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œsubsystem-level resume helper”h]”hŒsubsystem-level resume helper”…”�”}”(hj,Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.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# jDÆj$ jDÆj% ‰j& ‰j' ‰uh1j˜ h²hhjçDh³Nh´Nubj) )�”}”(hX**Parameters** ``struct drm_device *dev`` DRM device ``struct drm_atomic_commit *state`` atomic state to resume to **Description** Calls drm_mode_config_reset() to synchronize hardware and software states, grabs all modeset locks and commits the atomic state object. This can be used in conjunction with the drm_atomic_helper_suspend() helper to implement suspend/resume for drivers that support atomic mode-setting. See also: drm_atomic_helper_suspend() **Return** 0 on success or a negative error code on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjNÆh]”hŒ Parameters”…”�”}”(hjPÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjLÆubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MBhjHÆubjw )�”}”(hhh]”(j| )�”}”(hŒ&``struct drm_device *dev`` DRM device ”h]”(j‚ )�”}”(hŒ``struct drm_device *dev``”h]”jˆ )�”}”(hjmÆh]”hŒstruct drm_device *dev”…”�”}”(hjoÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjkÆubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M?hjgÆubjž )�”}”(hhh]”hÎ)�”}”(hŒ DRM device”h]”hŒ DRM device”…”�”}”(hj†Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j‚Æh´M?hjƒÆubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjgÆubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j‚Æh´M?hjdÆubj| )�”}”(hŒ>``struct drm_atomic_commit *state`` atomic state to resume to ”h]”(j‚ )�”}”(hŒ#``struct drm_atomic_commit *state``”h]”jˆ )�”}”(hj¦Æh]”hŒstruct drm_atomic_commit *state”…”�”}”(hj¨Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¤Æubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M@hj Æubjž )�”}”(hhh]”hÎ)�”}”(hŒatomic state to resume to”h]”hŒatomic state to resume to”…”�”}”(hj¿Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j»Æh´M@hj¼Æubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj Æubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j»Æh´M@hjdÆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjHÆubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjáÆh]”hŒ Description”…”�”}”(hjãÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj߯ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MBhjHÆubhÎ)�”}”(hXCalls drm_mode_config_reset() to synchronize hardware and software states, grabs all modeset locks and commits the atomic state object. This can be used in conjunction with the drm_atomic_helper_suspend() helper to implement suspend/resume for drivers that support atomic mode-setting.”h]”hXCalls drm_mode_config_reset() to synchronize hardware and software states, grabs all modeset locks and commits the atomic state object. This can be used in conjunction with the drm_atomic_helper_suspend() helper to implement suspend/resume for drivers that support atomic mode-setting.”…”�”}”(hj÷Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MAhjHÆubhÎ)�”}”(hŒ%See also: drm_atomic_helper_suspend()”h]”hŒ%See also: drm_atomic_helper_suspend()”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MGhjHÆubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjÇh]”hŒReturn”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÇubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MJhjHÆubhÎ)�”}”(hŒ10 on success or a negative error code on failure.”h]”hŒ10 on success or a negative error code on failure.”…”�”}”(hj-Çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MGhjHÆubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjçDh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ(drm_atomic_helper_page_flip (C function)”Œc.drm_atomic_helper_page_flip”hNt”auh1j† hjçDh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ°int drm_atomic_helper_page_flip (struct drm_crtc *crtc, struct drm_framebuffer *fb, struct drm_pending_vblank_event *event, uint32_t flags, struct drm_modeset_acquire_ctx *ctx)”h]”j¤ )�”}”(hŒ¯int drm_atomic_helper_page_flip(struct drm_crtc *crtc, struct drm_framebuffer *fb, struct drm_pending_vblank_event *event, uint32_t flags, struct drm_modeset_acquire_ctx *ctx)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj\Çh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjXÇh²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mˆubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjkÇh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjXÇh²hh³jjÇh´MˆubjÍ )�”}”(hŒdrm_atomic_helper_page_flip”h]”jÓ )�”}”(hŒdrm_atomic_helper_page_flip”h]”hŒdrm_atomic_helper_page_flip”…”�”}”(hj}Çh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjyÇubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjXÇh²hh³jjÇh´MˆubjÞ)�”}”(hŒ�(struct drm_crtc *crtc, struct drm_framebuffer *fb, struct drm_pending_vblank_event *event, uint32_t flags, struct drm_modeset_acquire_ctx *ctx)”h]”(jä)�”}”(hŒstruct drm_crtc *crtc”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Œdrm_crtc”h]”hŒdrm_crtc”…”�”}”(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%)�”}”jjÇsbŒc.drm_atomic_helper_page_flip”†”asbuh1hhj•Çubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×Çh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj•Çubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjåÇh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj•ÇubjÓ )�”}”(hŒcrtc”h]”hŒcrtc”…”�”}”(hjòÇh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj•Çubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj‘Çubjä)�”}”(hŒstruct drm_framebuffer *fb”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Œdrm_framebuffer”h]”hŒdrm_framebuffer”…”�”}”(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.drm_atomic_helper_page_flip”†”asbuh1hhjÈubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGÈh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÈubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjUÈh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÈubjÓ )�”}”(hŒfb”h]”hŒfb”…”�”}”(hjbÈh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÈubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj‘Çubjä)�”}”(hŒ&struct drm_pending_vblank_event *event”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Œdrm_pending_vblank_event”h]”hŒdrm_pending_vblank_event”…”�”}”(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.drm_atomic_helper_page_flip”†”asbuh1hhjwÈubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·Èh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjwÈubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÅÈh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjwÈubjÓ )�”}”(hŒevent”h]”hŒevent”…”�”}”(hjÒÈh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjwÈubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj‘Çubjä)�”}”(hŒuint32_t flags”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒuint32_t”h]”hŒuint32_t”…”�”}”(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.drm_atomic_helper_page_flip”†”asbuh1hhjçÈubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Éh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjçÈubjÓ )�”}”(hŒflags”h]”hŒflags”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjçÈubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj‘Çubjä)�”}”(hŒ#struct drm_modeset_acquire_ctx *ctx”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj3É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Œdrm_modeset_acquire_ctx”h]”hŒdrm_modeset_acquire_ctx”…”�”}”(hjQÉh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjNÉubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jSÉŒmodname”NŒ classname”Njé jì )�”}”jï ]”jÓÇŒc.drm_atomic_helper_page_flip”†”asbuh1hhj/Éubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjoÉh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj/Éubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj}Éh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj/ÉubjÓ )�”}”(hŒctx”h]”hŒctx”…”�”}”(hjŠÉh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj/Éubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj‘Çubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjXÇh²hh³jjÇh´Mˆubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjTÇh²hh³jjÇh´Mˆubah}”(h]”jOÇah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jjÇh´MˆhjQÇh²hubj )�”}”(hhh]”hÎ)�”}”(hŒexecute a legacy page flip”h]”hŒexecute a legacy page flip”…”�”}”(hj´Éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mˆhj±Éh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjQÇh²hh³jjÇh´Mˆubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jÌÉj$ jÌÉj% ‰j& ‰j' ‰uh1j˜ h²hhjçDh³Nh´Nubj) )�”}”(hXG**Parameters** ``struct drm_crtc *crtc`` DRM CRTC ``struct drm_framebuffer *fb`` DRM framebuffer ``struct drm_pending_vblank_event *event`` optional DRM event to signal upon completion ``uint32_t flags`` flip flags for non-vblank sync'ed updates ``struct drm_modeset_acquire_ctx *ctx`` lock acquisition context **Description** Provides a default :c:type:`drm_crtc_funcs.page_flip ` implementation using the atomic driver interface. See also: drm_atomic_helper_page_flip_target() **Return** Returns 0 on success, negative errno numbers on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjÖÉh]”hŒ Parameters”…”�”}”(hjØÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÔÉubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MŒhjÐÉubjw )�”}”(hhh]”(j| )�”}”(hŒ#``struct drm_crtc *crtc`` DRM CRTC ”h]”(j‚ )�”}”(hŒ``struct drm_crtc *crtc``”h]”jˆ )�”}”(hjõÉh]”hŒstruct drm_crtc *crtc”…”�”}”(hj÷Éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjóÉubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M‰hjïÉubjž )�”}”(hhh]”hÎ)�”}”(hŒDRM CRTC”h]”hŒDRM CRTC”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j Êh´M‰hj Êubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjïÉubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j Êh´M‰hjìÉubj| )�”}”(hŒ/``struct drm_framebuffer *fb`` DRM framebuffer ”h]”(j‚ )�”}”(hŒ``struct drm_framebuffer *fb``”h]”jˆ )�”}”(hj.Êh]”hŒstruct drm_framebuffer *fb”…”�”}”(hj0Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj,Êubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MŠhj(Êubjž )�”}”(hhh]”hÎ)�”}”(hŒDRM framebuffer”h]”hŒDRM framebuffer”…”�”}”(hjGÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jCÊh´MŠhjDÊubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj(Êubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jCÊh´MŠhjìÉubj| )�”}”(hŒX``struct drm_pending_vblank_event *event`` optional DRM event to signal upon completion ”h]”(j‚ )�”}”(hŒ*``struct drm_pending_vblank_event *event``”h]”jˆ )�”}”(hjgÊh]”hŒ&struct drm_pending_vblank_event *event”…”�”}”(hjiÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjeÊubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M‹hjaÊubjž )�”}”(hhh]”hÎ)�”}”(hŒ,optional DRM event to signal upon completion”h]”hŒ,optional DRM event to signal upon completion”…”�”}”(hj€Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j|Êh´M‹hj}Êubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjaÊubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j|Êh´M‹hjìÉubj| )�”}”(hŒ=``uint32_t flags`` flip flags for non-vblank sync'ed updates ”h]”(j‚ )�”}”(hŒ``uint32_t flags``”h]”jˆ )�”}”(hj Êh]”hŒuint32_t flags”…”�”}”(hj¢Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjžÊubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MŒhjšÊubjž )�”}”(hhh]”hÎ)�”}”(hŒ)flip flags for non-vblank sync'ed updates”h]”hŒ+flip flags for non-vblank sync’ed updates”…”�”}”(hj¹Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jµÊh´MŒhj¶Êubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjšÊubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jµÊh´MŒhjìÉubj| )�”}”(hŒA``struct drm_modeset_acquire_ctx *ctx`` lock acquisition context ”h]”(j‚ )�”}”(hŒ'``struct drm_modeset_acquire_ctx *ctx``”h]”jˆ )�”}”(hjÙÊh]”hŒ#struct drm_modeset_acquire_ctx *ctx”…”�”}”(hjÛÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj×Êubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M�hjÓÊubjž )�”}”(hhh]”hÎ)�”}”(hŒlock acquisition context”h]”hŒlock acquisition context”…”�”}”(hjòÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jîÊh´M�hjïÊubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÓÊubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jîÊh´M�hjìÉubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÐÉubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjËh]”hŒ Description”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjËubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M�hjÐÉubhÎ)�”}”(hŒxProvides a default :c:type:`drm_crtc_funcs.page_flip ` implementation using the atomic driver interface.”h]”(hŒProvides a default ”…”�”}”(hj*Ëh²hh³Nh´Nubh)�”}”(hŒ3:c:type:`drm_crtc_funcs.page_flip `”h]”jˆ )�”}”(hj4Ëh]”hŒdrm_crtc_funcs.page_flip”…”�”}”(hj6Ëh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj2Ëubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_crtc_funcs”uh1hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MŽhj*ËubhŒ2 implementation using the atomic driver interface.”…”�”}”(hj*Ëh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jQËh´MŽhjÐÉubhÎ)�”}”(hŒ.See also: drm_atomic_helper_page_flip_target()”h]”hŒ.See also: drm_atomic_helper_page_flip_target()”…”�”}”(hj\Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M’hjÐÉubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjmËh]”hŒReturn”…”�”}”(hjoËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjkËubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M•hjÐÉubhÎ)�”}”(hŒ8Returns 0 on success, negative errno numbers on failure.”h]”hŒ8Returns 0 on success, negative errno numbers on failure.”…”�”}”(hjƒËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M’hjÐÉubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjçDh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ/drm_atomic_helper_page_flip_target (C function)”Œ$c.drm_atomic_helper_page_flip_target”hNt”auh1j† hjçDh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒÈint drm_atomic_helper_page_flip_target (struct drm_crtc *crtc, struct drm_framebuffer *fb, struct drm_pending_vblank_event *event, uint32_t flags, uint32_t target, struct drm_modeset_acquire_ctx *ctx)”h]”j¤ )�”}”(hŒÇint drm_atomic_helper_page_flip_target(struct drm_crtc *crtc, struct drm_framebuffer *fb, struct drm_pending_vblank_event *event, uint32_t flags, uint32_t target, struct drm_modeset_acquire_ctx *ctx)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj²Ëh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj®Ëh²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.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Œ"drm_atomic_helper_page_flip_target”h]”jÓ )�”}”(hŒ"drm_atomic_helper_page_flip_target”h]”hŒ"drm_atomic_helper_page_flip_target”…”�”}”(hjÓËh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÏËubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj®Ëh²hh³jÀËh´M´ubjÞ)�”}”(hŒ¡(struct drm_crtc *crtc, struct drm_framebuffer *fb, struct drm_pending_vblank_event *event, uint32_t flags, uint32_t target, struct drm_modeset_acquire_ctx *ctx)”h]”(jä)�”}”(hŒstruct drm_crtc *crtc”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Œdrm_crtc”h]”hŒdrm_crtc”…”�”}”(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%)�”}”jjÕËsbŒ$c.drm_atomic_helper_page_flip_target”†”asbuh1hhjëËubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-Ìh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjëËubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj;Ìh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjëËubjÓ )�”}”(hŒcrtc”h]”hŒcrtc”…”�”}”(hjHÌh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjëËubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjçËubjä)�”}”(hŒstruct drm_framebuffer *fb”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjaÌh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj]Ìubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnÌh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj]Ìubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_framebuffer”h]”hŒdrm_framebuffer”…”�”}”(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.drm_atomic_helper_page_flip_target”†”asbuh1hhj]Ìubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Ìh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj]Ìubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj«Ìh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj]ÌubjÓ )�”}”(hŒfb”h]”hŒfb”…”�”}”(hj¸Ìh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj]Ìubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjçËubjä)�”}”(hŒ&struct drm_pending_vblank_event *event”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Œdrm_pending_vblank_event”h]”hŒdrm_pending_vblank_event”…”�”}”(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.drm_atomic_helper_page_flip_target”†”asbuh1hhjÍÌubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Íh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÍÌubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÍÌubjÓ )�”}”(hŒevent”h]”hŒevent”…”�”}”(hj(Íh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÍÌubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjçËubjä)�”}”(hŒuint32_t flags”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒuint32_t”h]”hŒuint32_t”…”�”}”(hjDÍh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjAÍubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jFÍŒmodname”NŒ classname”Njé jì )�”}”jï ]”j)ÌŒ$c.drm_atomic_helper_page_flip_target”†”asbuh1hhj=Íubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbÍh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj=ÍubjÓ )�”}”(hŒflags”h]”hŒflags”…”�”}”(hjpÍh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj=Íubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjçËubjä)�”}”(hŒuint32_t target”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒuint32_t”h]”hŒuint32_t”…”�”}”(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.drm_atomic_helper_page_flip_target”†”asbuh1hhj…Íubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªÍh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj…ÍubjÓ )�”}”(hŒtarget”h]”hŒtarget”…”�”}”(hj¸Íh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj…Íubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjçËubjä)�”}”(hŒ#struct drm_modeset_acquire_ctx *ctx”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Œdrm_modeset_acquire_ctx”h]”hŒdrm_modeset_acquire_ctx”…”�”}”(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.drm_atomic_helper_page_flip_target”†”asbuh1hhjÍÍubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Îh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÍÍubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÍÍubjÓ )�”}”(hŒctx”h]”hŒctx”…”�”}”(hj(Îh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÍÍubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjçËubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj®Ëh²hh³jÀËh´M´ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ%do page flip on target vblank period.”h]”hŒ%do page flip on target vblank period.”…”�”}”(hjRÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M´hjOÎ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# jjÎj$ jjÎj% ‰j& ‰j' ‰uh1j˜ h²hhjçDh³Nh´Nubj) )�”}”(hXº**Parameters** ``struct drm_crtc *crtc`` DRM CRTC ``struct drm_framebuffer *fb`` DRM framebuffer ``struct drm_pending_vblank_event *event`` optional DRM event to signal upon completion ``uint32_t flags`` flip flags for non-vblank sync'ed updates ``uint32_t target`` specifying the target vblank period when the flip to take effect ``struct drm_modeset_acquire_ctx *ctx`` lock acquisition context **Description** Provides a default :c:type:`drm_crtc_funcs.page_flip_target ` implementation. Similar to drm_atomic_helper_page_flip() with extra parameter to specify target vblank period to flip. **Return** Returns 0 on success, negative errno numbers on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjtÎh]”hŒ Parameters”…”�”}”(hjvÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjrÎubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M¸hjnÎubjw )�”}”(hhh]”(j| )�”}”(hŒ#``struct drm_crtc *crtc`` DRM CRTC ”h]”(j‚ )�”}”(hŒ``struct drm_crtc *crtc``”h]”jˆ )�”}”(hj“Îh]”hŒstruct drm_crtc *crtc”…”�”}”(hj•Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj‘Îubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mµhj�Îubjž )�”}”(hhh]”hÎ)�”}”(hŒDRM CRTC”h]”hŒDRM CRTC”…”�”}”(hj¬Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¨Îh´Mµhj©Îubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj�Îubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¨Îh´MµhjŠÎubj| )�”}”(hŒ/``struct drm_framebuffer *fb`` DRM framebuffer ”h]”(j‚ )�”}”(hŒ``struct drm_framebuffer *fb``”h]”jˆ )�”}”(hjÌÎh]”hŒstruct drm_framebuffer *fb”…”�”}”(hjÎÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÊÎubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M¶hjÆÎubjž )�”}”(hhh]”hÎ)�”}”(hŒDRM framebuffer”h]”hŒDRM framebuffer”…”�”}”(hjåÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jáÎh´M¶hjâÎubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÆÎubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jáÎh´M¶hjŠÎubj| )�”}”(hŒX``struct drm_pending_vblank_event *event`` optional DRM event to signal upon completion ”h]”(j‚ )�”}”(hŒ*``struct drm_pending_vblank_event *event``”h]”jˆ )�”}”(hjÏh]”hŒ&struct drm_pending_vblank_event *event”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÏubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M·hjÿÎubjž )�”}”(hhh]”hÎ)�”}”(hŒ,optional DRM event to signal upon completion”h]”hŒ,optional DRM event to signal upon completion”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÏh´M·hjÏubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÿÎubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÏh´M·hjŠÎubj| )�”}”(hŒ=``uint32_t flags`` flip flags for non-vblank sync'ed updates ”h]”(j‚ )�”}”(hŒ``uint32_t flags``”h]”jˆ )�”}”(hj>Ïh]”hŒuint32_t flags”…”�”}”(hj@Ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj<Ïubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M¸hj8Ïubjž )�”}”(hhh]”hÎ)�”}”(hŒ)flip flags for non-vblank sync'ed updates”h]”hŒ+flip flags for non-vblank sync’ed updates”…”�”}”(hjWÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jSÏh´M¸hjTÏubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj8Ïubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jSÏh´M¸hjŠÎubj| )�”}”(hŒU``uint32_t target`` specifying the target vblank period when the flip to take effect ”h]”(j‚ )�”}”(hŒ``uint32_t target``”h]”jˆ )�”}”(hjwÏh]”hŒuint32_t target”…”�”}”(hjyÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjuÏubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M¹hjqÏubjž )�”}”(hhh]”hÎ)�”}”(hŒ@specifying the target vblank period when the flip to take effect”h]”hŒ@specifying the target vblank period when the flip to take effect”…”�”}”(hj�Ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jŒÏh´M¹hj�Ïubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjqÏubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jŒÏh´M¹hjŠÎubj| )�”}”(hŒA``struct drm_modeset_acquire_ctx *ctx`` lock acquisition context ”h]”(j‚ )�”}”(hŒ'``struct drm_modeset_acquire_ctx *ctx``”h]”jˆ )�”}”(hj°Ïh]”hŒ#struct drm_modeset_acquire_ctx *ctx”…”�”}”(hj²Ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj®Ïubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MºhjªÏubjž )�”}”(hhh]”hÎ)�”}”(hŒlock acquisition context”h]”hŒlock acquisition context”…”�”}”(hjÉÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÅÏh´MºhjÆÏubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjªÏubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÅÏh´MºhjŠÎubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjnÎubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjëÏh]”hŒ Description”…”�”}”(hjíÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjéÏubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M¼hjnÎubhÎ)�”}”(hŒÄProvides a default :c:type:`drm_crtc_funcs.page_flip_target ` implementation. Similar to drm_atomic_helper_page_flip() with extra parameter to specify target vblank period to flip.”h]”(hŒProvides a default ”…”�”}”(hjÐh²hh³Nh´Nubh)�”}”(hŒ::c:type:`drm_crtc_funcs.page_flip_target `”h]”jˆ )�”}”(hj Ðh]”hŒdrm_crtc_funcs.page_flip_target”…”�”}”(hj Ðh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj Ðubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_crtc_funcs”uh1hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M»hjÐubhŒw implementation. Similar to drm_atomic_helper_page_flip() with extra parameter to specify target vblank period to flip.”…”�”}”(hjÐh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j(Ðh´M»hjnÎubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj5Ðh]”hŒReturn”…”�”}”(hj7Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj3Ðubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´M¿hjnÎubhÎ)�”}”(hŒ8Returns 0 on success, negative errno numbers on failure.”h]”hŒ8Returns 0 on success, negative errno numbers on failure.”…”�”}”(hjKÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MÀhjnÎubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjçDh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ7drm_atomic_helper_bridge_propagate_bus_fmt (C function)”Œ,c.drm_atomic_helper_bridge_propagate_bus_fmt”hNt”auh1j† hjçDh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒìu32 * drm_atomic_helper_bridge_propagate_bus_fmt (struct drm_bridge *bridge, struct drm_bridge_state *bridge_state, struct drm_crtc_state *crtc_state, struct drm_connector_state *conn_state, u32 output_fmt, unsigned int *num_input_fmts)”h]”j¤ )�”}”(hŒêu32 *drm_atomic_helper_bridge_propagate_bus_fmt(struct drm_bridge *bridge, struct drm_bridge_state *bridge_state, struct drm_crtc_state *crtc_state, struct drm_connector_state *conn_state, u32 output_fmt, unsigned int *num_input_fmts)”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu32”h]”hŒu32”…”�”}”(hj}Ðh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjzÐubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jÐŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jŒ*drm_atomic_helper_bridge_propagate_bus_fmt”sbŒ,c.drm_atomic_helper_bridge_propagate_bus_fmt”†”asbuh1hhjvÐh²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mèubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸÐh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjvÐh²hh³jžÐh´Mèubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj­Ðh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjvÐh²hh³jžÐh´MèubjÍ )�”}”(hŒ*drm_atomic_helper_bridge_propagate_bus_fmt”h]”jÓ )�”}”(hj›Ðh]”hŒ*drm_atomic_helper_bridge_propagate_bus_fmt”…”�”}”(hj¾Ðh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjºÐubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjvÐh²hh³jžÐh´MèubjÞ)�”}”(hŒ»(struct drm_bridge *bridge, struct drm_bridge_state *bridge_state, struct drm_crtc_state *crtc_state, struct drm_connector_state *conn_state, u32 output_fmt, unsigned int *num_input_fmts)”h]”(jä)�”}”(hŒstruct drm_bridge *bridge”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Œ drm_bridge”h]”hŒ drm_bridge”…”�”}”(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.drm_atomic_helper_bridge_propagate_bus_fmt”†”asbuh1hhjÕÐubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÕÐubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj#Ñh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÕÐubjÓ )�”}”(hŒbridge”h]”hŒbridge”…”�”}”(hj0Ñh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÕÐubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÑÐubjä)�”}”(hŒ%struct drm_bridge_state *bridge_state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjIÑh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjEÑubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVÑh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjEÑubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_bridge_state”h]”hŒdrm_bridge_state”…”�”}”(hjgÑh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjdÑubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jiÑŒmodname”NŒ classname”Njé jì )�”}”jï ]”j™ÐŒ,c.drm_atomic_helper_bridge_propagate_bus_fmt”†”asbuh1hhjEÑubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…Ñh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjEÑubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj“Ñh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjEÑubjÓ )�”}”(hŒ bridge_state”h]”hŒ bridge_state”…”�”}”(hj Ñh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjEÑubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÑÐubjä)�”}”(hŒ!struct drm_crtc_state *crtc_state”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Œdrm_crtc_state”h]”hŒdrm_crtc_state”…”�”}”(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.drm_atomic_helper_bridge_propagate_bus_fmt”†”asbuh1hhjµÑubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõÑh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjµÑubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjµÑubjÓ )�”}”(hŒ crtc_state”h]”hŒ crtc_state”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjµÑubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÑÐubjä)�”}”(hŒ&struct drm_connector_state *conn_state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj)Òh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj%Òubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6Òh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj%Òubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_connector_state”h]”hŒdrm_connector_state”…”�”}”(hjGÒh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjDÒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jIÒŒmodname”NŒ classname”Njé jì )�”}”jï ]”j™ÐŒ,c.drm_atomic_helper_bridge_propagate_bus_fmt”†”asbuh1hhj%Òubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeÒh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj%Òubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjsÒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj%ÒubjÓ )�”}”(hŒ conn_state”h]”hŒ conn_state”…”�”}”(hj€Òh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj%Òubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÑÐubjä)�”}”(hŒu32 output_fmt”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.drm_atomic_helper_bridge_propagate_bus_fmt”†”asbuh1hhj•Òubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjºÒh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj•ÒubjÓ )�”}”(hŒ output_fmt”h]”hŒ output_fmt”…”�”}”(hjÈÒh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj•Òubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÑÐubjä)�”}”(hŒunsigned int *num_input_fmts”h]”(j¦)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(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Œint”h]”hŒint”…”�”}”(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ÝÒubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÝÒubjÓ )�”}”(hŒnum_input_fmts”h]”hŒnum_input_fmts”…”�”}”(hj&Óh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÝÒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÑÐubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjvÐh²hh³jžÐh´Mèubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjrÐh²hh³jžÐh´Mèubah}”(h]”jmÐah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jžÐh´MèhjoÐh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ4Propagate output format to the input end of a bridge”h]”hŒ4Propagate output format to the input end of a bridge”…”�”}”(hjPÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MèhjMÓh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjoÐh²hh³jžÐh´Mèubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jhÓj$ jhÓj% ‰j& ‰j' ‰uh1j˜ h²hhjçDh³Nh´Nubj) )�”}”(hX**Parameters** ``struct drm_bridge *bridge`` bridge control structure ``struct drm_bridge_state *bridge_state`` new bridge state ``struct drm_crtc_state *crtc_state`` new CRTC state ``struct drm_connector_state *conn_state`` new connector state ``u32 output_fmt`` tested output bus format ``unsigned int *num_input_fmts`` will contain the size of the returned array **Description** This helper is a pluggable implementation of the :c:type:`drm_bridge_funcs.atomic_get_input_bus_fmts ` operation for bridges that don't modify the bus configuration between their input and their output. It returns an array of input formats with a single element set to **output_fmt**. **Return** a valid format array of size **num_input_fmts**, or NULL if the allocation failed”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjrÓh]”hŒ Parameters”…”�”}”(hjtÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjpÓubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MìhjlÓubjw )�”}”(hhh]”(j| )�”}”(hŒ7``struct drm_bridge *bridge`` bridge control structure ”h]”(j‚ )�”}”(hŒ``struct drm_bridge *bridge``”h]”jˆ )�”}”(hj‘Óh]”hŒstruct drm_bridge *bridge”…”�”}”(hj“Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj�Óubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mêhj‹Óubjž )�”}”(hhh]”hÎ)�”}”(hŒbridge control structure”h]”hŒbridge control structure”…”�”}”(hjªÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¦Óh´Mêhj§Óubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj‹Óubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¦Óh´MêhjˆÓubj| )�”}”(hŒ;``struct drm_bridge_state *bridge_state`` new bridge state ”h]”(j‚ )�”}”(hŒ)``struct drm_bridge_state *bridge_state``”h]”jˆ )�”}”(hjÊÓh]”hŒ%struct drm_bridge_state *bridge_state”…”�”}”(hjÌÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÈÓubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MëhjÄÓubjž )�”}”(hhh]”hÎ)�”}”(hŒnew bridge state”h]”hŒnew bridge state”…”�”}”(hjãÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jßÓh´MëhjàÓubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÄÓubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jßÓh´MëhjˆÓubj| )�”}”(hŒ5``struct drm_crtc_state *crtc_state`` new CRTC state ”h]”(j‚ )�”}”(hŒ%``struct drm_crtc_state *crtc_state``”h]”jˆ )�”}”(hjÔh]”hŒ!struct drm_crtc_state *crtc_state”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÔubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”•th´MìhjýÓubjž )�”}”(hhh]”hÎ)�”}”(hŒnew CRTC state”h]”hŒnew CRTC state”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÔh´MìhjÔubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjýÓubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÔh´MìhjˆÓubj| )�”}”(hŒ?``struct drm_connector_state *conn_state`` new connector state ”h]”(j‚ )�”}”(hŒ*``struct drm_connector_state *conn_state``”h]”jˆ )�”}”(hj<Ôh]”hŒ&struct drm_connector_state *conn_state”…”�”}”(hj>Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj:Ôubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Míhj6Ôubjž )�”}”(hhh]”hÎ)�”}”(hŒnew connector state”h]”hŒnew connector state”…”�”}”(hjUÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jQÔh´MíhjRÔubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj6Ôubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jQÔh´MíhjˆÓubj| )�”}”(hŒ,``u32 output_fmt`` tested output bus format ”h]”(j‚ )�”}”(hŒ``u32 output_fmt``”h]”jˆ )�”}”(hjuÔh]”hŒu32 output_fmt”…”�”}”(hjwÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjsÔubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MîhjoÔubjž )�”}”(hhh]”hÎ)�”}”(hŒtested output bus format”h]”hŒtested output bus format”…”�”}”(hjŽÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jŠÔh´Mîhj‹Ôubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjoÔubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jŠÔh´MîhjˆÓubj| )�”}”(hŒM``unsigned int *num_input_fmts`` will contain the size of the returned array ”h]”(j‚ )�”}”(hŒ ``unsigned int *num_input_fmts``”h]”jˆ )�”}”(hj®Ôh]”hŒunsigned int *num_input_fmts”…”�”}”(hj°Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¬Ôubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mïhj¨Ôubjž )�”}”(hhh]”hÎ)�”}”(hŒ+will contain the size of the returned array”h]”hŒ+will contain the size of the returned array”…”�”}”(hjÇÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÃÔh´MïhjÄÔubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¨Ôubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÃÔh´MïhjˆÓubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjlÓubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjéÔh]”hŒ Description”…”�”}”(hjëÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjçÔubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MñhjlÓubhÎ)�”}”(hX.This helper is a pluggable implementation of the :c:type:`drm_bridge_funcs.atomic_get_input_bus_fmts ` operation for bridges that don't modify the bus configuration between their input and their output. It returns an array of input formats with a single element set to **output_fmt**.”h]”(hŒ1This helper is a pluggable implementation of the ”…”�”}”(hjÿÔh²hh³Nh´Nubh)�”}”(hŒG:c:type:`drm_bridge_funcs.atomic_get_input_bus_fmts `”h]”jˆ )�”}”(hj Õh]”hŒ*drm_bridge_funcs.atomic_get_input_bus_fmts”…”�”}”(hj Õh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÕubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MðhjÿÔubhŒ© operation for bridges that don’t modify the bus configuration between their input and their output. It returns an array of input formats with a single element set to ”…”�”}”(hjÿÔh²hh³Nh´Nubj3 )�”}”(hŒ**output_fmt**”h]”hŒ output_fmt”…”�”}”(hj+Õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÿÔubhŒ.”…”�”}”(hjÿÔh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j&Õh´MðhjlÓubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjEÕh]”hŒReturn”…”�”}”(hjGÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjCÕubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MõhjlÓubhÎ)�”}”(hŒQa valid format array of size **num_input_fmts**, or NULL if the allocation failed”h]”(hŒa valid format array of size ”…”�”}”(hj[Õh²hh³Nh´Nubj3 )�”}”(hŒ**num_input_fmts**”h]”hŒnum_input_fmts”…”�”}”(hjcÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj[ÕubhŒ", or NULL if the allocation failed”…”�”}”(hj[Õh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MöhjlÓubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjçDh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ>drm_atomic_helper_bridge_get_hdmi_output_bus_fmts (C function)”Œ3c.drm_atomic_helper_bridge_get_hdmi_output_bus_fmts”hNt”auh1j† hjçDh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒäu32 * drm_atomic_helper_bridge_get_hdmi_output_bus_fmts (struct drm_bridge *bridge, struct drm_bridge_state *bridge_state, struct drm_crtc_state *crtc_state, struct drm_connector_state *conn_state, unsigned int *num_output_fmts)”h]”j¤ )�”}”(hŒâu32 *drm_atomic_helper_bridge_get_hdmi_output_bus_fmts(struct drm_bridge *bridge, struct drm_bridge_state *bridge_state, struct drm_crtc_state *crtc_state, struct drm_connector_state *conn_state, unsigned int *num_output_fmts)”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%)�”}”jŒ1drm_atomic_helper_bridge_get_hdmi_output_bus_fmts”sbŒ3c.drm_atomic_helper_bridge_get_hdmi_output_bus_fmts”†”asbuh1hhj˜Õh²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁÕh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj˜Õh²hh³jÀÕh´Mubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÏÕh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj˜Õh²hh³jÀÕh´MubjÍ )�”}”(hŒ1drm_atomic_helper_bridge_get_hdmi_output_bus_fmts”h]”jÓ )�”}”(hj½Õh]”hŒ1drm_atomic_helper_bridge_get_hdmi_output_bus_fmts”…”�”}”(hjàÕh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÜÕubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj˜Õh²hh³jÀÕh´MubjÞ)�”}”(hŒ¬(struct drm_bridge *bridge, struct drm_bridge_state *bridge_state, struct drm_crtc_state *crtc_state, struct drm_connector_state *conn_state, unsigned int *num_output_fmts)”h]”(jä)�”}”(hŒstruct drm_bridge *bridge”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Œ drm_bridge”h]”hŒ drm_bridge”…”�”}”(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»ÕŒ3c.drm_atomic_helper_bridge_get_hdmi_output_bus_fmts”†”asbuh1hhj÷Õubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7Öh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj÷Õubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjEÖh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj÷ÕubjÓ )�”}”(hŒbridge”h]”hŒbridge”…”�”}”(hjRÖh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj÷Õubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjóÕubjä)�”}”(hŒ%struct drm_bridge_state *bridge_state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjkÖh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjgÖubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxÖh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjgÖubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_bridge_state”h]”hŒdrm_bridge_state”…”�”}”(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»ÕŒ3c.drm_atomic_helper_bridge_get_hdmi_output_bus_fmts”†”asbuh1hhjgÖubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§Öh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjgÖubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjµÖh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjgÖubjÓ )�”}”(hŒ bridge_state”h]”hŒ bridge_state”…”�”}”(hjÂÖh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjgÖubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjóÕubjä)�”}”(hŒ!struct drm_crtc_state *crtc_state”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Œdrm_crtc_state”h]”hŒdrm_crtc_state”…”�”}”(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»ÕŒ3c.drm_atomic_helper_bridge_get_hdmi_output_bus_fmts”†”asbuh1hhj×Öubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj×Öubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj%×h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj×ÖubjÓ )�”}”(hŒ crtc_state”h]”hŒ crtc_state”…”�”}”(hj2×h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj×Öubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjóÕubjä)�”}”(hŒ&struct drm_connector_state *conn_state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjK×h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjG×ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjX×h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjG×ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_connector_state”h]”hŒdrm_connector_state”…”�”}”(hji×h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjf×ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jk׌modname”NŒ classname”Njé jì )�”}”jï ]”j»ÕŒ3c.drm_atomic_helper_bridge_get_hdmi_output_bus_fmts”†”asbuh1hhjG×ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡×h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjG×ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj•×h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjG×ubjÓ )�”}”(hŒ conn_state”h]”hŒ conn_state”…”�”}”(hj¢×h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjG×ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjóÕubjä)�”}”(hŒunsigned int *num_output_fmts”h]”(j¦)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(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Œint”h]”hŒint”…”�”}”(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·×ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjó×h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj·×ubjÓ )�”}”(hŒnum_output_fmts”h]”hŒnum_output_fmts”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj·×ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjóÕubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj˜Õh²hh³jÀÕh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj”Õh²hh³jÀÕh´Mubah}”(h]”j�Õah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jÀÕh´Mhj‘Õh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ7helper implementing atomic_get_output_bus_fmts for HDMI”h]”hŒ7helper implementing atomic_get_output_bus_fmts for HDMI”…”�”}”(hj*Øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mhj'Øh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj‘Õh²hh³jÀÕh´Mubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jBØj$ jBØj% ‰j& ‰j' ‰uh1j˜ h²hhjçDh³Nh´Nubj) )�”}”(hXw**Parameters** ``struct drm_bridge *bridge`` pointer to :c:type:`struct drm_bridge ` ``struct drm_bridge_state *bridge_state`` pointer to the current bridge state ``struct drm_crtc_state *crtc_state`` pointer to the current CRTC state ``struct drm_connector_state *conn_state`` pointer to the current connector state ``unsigned int *num_output_fmts`` pointer to where the number of entries in the returned array will be stored. Set to 0 if unsuccessful. **Description** Common implementation for the :c:type:`drm_bridge_funcs.atomic_get_output_bus_fmts ` operation that's applicable to HDMI connectors. **Return** a newly allocated array of u32 values of length \***num_output_fmts**, representing all the MEDIA_BUS_FMTS\_ for the current connector state's chosen HDMI output bits per compoennt, or ``NULL`` if it fails to allocate one.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjLØh]”hŒ Parameters”…”�”}”(hjNØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjJØubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MhjFØubjw )�”}”(hhh]”(j| )�”}”(hŒR``struct drm_bridge *bridge`` pointer to :c:type:`struct drm_bridge ` ”h]”(j‚ )�”}”(hŒ``struct drm_bridge *bridge``”h]”jˆ )�”}”(hjkØh]”hŒstruct drm_bridge *bridge”…”�”}”(hjmØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjiØubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MhjeØubjž )�”}”(hhh]”hÎ)�”}”(hŒ3pointer to :c:type:`struct drm_bridge `”h]”(hŒ pointer to ”…”�”}”(hj„Øh²hh³Nh´Nubh)�”}”(hŒ(:c:type:`struct drm_bridge `”h]”jˆ )�”}”(hjŽØh]”hŒstruct drm_bridge”…”�”}”(hj�Øh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjŒØubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_bridge”uh1hh³j€Øh´Mhj„Øubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j€Øh´Mhj�Øubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjeØubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j€Øh´MhjbØubj| )�”}”(hŒN``struct drm_bridge_state *bridge_state`` pointer to the current bridge state ”h]”(j‚ )�”}”(hŒ)``struct drm_bridge_state *bridge_state``”h]”jˆ )�”}”(hjÃØh]”hŒ%struct drm_bridge_state *bridge_state”…”�”}”(hjÅØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÁØubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mhj½Øubjž )�”}”(hhh]”hÎ)�”}”(hŒ#pointer to the current bridge state”h]”hŒ#pointer to the current bridge state”…”�”}”(hjÜØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jØØh´MhjÙØubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj½Øubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jØØh´MhjbØubj| )�”}”(hŒH``struct drm_crtc_state *crtc_state`` pointer to the current CRTC state ”h]”(j‚ )�”}”(hŒ%``struct drm_crtc_state *crtc_state``”h]”jˆ )�”}”(hjüØh]”hŒ!struct drm_crtc_state *crtc_state”…”�”}”(hjþØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjúØubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MhjöØubjž )�”}”(hhh]”hÎ)�”}”(hŒ!pointer to the current CRTC state”h]”hŒ!pointer to the current CRTC state”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÙh´MhjÙubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjöØubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÙh´MhjbØubj| )�”}”(hŒR``struct drm_connector_state *conn_state`` pointer to the current connector state ”h]”(j‚ )�”}”(hŒ*``struct drm_connector_state *conn_state``”h]”jˆ )�”}”(hj5Ùh]”hŒ&struct drm_connector_state *conn_state”…”�”}”(hj7Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj3Ùubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mhj/Ùubjž )�”}”(hhh]”hÎ)�”}”(hŒ&pointer to the current connector state”h]”hŒ&pointer to the current connector state”…”�”}”(hjNÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jJÙh´MhjKÙubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj/Ùubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jJÙh´MhjbØubj| )�”}”(hŒ‰``unsigned int *num_output_fmts`` pointer to where the number of entries in the returned array will be stored. Set to 0 if unsuccessful. ”h]”(j‚ )�”}”(hŒ!``unsigned int *num_output_fmts``”h]”jˆ )�”}”(hjnÙh]”hŒunsigned int *num_output_fmts”…”�”}”(hjpÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjlÙubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MhjhÙubjž )�”}”(hhh]”hÎ)�”}”(hŒfpointer to where the number of entries in the returned array will be stored. Set to 0 if unsuccessful.”h]”hŒfpointer to where the number of entries in the returned array will be stored. Set to 0 if unsuccessful.”…”�”}”(hj‡Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´Mhj„Ùubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjhÙubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jƒÙh´MhjbØubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjFØubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjªÙh]”hŒ Description”…”�”}”(hj¬Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¨Ùubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MhjFØubhÎ)�”}”(hŒ–Common implementation for the :c:type:`drm_bridge_funcs.atomic_get_output_bus_fmts ` operation that's applicable to HDMI connectors.”h]”(hŒCommon implementation for the ”…”�”}”(hjÀÙh²hh³Nh´Nubh)�”}”(hŒH:c:type:`drm_bridge_funcs.atomic_get_output_bus_fmts `”h]”jˆ )�”}”(hjÊÙh]”hŒ+drm_bridge_funcs.atomic_get_output_bus_fmts”…”�”}”(hjÌÙh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÈÙubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MhjÀÙubhŒ2 operation that’s applicable to HDMI connectors.”…”�”}”(hjÀÙh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jçÙh´MhjFØubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjôÙh]”hŒReturn”…”�”}”(hjöÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjòÙubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MhjFØubhÎ)�”}”(hŒÞa newly allocated array of u32 values of length \***num_output_fmts**, representing all the MEDIA_BUS_FMTS\_ for the current connector state's chosen HDMI output bits per compoennt, or ``NULL`` if it fails to allocate one.”h]”(hŒ»a newly allocated array of u32 values of length ***num_output_fmts**, representing all the MEDIA_BUS_FMTS_ for the current connector state’s chosen HDMI output bits per compoennt, or ”…”�”}”(hj Úh²hh³Nh´Nubjˆ )�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj ÚubhŒ if it fails to allocate one.”…”�”}”(hj Úh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:70: ./drivers/gpu/drm/drm_atomic_helper.c”h´MhjFØubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjçDh²hh³Nh´Nubeh}”(h]”j!ah ]”h"]”Œhelper functions reference”ah$]”h&]”uh1hµhj“Bh²hh³hÌh´KAubh¶)�”}”(hhh]”(h»)�”}”(hŒ%Atomic State Reset and Initialization”h]”hŒ%Atomic State Reset and Initialization”…”�”}”(hj<Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÊj=uh1hºhj9Úh²hh³hÌh´KJubhÎ)�”}”(hXsBoth the drm core and the atomic helpers assume that there is always the full and correct atomic software state for all connectors, CRTCs and planes available. Which is a bit a problem on driver load and also after system suspend. One way to solve this is to have a hardware state read-out infrastructure which reconstructs the full software state (e.g. the i915 driver).”h]”hXsBoth the drm core and the atomic helpers assume that there is always the full and correct atomic software state for all connectors, CRTCs and planes available. Which is a bit a problem on driver load and also after system suspend. One way to solve this is to have a hardware state read-out infrastructure which reconstructs the full software state (e.g. the i915 driver).”…”�”}”(hjJÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:76: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´K-hj9Úh²hubhÎ)�”}”(hŒáThe simpler solution is to just reset the software state to everything off, which is easiest to do by calling drm_mode_config_reset(). To facilitate this the atomic helpers provide default reset implementations for all hooks.”h]”hŒáThe simpler solution is to just reset the software state to everything off, which is easiest to do by calling drm_mode_config_reset(). To facilitate this the atomic helpers provide default reset implementations for all hooks.”…”�”}”(hjYÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:76: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´K4hj9Úh²hubhÎ)�”}”(hXHOn the upside the precise state tracking of atomic simplifies system suspend and resume a lot. For drivers using drm_mode_config_reset() a complete recipe is implemented in drm_atomic_helper_suspend() and drm_atomic_helper_resume(). For other drivers the building blocks are split out, see the documentation for these functions.”h]”hXHOn the upside the precise state tracking of atomic simplifies system suspend and resume a lot. For drivers using drm_mode_config_reset() a complete recipe is implemented in drm_atomic_helper_suspend() and drm_atomic_helper_resume(). For other drivers the building blocks are split out, see the documentation for these functions.”…”�”}”(hjhÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:76: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´K8hj9Úh²hubeh}”(h]”jCah ]”h"]”Œ%atomic state reset and initialization”ah$]”h&]”uh1hµhj“Bh²hh³hÌh´KJubh¶)�”}”(hhh]”(h»)�”}”(hŒAtomic State Helper Reference”h]”hŒAtomic State Helper Reference”…”�”}”(hj�Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÊj_uh1hºhj~Úh²hh³hÌh´KPubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ0__drm_atomic_helper_crtc_state_init (C function)”Œ%c.__drm_atomic_helper_crtc_state_init”hNt”auh1j† hj~Úh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒcvoid __drm_atomic_helper_crtc_state_init (struct drm_crtc_state *crtc_state, struct drm_crtc *crtc)”h]”j¤ )�”}”(hŒbvoid __drm_atomic_helper_crtc_state_init(struct drm_crtc_state *crtc_state, struct drm_crtc *crtc)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¨Úh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj¤Úh²hh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´KBubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·Úh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¤Úh²hh³j¶Úh´KBubjÍ )�”}”(hŒ#__drm_atomic_helper_crtc_state_init”h]”jÓ )�”}”(hŒ#__drm_atomic_helper_crtc_state_init”h]”hŒ#__drm_atomic_helper_crtc_state_init”…”�”}”(hjÉÚh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÅÚubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj¤Úh²hh³j¶Úh´KBubjÞ)�”}”(hŒ:(struct drm_crtc_state *crtc_state, struct drm_crtc *crtc)”h]”(jä)�”}”(hŒ!struct drm_crtc_state *crtc_state”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Œdrm_crtc_state”h]”hŒdrm_crtc_state”…”�”}”(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%)�”}”jjËÚsbŒ%c.__drm_atomic_helper_crtc_state_init”†”asbuh1hhjáÚubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#Ûh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjáÚubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj1Ûh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjáÚubjÓ )�”}”(hŒ crtc_state”h]”hŒ crtc_state”…”�”}”(hj>Ûh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjáÚubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÝÚubjä)�”}”(hŒstruct drm_crtc *crtc”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjWÛh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjSÛubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdÛh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjSÛubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_crtc”h]”hŒdrm_crtc”…”�”}”(hjuÛh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjrÛubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jwÛŒmodname”NŒ classname”Njé jì )�”}”jï ]”jÛŒ%c.__drm_atomic_helper_crtc_state_init”†”asbuh1hhjSÛubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“Ûh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjSÛubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj¡Ûh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjSÛubjÓ )�”}”(hŒcrtc”h]”hŒcrtc”…”�”}”(hj®Ûh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjSÛubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÝÚubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj¤Úh²hh³j¶Úh´KBubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj Úh²hh³j¶Úh´KBubah}”(h]”j›Úah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j¶Úh´KBhj�Úh²hubj )�”}”(hhh]”hÎ)�”}”(hŒInitialize the CRTC state”h]”hŒInitialize the CRTC state”…”�”}”(hjØÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´KBhjÕÛh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj�Úh²hh³j¶Úh´KBubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jðÛj$ jðÛj% ‰j& ‰j' ‰uh1j˜ h²hhj~Úh³Nh´Nubj) )�”}”(hX%**Parameters** ``struct drm_crtc_state *crtc_state`` atomic CRTC state, must not be NULL ``struct drm_crtc *crtc`` CRTC object, must not be NULL **Description** Initializes the newly allocated **crtc_state** with default values. This is useful for drivers that subclass the CRTC state.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjúÛh]”hŒ Parameters”…”�”}”(hjüÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjøÛubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´KFhjôÛubjw )�”}”(hhh]”(j| )�”}”(hŒJ``struct drm_crtc_state *crtc_state`` atomic CRTC state, must not be NULL ”h]”(j‚ )�”}”(hŒ%``struct drm_crtc_state *crtc_state``”h]”jˆ )�”}”(hjÜh]”hŒ!struct drm_crtc_state *crtc_state”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÜubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´KChjÜubjž )�”}”(hhh]”hÎ)�”}”(hŒ#atomic CRTC state, must not be NULL”h]”hŒ#atomic CRTC state, must not be NULL”…”�”}”(hj2Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j.Üh´KChj/Üubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÜubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j.Üh´KChjÜubj| )�”}”(hŒ8``struct drm_crtc *crtc`` CRTC object, must not be NULL ”h]”(j‚ )�”}”(hŒ``struct drm_crtc *crtc``”h]”jˆ )�”}”(hjRÜh]”hŒstruct drm_crtc *crtc”…”�”}”(hjTÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjPÜubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´KDhjLÜubjž )�”}”(hhh]”hÎ)�”}”(hŒCRTC object, must not be NULL”h]”hŒCRTC object, must not be NULL”…”�”}”(hjkÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jgÜh´KDhjhÜubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjLÜubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jgÜh´KDhjÜubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjôÛubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj�Üh]”hŒ Description”…”�”}”(hj�Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj‹Üubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´KFhjôÛubhÎ)�”}”(hŒ|Initializes the newly allocated **crtc_state** with default values. This is useful for drivers that subclass the CRTC state.”h]”(hŒ Initializes the newly allocated ”…”�”}”(hj£Üh²hh³Nh´Nubj3 )�”}”(hŒ**crtc_state**”h]”hŒ crtc_state”…”�”}”(hj«Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj£ÜubhŒN with default values. This is useful for drivers that subclass the CRTC state.”…”�”}”(hj£Üh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´KEhjôÛubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj~Úh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ+__drm_atomic_helper_crtc_reset (C function)”Œ c.__drm_atomic_helper_crtc_reset”hNt”auh1j† hj~Úh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ^void __drm_atomic_helper_crtc_reset (struct drm_crtc *crtc, struct drm_crtc_state *crtc_state)”h]”j¤ )�”}”(hŒ]void __drm_atomic_helper_crtc_reset(struct drm_crtc *crtc, struct drm_crtc_state *crtc_state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjäÜh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjàÜh²hh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´KSubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjóÜh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjàÜh²hh³jòÜh´KSubjÍ )�”}”(hŒ__drm_atomic_helper_crtc_reset”h]”jÓ )�”}”(hŒ__drm_atomic_helper_crtc_reset”h]”hŒ__drm_atomic_helper_crtc_reset”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÝubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjàÜh²hh³jòÜh´KSubjÞ)�”}”(hŒ:(struct drm_crtc *crtc, struct drm_crtc_state *crtc_state)”h]”(jä)�”}”(hŒstruct drm_crtc *crtc”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Œdrm_crtc”h]”hŒdrm_crtc”…”�”}”(hj?Ýh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj<Ýubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jAÝŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjÝsbŒ c.__drm_atomic_helper_crtc_reset”†”asbuh1hhjÝubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_Ýh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÝubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjmÝh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÝubjÓ )�”}”(hŒcrtc”h]”hŒcrtc”…”�”}”(hjzÝh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÝubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÝubjä)�”}”(hŒ!struct drm_crtc_state *crtc_state”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Œdrm_crtc_state”h]”hŒdrm_crtc_state”…”�”}”(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.__drm_atomic_helper_crtc_reset”†”asbuh1hhj�Ýubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏÝh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj�Ýubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÝÝh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�ÝubjÓ )�”}”(hŒ crtc_state”h]”hŒ crtc_state”…”�”}”(hjêÝh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj�Ýubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÝubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjàÜh²hh³jòÜh´KSubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjÜÜh²hh³jòÜh´KSubah}”(h]”j×Üah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jòÜh´KShjÙÜh²hubj )�”}”(hhh]”hÎ)�”}”(hŒreset state on CRTC”h]”hŒreset state on CRTC”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´KShjÞh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÙÜh²hh³jòÜh´KSubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j,Þj$ j,Þj% ‰j& ‰j' ‰uh1j˜ h²hhj~Úh³Nh´Nubj) )�”}”(hXº**Parameters** ``struct drm_crtc *crtc`` drm CRTC ``struct drm_crtc_state *crtc_state`` CRTC state to assign **Description** Initializes the newly allocated **crtc_state** and assigns it to the :c:type:`drm_crtc->state ` pointer of **crtc**, usually required when initializing the drivers or when called from the :c:type:`drm_crtc_funcs.reset ` hook. This is useful for drivers that subclass the CRTC state.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj6Þh]”hŒ Parameters”…”�”}”(hj8Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj4Þubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´KWhj0Þubjw )�”}”(hhh]”(j| )�”}”(hŒ#``struct drm_crtc *crtc`` drm CRTC ”h]”(j‚ )�”}”(hŒ``struct drm_crtc *crtc``”h]”jˆ )�”}”(hjUÞh]”hŒstruct drm_crtc *crtc”…”�”}”(hjWÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjSÞubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´KThjOÞubjž )�”}”(hhh]”hÎ)�”}”(hŒdrm CRTC”h]”hŒdrm CRTC”…”�”}”(hjnÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jjÞh´KThjkÞubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjOÞubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jjÞh´KThjLÞubj| )�”}”(hŒ;``struct drm_crtc_state *crtc_state`` CRTC state to assign ”h]”(j‚ )�”}”(hŒ%``struct drm_crtc_state *crtc_state``”h]”jˆ )�”}”(hjŽÞh]”hŒ!struct drm_crtc_state *crtc_state”…”�”}”(hj�Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjŒÞubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´KUhjˆÞubjž )�”}”(hhh]”hÎ)�”}”(hŒCRTC state to assign”h]”hŒCRTC state to assign”…”�”}”(hj§Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j£Þh´KUhj¤Þubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjˆÞubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j£Þh´KUhjLÞubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj0ÞubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjÉÞh]”hŒ Description”…”�”}”(hjËÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÇÞubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´KWhj0ÞubhÎ)�”}”(hŒûInitializes the newly allocated **crtc_state** and assigns it to the :c:type:`drm_crtc->state ` pointer of **crtc**, usually required when initializing the drivers or when called from the :c:type:`drm_crtc_funcs.reset ` hook.”h]”(hŒ Initializes the newly allocated ”…”�”}”(hjßÞh²hh³Nh´Nubj3 )�”}”(hŒ**crtc_state**”h]”hŒ crtc_state”…”�”}”(hjçÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjßÞubhŒ and assigns it to the ”…”�”}”(hjßÞh²hh³Nh´Nubh)�”}”(hŒ$:c:type:`drm_crtc->state `”h]”jˆ )�”}”(hjûÞh]”hŒdrm_crtc->state”…”�”}”(hjýÞh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjùÞubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_crtc”uh1hh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´KVhjßÞubhŒ pointer of ”…”�”}”(hjßÞh²hh³Nh´Nubj3 )�”}”(hŒ**crtc**”h]”hŒcrtc”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjßÞubhŒI, usually required when initializing the drivers or when called from the ”…”�”}”(hjßÞh²hh³Nh´Nubh)�”}”(hŒ/:c:type:`drm_crtc_funcs.reset `”h]”jˆ )�”}”(hj1ßh]”hŒdrm_crtc_funcs.reset”…”�”}”(hj3ßh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj/ßubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_crtc_funcs”uh1hh³jßh´KVhjßÞubhŒ hook.”…”�”}”(hjßÞh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jßh´KVhj0ÞubhÎ)�”}”(hŒ8This is useful for drivers that subclass the CRTC state.”h]”hŒ8This is useful for drivers that subclass the CRTC state.”…”�”}”(hjXßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´K[hj0Þubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj~Úh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ)drm_atomic_helper_crtc_reset (C function)”Œc.drm_atomic_helper_crtc_reset”hNt”auh1j† hj~Úh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ9void drm_atomic_helper_crtc_reset (struct drm_crtc *crtc)”h]”j¤ )�”}”(hŒ8void drm_atomic_helper_crtc_reset(struct drm_crtc *crtc)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj‡ßh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjƒßh²hh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´Kmubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–ßh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjƒßh²hh³j•ßh´KmubjÍ )�”}”(hŒdrm_atomic_helper_crtc_reset”h]”jÓ )�”}”(hŒdrm_atomic_helper_crtc_reset”h]”hŒdrm_atomic_helper_crtc_reset”…”�”}”(hj¨ßh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¤ßubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjƒßh²hh³j•ßh´KmubjÞ)�”}”(hŒ(struct drm_crtc *crtc)”h]”jä)�”}”(hŒstruct drm_crtc *crtc”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Œdrm_crtc”h]”hŒdrm_crtc”…”�”}”(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%)�”}”jjªßsbŒc.drm_atomic_helper_crtc_reset”†”asbuh1hhjÀßubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÀßubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÀßubjÓ )�”}”(hŒcrtc”h]”hŒcrtc”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÀßubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¼ßubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjƒßh²hh³j•ßh´Kmubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjßh²hh³j•ßh´Kmubah}”(h]”jzßah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j•ßh´Kmhj|ßh²hubj )�”}”(hhh]”hÎ)�”}”(hŒFdefault :c:type:`drm_crtc_funcs.reset ` hook for CRTCs”h]”(hŒdefault ”…”�”}”(hjGàh²hh³Nh´Nubh)�”}”(hŒ/:c:type:`drm_crtc_funcs.reset `”h]”jˆ )�”}”(hjQàh]”hŒdrm_crtc_funcs.reset”…”�”}”(hjSàh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjOàubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jì )�”}”jï ]”jþߌc.drm_atomic_helper_crtc_reset”†”asbjñ Œdrm_crtc_funcs”uh1hh³j¶Úh´KBhjGàubhŒ hook for CRTCs”…”�”}”(hjGàh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´KmhjDàh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj|ßh²hh³j•ßh´Kmubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j‡àj$ j‡àj% ‰j& ‰j' ‰uh1j˜ h²hhj~Úh³Nh´Nubj) )�”}”(hŒá**Parameters** ``struct drm_crtc *crtc`` drm CRTC **Description** Resets the atomic state for **crtc** by freeing the state pointer (which might be NULL, e.g. at driver load time) and allocating a new empty state object.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj‘àh]”hŒ Parameters”…”�”}”(hj“àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj�àubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´Kqhj‹àubjw )�”}”(hhh]”j| )�”}”(hŒ#``struct drm_crtc *crtc`` drm CRTC ”h]”(j‚ )�”}”(hŒ``struct drm_crtc *crtc``”h]”jˆ )�”}”(hj°àh]”hŒstruct drm_crtc *crtc”…”�”}”(hj²àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj®àubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´Knhjªàubjž )�”}”(hhh]”hÎ)�”}”(hŒdrm CRTC”h]”hŒdrm CRTC”…”�”}”(hjÉàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÅàh´KnhjÆàubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjªàubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÅàh´Knhj§àubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj‹àubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjëàh]”hŒ Description”…”�”}”(hjíàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjéàubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´Kphj‹àubhÎ)�”}”(hŒšResets the atomic state for **crtc** by freeing the state pointer (which might be NULL, e.g. at driver load time) and allocating a new empty state object.”h]”(hŒResets the atomic state for ”…”�”}”(hjáh²hh³Nh´Nubj3 )�”}”(hŒ**crtc**”h]”hŒcrtc”…”�”}”(hj áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjáubhŒv by freeing the state pointer (which might be NULL, e.g. at driver load time) and allocating a new empty state object.”…”�”}”(hjáh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´Kohj‹àubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj~Úh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ0drm_atomic_helper_crtc_create_state (C function)”Œ%c.drm_atomic_helper_crtc_create_state”hNt”auh1j† hj~Úh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒSstruct drm_crtc_state * drm_atomic_helper_crtc_create_state (struct drm_crtc *crtc)”h]”j¤ )�”}”(hŒQstruct drm_crtc_state *drm_atomic_helper_crtc_create_state(struct drm_crtc *crtc)”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjBáh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj>áh²hh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´K€ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPáh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj>áh²hh³jOáh´K€ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_crtc_state”h]”hŒdrm_crtc_state”…”�”}”(hjaáh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj^áubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jcáŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jŒ#drm_atomic_helper_crtc_create_state”sbŒ%c.drm_atomic_helper_crtc_create_state”†”asbuh1hhj>áh²hh³jOáh´K€ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚áh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj>áh²hh³jOáh´K€ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj�áh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj>áh²hh³jOáh´K€ubjÍ )�”}”(hŒ#drm_atomic_helper_crtc_create_state”h]”jÓ )�”}”(hjáh]”hŒ#drm_atomic_helper_crtc_create_state”…”�”}”(hj¡áh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj�áubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj>áh²hh³jOáh´K€ubjÞ)�”}”(hŒ(struct drm_crtc *crtc)”h]”jä)�”}”(hŒstruct drm_crtc *crtc”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Œdrm_crtc”h]”hŒdrm_crtc”…”�”}”(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.drm_atomic_helper_crtc_create_state”†”asbuh1hhj¸áubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjøáh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¸áubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¸áubjÓ )�”}”(hŒcrtc”h]”hŒcrtc”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¸áubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj´áubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj>áh²hh³jOáh´K€ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj:áh²hh³jOáh´K€ubah}”(h]”j5áah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jOáh´K€hj7áh²hubj )�”}”(hhh]”hÎ)�”}”(hŒTdefault :c:type:`drm_crtc_funcs.atomic_create_state ` hook for crtcs”h]”(hŒdefault ”…”�”}”(hj=âh²hh³Nh´Nubh)�”}”(hŒ=:c:type:`drm_crtc_funcs.atomic_create_state `”h]”jˆ )�”}”(hjGâh]”hŒ"drm_crtc_funcs.atomic_create_state”…”�”}”(hjIâh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjEâubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jì )�”}”jï ]”j}áŒ%c.drm_atomic_helper_crtc_create_state”†”asbjñ Œdrm_crtc_funcs”uh1hh³j¶Úh´KBhj=âubhŒ hook for crtcs”…”�”}”(hj=âh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´K€hj:âh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj7áh²hh³jOáh´K€ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j}âj$ j}âj% ‰j& ‰j' ‰uh1j˜ h²hhj~Úh³Nh´Nubj) )�”}”(hX**Parameters** ``struct drm_crtc *crtc`` crtc object **Description** Allocates and initializes pristine **drm_crtc_state**. This is useful for drivers that don't subclass **drm_crtc_state**. **Return** Pointer to new crtc state, or ERR_PTR on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj‡âh]”hŒ Parameters”…”�”}”(hj‰âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj…âubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´K„hj�âubjw )�”}”(hhh]”j| )�”}”(hŒ&``struct drm_crtc *crtc`` crtc object ”h]”(j‚ )�”}”(hŒ``struct drm_crtc *crtc``”h]”jˆ )�”}”(hj¦âh]”hŒstruct drm_crtc *crtc”…”�”}”(hj¨âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¤âubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´K�hj âubjž )�”}”(hhh]”hÎ)�”}”(hŒ crtc object”h]”hŒ crtc object”…”�”}”(hj¿âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j»âh´K�hj¼âubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj âubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j»âh´K�hj�âubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj�âubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjáâh]”hŒ Description”…”�”}”(hjãâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjßâubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´Kƒhj�âubhÎ)�”}”(hŒ7Allocates and initializes pristine **drm_crtc_state**.”h]”(hŒ$Allocates and initializes pristine ”…”�”}”(hj÷âh²hh³Nh´Nubj3 )�”}”(hŒ**drm_crtc_state**”h]”hŒdrm_crtc_state”…”�”}”(hjÿâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj÷âubhŒ.”…”�”}”(hj÷âh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´K‚hj�âubhÎ)�”}”(hŒBThis is useful for drivers that don't subclass **drm_crtc_state**.”h]”(hŒ1This is useful for drivers that don’t subclass ”…”�”}”(hjãh²hh³Nh´Nubj3 )�”}”(hŒ**drm_crtc_state**”h]”hŒdrm_crtc_state”…”�”}”(hj ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjãubhŒ.”…”�”}”(hjãh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´K„hj�âubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj;ãh]”hŒReturn”…”�”}”(hj=ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj9ãubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´K†hj�âubhÎ)�”}”(hŒ1Pointer to new crtc state, or ERR_PTR on failure.”h]”hŒ1Pointer to new crtc state, or ERR_PTR on failure.”…”�”}”(hjQãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´K‡hj�âubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj~Úh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ5__drm_atomic_helper_crtc_duplicate_state (C function)”Œ*c.__drm_atomic_helper_crtc_duplicate_state”hNt”auh1j† hj~Úh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒcvoid __drm_atomic_helper_crtc_duplicate_state (struct drm_crtc *crtc, struct drm_crtc_state *state)”h]”j¤ )�”}”(hŒbvoid __drm_atomic_helper_crtc_duplicate_state(struct drm_crtc *crtc, struct drm_crtc_state *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj€ãh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj|ãh²hh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.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Œ(__drm_atomic_helper_crtc_duplicate_state”h]”jÓ )�”}”(hŒ(__drm_atomic_helper_crtc_duplicate_state”h]”hŒ(__drm_atomic_helper_crtc_duplicate_state”…”�”}”(hj¡ãh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj�ãubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj|ãh²hh³jŽãh´K™ubjÞ)�”}”(hŒ5(struct drm_crtc *crtc, struct drm_crtc_state *state)”h]”(jä)�”}”(hŒstruct drm_crtc *crtc”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Œdrm_crtc”h]”hŒdrm_crtc”…”�”}”(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%)�”}”jj£ãsbŒ*c.__drm_atomic_helper_crtc_duplicate_state”†”asbuh1hhj¹ãubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjûãh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¹ãubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj äh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¹ãubjÓ )�”}”(hŒcrtc”h]”hŒcrtc”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¹ãubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjµãubjä)�”}”(hŒstruct drm_crtc_state *state”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Œdrm_crtc_state”h]”hŒdrm_crtc_state”…”�”}”(hjMäh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjJäubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jOäŒmodname”NŒ classname”Njé jì )�”}”jï ]”j÷ãŒ*c.__drm_atomic_helper_crtc_duplicate_state”†”asbuh1hhj+äubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjkäh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj+äubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjyäh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj+äubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hj†äh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj+äubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjµãubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj|ãh²hh³jŽãh´K™ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjxãh²hh³jŽãh´K™ubah}”(h]”jsãah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jŽãh´K™hjuãh²hubj )�”}”(hhh]”hÎ)�”}”(hŒcopy atomic CRTC state”h]”hŒcopy atomic CRTC state”…”�”}”(hj°äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´K™hj­äh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjuãh²hh³jŽãh´K™ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jÈäj$ jÈäj% ‰j& ‰j' ‰uh1j˜ h²hhj~Úh³Nh´Nubj) )�”}”(hX**Parameters** ``struct drm_crtc *crtc`` CRTC object ``struct drm_crtc_state *state`` atomic CRTC state **Description** Copies atomic state from a CRTC's current state and resets inferred values. This is useful for drivers that subclass the CRTC state.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjÒäh]”hŒ Parameters”…”�”}”(hjÔäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÐäubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´K�hjÌäubjw )�”}”(hhh]”(j| )�”}”(hŒ&``struct drm_crtc *crtc`` CRTC object ”h]”(j‚ )�”}”(hŒ``struct drm_crtc *crtc``”h]”jˆ )�”}”(hjñäh]”hŒstruct drm_crtc *crtc”…”�”}”(hjóäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjïäubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´Kšhjëäubjž )�”}”(hhh]”hÎ)�”}”(hŒ CRTC object”h]”hŒ CRTC object”…”�”}”(hj åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jåh´Kšhjåubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjëäubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jåh´Kšhjèäubj| )�”}”(hŒ3``struct drm_crtc_state *state`` atomic CRTC state ”h]”(j‚ )�”}”(hŒ ``struct drm_crtc_state *state``”h]”jˆ )�”}”(hj*åh]”hŒstruct drm_crtc_state *state”…”�”}”(hj,åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj(åubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´K›hj$åubjž )�”}”(hhh]”hÎ)�”}”(hŒatomic CRTC state”h]”hŒatomic CRTC state”…”�”}”(hjCåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j?åh´K›hj@åubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj$åubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j?åh´K›hjèäubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÌäubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjeåh]”hŒ Description”…”�”}”(hjgåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjcåubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´K�hjÌäubhÎ)�”}”(hŒ„Copies atomic state from a CRTC's current state and resets inferred values. This is useful for drivers that subclass the CRTC state.”h]”hŒ†Copies atomic state from a CRTC’s current state and resets inferred values. This is useful for drivers that subclass the CRTC state.”…”�”}”(hj{åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´KœhjÌäubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj~Úh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ3drm_atomic_helper_crtc_duplicate_state (C function)”Œ(c.drm_atomic_helper_crtc_duplicate_state”hNt”auh1j† hj~Úh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒVstruct drm_crtc_state * drm_atomic_helper_crtc_duplicate_state (struct drm_crtc *crtc)”h]”j¤ )�”}”(hŒTstruct drm_crtc_state *drm_atomic_helper_crtc_duplicate_state(struct drm_crtc *crtc)”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjªåh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj¦åh²hh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.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¾ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_crtc_state”h]”hŒdrm_crtc_state”…”�”}”(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Œ&drm_atomic_helper_crtc_duplicate_state”sbŒ(c.drm_atomic_helper_crtc_duplicate_state”†”asbuh1hhj¦åh²hh³j·åh´K¾ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjêåh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¦åh²hh³j·åh´K¾ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjøåh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¦åh²hh³j·åh´K¾ubjÍ )�”}”(hŒ&drm_atomic_helper_crtc_duplicate_state”h]”jÓ )�”}”(hjçåh]”hŒ&drm_atomic_helper_crtc_duplicate_state”…”�”}”(hj æh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjæubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj¦åh²hh³j·åh´K¾ubjÞ)�”}”(hŒ(struct drm_crtc *crtc)”h]”jä)�”}”(hŒstruct drm_crtc *crtc”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj$æh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj æubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1æh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj æubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_crtc”h]”hŒdrm_crtc”…”�”}”(hjBæh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj?æubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jDæŒmodname”NŒ classname”Njé jì )�”}”jï ]”jååŒ(c.drm_atomic_helper_crtc_duplicate_state”†”asbuh1hhj æubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`æh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj æubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjnæh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj æubjÓ )�”}”(hŒcrtc”h]”hŒcrtc”…”�”}”(hj{æh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj æubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjæubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj¦åh²hh³j·åh´K¾ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œdefault state duplicate hook”h]”hŒdefault state duplicate hook”…”�”}”(hj¥æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.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²hhj~Úh³Nh´Nubj) )�”}”(hŒ°**Parameters** ``struct drm_crtc *crtc`` drm CRTC **Description** Default CRTC state duplicate hook for drivers which don't have their own subclassed CRTC state structure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjÇæh]”hŒ Parameters”…”�”}”(hjÉæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÅæubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´KÂhjÁæubjw )�”}”(hhh]”j| )�”}”(hŒ#``struct drm_crtc *crtc`` drm CRTC ”h]”(j‚ )�”}”(hŒ``struct drm_crtc *crtc``”h]”jˆ )�”}”(hjææh]”hŒstruct drm_crtc *crtc”…”�”}”(hjèæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjäæubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´K¿hjàæubjž )�”}”(hhh]”hÎ)�”}”(hŒdrm CRTC”h]”hŒdrm CRTC”…”�”}”(hjÿæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jûæh´K¿hjüæubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjàæubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jûæh´K¿hjÝæubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÁæubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj!çh]”hŒ Description”…”�”}”(hj#çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjçubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´KÁhjÁæubhÎ)�”}”(hŒiDefault CRTC state duplicate hook for drivers which don't have their own subclassed CRTC state structure.”h]”hŒkDefault CRTC state duplicate hook for drivers which don’t have their own subclassed CRTC state structure.”…”�”}”(hj7çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´KÀhjÁæubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj~Úh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ3__drm_atomic_helper_crtc_destroy_state (C function)”Œ(c.__drm_atomic_helper_crtc_destroy_state”hNt”auh1j† hj~Úh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒJvoid __drm_atomic_helper_crtc_destroy_state (struct drm_crtc_state *state)”h]”j¤ )�”}”(hŒIvoid __drm_atomic_helper_crtc_destroy_state(struct drm_crtc_state *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjfçh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjbçh²hh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´KÕubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjuçh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjbçh²hh³jtçh´KÕubjÍ )�”}”(hŒ&__drm_atomic_helper_crtc_destroy_state”h]”jÓ )�”}”(hŒ&__drm_atomic_helper_crtc_destroy_state”h]”hŒ&__drm_atomic_helper_crtc_destroy_state”…”�”}”(hj‡çh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjƒçubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjbçh²hh³jtçh´KÕubjÞ)�”}”(hŒ(struct drm_crtc_state *state)”h]”jä)�”}”(hŒstruct drm_crtc_state *state”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Œdrm_crtc_state”h]”hŒdrm_crtc_state”…”�”}”(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%)�”}”jj‰çsbŒ(c.__drm_atomic_helper_crtc_destroy_state”†”asbuh1hhjŸçubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjáçh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjŸçubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjïçh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŸçubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hjüçh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjŸçubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj›çubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjbçh²hh³jtçh´KÕubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj^çh²hh³jtçh´KÕubah}”(h]”jYçah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jtçh´KÕhj[çh²hubj )�”}”(hhh]”hÎ)�”}”(hŒrelease CRTC state”h]”hŒrelease CRTC state”…”�”}”(hj&èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´KÕhj#èh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj[çh²hh³jtçh´KÕubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j>èj$ j>èj% ‰j& ‰j' ‰uh1j˜ h²hhj~Úh³Nh´Nubj) )�”}”(hX**Parameters** ``struct drm_crtc_state *state`` CRTC state object to release **Description** Releases all resources stored in the CRTC state without actually freeing the memory of the CRTC state. This is useful for drivers that subclass the CRTC state.”•h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjHèh]”hŒ Parameters”…”�”}”(hjJèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjFèubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´KÙhjBèubjw )�”}”(hhh]”j| )�”}”(hŒ>``struct drm_crtc_state *state`` CRTC state object to release ”h]”(j‚ )�”}”(hŒ ``struct drm_crtc_state *state``”h]”jˆ )�”}”(hjgèh]”hŒstruct drm_crtc_state *state”…”�”}”(hjièh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjeèubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´KÖhjaèubjž )�”}”(hhh]”hÎ)�”}”(hŒCRTC state object to release”h]”hŒCRTC state object to release”…”�”}”(hj€èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j|èh´KÖhj}èubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjaèubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j|èh´KÖhj^èubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjBèubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj¢èh]”hŒ Description”…”�”}”(hj¤èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj èubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´KØhjBèubhÎ)�”}”(hŒŸReleases all resources stored in the CRTC state without actually freeing the memory of the CRTC state. This is useful for drivers that subclass the CRTC state.”h]”hŒŸReleases all resources stored in the CRTC state without actually freeing the memory of the CRTC state. This is useful for drivers that subclass the CRTC state.”…”�”}”(hj¸èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´K×hjBèubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj~Úh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ1drm_atomic_helper_crtc_destroy_state (C function)”Œ&c.drm_atomic_helper_crtc_destroy_state”hNt”auh1j† hj~Úh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ_void drm_atomic_helper_crtc_destroy_state (struct drm_crtc *crtc, struct drm_crtc_state *state)”h]”j¤ )�”}”(hŒ^void drm_atomic_helper_crtc_destroy_state(struct drm_crtc *crtc, struct drm_crtc_state *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjçèh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjãèh²hh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.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Œ$drm_atomic_helper_crtc_destroy_state”h]”jÓ )�”}”(hŒ$drm_atomic_helper_crtc_destroy_state”h]”hŒ$drm_atomic_helper_crtc_destroy_state”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjéubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjãèh²hh³jõèh´KùubjÞ)�”}”(hŒ5(struct drm_crtc *crtc, struct drm_crtc_state *state)”h]”(jä)�”}”(hŒstruct drm_crtc *crtc”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj$éh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj éubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1éh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj éubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_crtc”h]”hŒdrm_crtc”…”�”}”(hjBéh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj?éubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jDéŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj ésbŒ&c.drm_atomic_helper_crtc_destroy_state”†”asbuh1hhj éubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbéh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj éubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjpéh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj éubjÓ )�”}”(hŒcrtc”h]”hŒcrtc”…”�”}”(hj}éh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj éubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjéubjä)�”}”(hŒstruct drm_crtc_state *state”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Œdrm_crtc_state”h]”hŒdrm_crtc_state”…”�”}”(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.drm_atomic_helper_crtc_destroy_state”†”asbuh1hhj’éubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒéh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj’éubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjàéh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj’éubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hjíéh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj’éubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjéubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjãèh²hh³jõèh´Kùubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œdefault state destroy hook”h]”hŒdefault state destroy hook”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.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²hhj~Úh³Nh´Nubj) )�”}”(hŒï**Parameters** ``struct drm_crtc *crtc`` drm CRTC ``struct drm_crtc_state *state`` CRTC state object to release **Description** Default CRTC state destroy hook for drivers which don't have their own subclassed CRTC state structure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj9êh]”hŒ Parameters”…”�”}”(hj;êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj7êubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´Kýhj3êubjw )�”}”(hhh]”(j| )�”}”(hŒ#``struct drm_crtc *crtc`` drm CRTC ”h]”(j‚ )�”}”(hŒ``struct drm_crtc *crtc``”h]”jˆ )�”}”(hjXêh]”hŒstruct drm_crtc *crtc”…”�”}”(hjZêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjVêubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´KúhjRêubjž )�”}”(hhh]”hÎ)�”}”(hŒdrm CRTC”h]”hŒdrm CRTC”…”�”}”(hjqêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jmêh´Kúhjnêubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjRêubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jmêh´KúhjOêubj| )�”}”(hŒ>``struct drm_crtc_state *state`` CRTC state object to release ”h]”(j‚ )�”}”(hŒ ``struct drm_crtc_state *state``”h]”jˆ )�”}”(hj‘êh]”hŒstruct drm_crtc_state *state”…”�”}”(hj“êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj�êubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´Kûhj‹êubjž )�”}”(hhh]”hÎ)�”}”(hŒCRTC state object to release”h]”hŒCRTC state object to release”…”�”}”(hjªêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¦êh´Kûhj§êubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj‹êubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¦êh´KûhjOêubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj3êubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjÌêh]”hŒ Description”…”�”}”(hjÎêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÊêubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´Kýhj3êubhÎ)�”}”(hŒgDefault CRTC state destroy hook for drivers which don't have their own subclassed CRTC state structure.”h]”hŒiDefault CRTC state destroy hook for drivers which don’t have their own subclassed CRTC state structure.”…”�”}”(hjâêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´Kühj3êubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj~Úh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ1__drm_atomic_helper_plane_state_init (C function)”Œ&c.__drm_atomic_helper_plane_state_init”hNt”auh1j† hj~Úh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒhvoid __drm_atomic_helper_plane_state_init (struct drm_plane_state *plane_state, struct drm_plane *plane)”h]”j¤ )�”}”(hŒgvoid __drm_atomic_helper_plane_state_init(struct drm_plane_state *plane_state, struct drm_plane *plane)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj ëh²hh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.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Œ$__drm_atomic_helper_plane_state_init”h]”jÓ )�”}”(hŒ$__drm_atomic_helper_plane_state_init”h]”hŒ$__drm_atomic_helper_plane_state_init”…”�”}”(hj2ëh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj.ëubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj ëh²hh³jëh´M ubjÞ)�”}”(hŒ>(struct drm_plane_state *plane_state, struct drm_plane *plane)”h]”(jä)�”}”(hŒ#struct drm_plane_state *plane_state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjNëh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjJëubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[ëh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjJëubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_plane_state”h]”hŒdrm_plane_state”…”�”}”(hjlëh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjiëubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jnëŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj4ësbŒ&c.__drm_atomic_helper_plane_state_init”†”asbuh1hhjJëubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒëh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjJëubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjšëh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjJëubjÓ )�”}”(hŒ plane_state”h]”hŒ plane_state”…”�”}”(hj§ëh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjJëubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjFëubjä)�”}”(hŒstruct drm_plane *plane”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Œ drm_plane”h]”hŒ drm_plane”…”�”}”(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.__drm_atomic_helper_plane_state_init”†”asbuh1hhj¼ëubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjüëh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¼ëubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj ìh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¼ëubjÓ )�”}”(hŒplane”h]”hŒplane”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¼ëubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjFëubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj ëh²hh³jëh´M ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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ŒInitialize the plane state”h]”hŒInitialize the plane state”…”�”}”(hjAìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.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# jYìj$ jYìj% ‰j& ‰j' ‰uh1j˜ h²hhj~Úh³Nh´Nubj) )�”}”(hX-**Parameters** ``struct drm_plane_state *plane_state`` atomic plane state, must not be NULL ``struct drm_plane *plane`` plane object, must not be NULL **Description** Initializes the newly allocated **plane_state** with default values. This is useful for drivers that subclass the plane state.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjcìh]”hŒ Parameters”…”�”}”(hjeìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjaìubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M hj]ìubjw )�”}”(hhh]”(j| )�”}”(hŒM``struct drm_plane_state *plane_state`` atomic plane state, must not be NULL ”h]”(j‚ )�”}”(hŒ'``struct drm_plane_state *plane_state``”h]”jˆ )�”}”(hj‚ìh]”hŒ#struct drm_plane_state *plane_state”…”�”}”(hj„ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj€ìubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M hj|ìubjž )�”}”(hhh]”hÎ)�”}”(hŒ$atomic plane state, must not be NULL”h]”hŒ$atomic plane state, must not be NULL”…”�”}”(hj›ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j—ìh´M hj˜ìubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj|ìubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j—ìh´M hjyìubj| )�”}”(hŒ;``struct drm_plane *plane`` plane object, must not be NULL ”h]”(j‚ )�”}”(hŒ``struct drm_plane *plane``”h]”jˆ )�”}”(hj»ìh]”hŒstruct drm_plane *plane”…”�”}”(hj½ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¹ìubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M hjµìubjž )�”}”(hhh]”hÎ)�”}”(hŒplane object, must not be NULL”h]”hŒplane object, must not be NULL”…”�”}”(hjÔìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÐìh´M hjÑìubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjµìubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÐìh´M hjyìubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj]ìubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjöìh]”hŒ Description”…”�”}”(hjøìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjôìubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M hj]ìubhÎ)�”}”(hŒ~Initializes the newly allocated **plane_state** with default values. This is useful for drivers that subclass the plane state.”h]”(hŒ Initializes the newly allocated ”…”�”}”(hj íh²hh³Nh´Nubj3 )�”}”(hŒ**plane_state**”h]”hŒ plane_state”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj íubhŒO with default values. This is useful for drivers that subclass the plane state.”…”�”}”(hj íh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M hj]ìubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj~Úh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ,__drm_atomic_helper_plane_reset (C function)”Œ!c.__drm_atomic_helper_plane_reset”hNt”auh1j† hj~Úh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒcvoid __drm_atomic_helper_plane_reset (struct drm_plane *plane, struct drm_plane_state *plane_state)”h]”j¤ )�”}”(hŒbvoid __drm_atomic_helper_plane_reset(struct drm_plane *plane, struct drm_plane_state *plane_state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjMíh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjIíh²hh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MOubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\íh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjIíh²hh³j[íh´MOubjÍ )�”}”(hŒ__drm_atomic_helper_plane_reset”h]”jÓ )�”}”(hŒ__drm_atomic_helper_plane_reset”h]”hŒ__drm_atomic_helper_plane_reset”…”�”}”(hjníh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjjíubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjIíh²hh³j[íh´MOubjÞ)�”}”(hŒ>(struct drm_plane *plane, struct drm_plane_state *plane_state)”h]”(jä)�”}”(hŒstruct drm_plane *plane”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Œ drm_plane”h]”hŒ drm_plane”…”�”}”(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%)�”}”jjpísbŒ!c.__drm_atomic_helper_plane_reset”†”asbuh1hhj†íubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈíh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj†íubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÖíh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj†íubjÓ )�”}”(hŒplane”h]”hŒplane”…”�”}”(hjãíh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj†íubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj‚íubjä)�”}”(hŒ#struct drm_plane_state *plane_state”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Œdrm_plane_state”h]”hŒdrm_plane_state”…”�”}”(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.__drm_atomic_helper_plane_reset”†”asbuh1hhjøíubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8îh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjøíubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjFîh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjøíubjÓ )�”}”(hŒ plane_state”h]”hŒ plane_state”…”�”}”(hjSîh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjøíubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj‚íubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjIíh²hh³j[íh´MOubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjEíh²hh³j[íh´MOubah}”(h]”j@íah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j[íh´MOhjBíh²hubj )�”}”(hhh]”hÎ)�”}”(hŒreset state on plane”h]”hŒreset state on plane”…”�”}”(hj}îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MOhjzîh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjBíh²hh³j[íh´MOubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j•îj$ j•îj% ‰j& ‰j' ‰uh1j˜ h²hhj~Úh³Nh´Nubj) )�”}”(hXÇ**Parameters** ``struct drm_plane *plane`` drm plane ``struct drm_plane_state *plane_state`` plane state to assign **Description** Initializes the newly allocated **plane_state** and assigns it to the :c:type:`drm_plane->state ` pointer of **plane**, usually required when initializing the drivers or when called from the :c:type:`drm_plane_funcs.reset ` hook. This is useful for drivers that subclass the plane state.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjŸîh]”hŒ Parameters”…”�”}”(hj¡îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj�îubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MShj™îubjw )�”}”(hhh]”(j| )�”}”(hŒ&``struct drm_plane *plane`` drm plane ”h]”(j‚ )�”}”(hŒ``struct drm_plane *plane``”h]”jˆ )�”}”(hj¾îh]”hŒstruct drm_plane *plane”…”�”}”(hjÀîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¼îubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MPhj¸îubjž )�”}”(hhh]”hÎ)�”}”(hŒ drm plane”h]”hŒ drm plane”…”�”}”(hj×îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÓîh´MPhjÔîubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¸îubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÓîh´MPhjµîubj| )�”}”(hŒ>``struct drm_plane_state *plane_state`` plane state to assign ”h]”(j‚ )�”}”(hŒ'``struct drm_plane_state *plane_state``”h]”jˆ )�”}”(hj÷îh]”hŒ#struct drm_plane_state *plane_state”…”�”}”(hjùîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjõîubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MQhjñîubjž )�”}”(hhh]”hÎ)�”}”(hŒplane state to assign”h]”hŒplane state to assign”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j ïh´MQhj ïubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjñîubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j ïh´MQhjµîubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj™îubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj2ïh]”hŒ Description”…”�”}”(hj4ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj0ïubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MShj™îubhÎ)�”}”(hXInitializes the newly allocated **plane_state** and assigns it to the :c:type:`drm_plane->state ` pointer of **plane**, usually required when initializing the drivers or when called from the :c:type:`drm_plane_funcs.reset ` hook.”h]”(hŒ Initializes the newly allocated ”…”�”}”(hjHïh²hh³Nh´Nubj3 )�”}”(hŒ**plane_state**”h]”hŒ plane_state”…”�”}”(hjPïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjHïubhŒ and assigns it to the ”…”�”}”(hjHïh²hh³Nh´Nubh)�”}”(hŒ&:c:type:`drm_plane->state `”h]”jˆ )�”}”(hjdïh]”hŒdrm_plane->state”…”�”}”(hjfïh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjbïubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_plane”uh1hh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MRhjHïubhŒ pointer of ”…”�”}”(hjHïh²hh³Nh´Nubj3 )�”}”(hŒ **plane**”h]”hŒplane”…”�”}”(hj†ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjHïubhŒI, usually required when initializing the drivers or when called from the ”…”�”}”(hjHïh²hh³Nh´Nubh)�”}”(hŒ1:c:type:`drm_plane_funcs.reset `”h]”jˆ )�”}”(hjšïh]”hŒdrm_plane_funcs.reset”…”�”}”(hjœïh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj˜ïubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_plane_funcs”uh1hh³j�ïh´MRhjHïubhŒ hook.”…”�”}”(hjHïh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j�ïh´MRhj™îubhÎ)�”}”(hŒ9This is useful for drivers that subclass the plane state.”h]”hŒ9This is useful for drivers that subclass the plane state.”…”�”}”(hjÁïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MWhj™îubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj~Úh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ*drm_atomic_helper_plane_reset (C function)”Œc.drm_atomic_helper_plane_reset”hNt”auh1j† hj~Úh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ` hook for planes”h]”(hŒdefault ”…”�”}”(hj°ðh²hh³Nh´Nubh)�”}”(hŒ1:c:type:`drm_plane_funcs.reset `”h]”jˆ )�”}”(hjºðh]”hŒdrm_plane_funcs.reset”…”�”}”(hj¼ðh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj¸ðubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jì )�”}”jï ]”jgðŒc.drm_atomic_helper_plane_reset”†”asbjñ Œdrm_plane_funcs”uh1hh³j¶Úh´KBhj°ðubhŒ hook for planes”…”�”}”(hj°ðh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´Mehj­ðh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjåïh²hh³jþïh´Meubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jððj$ jððj% ‰j& ‰j' ‰uh1j˜ h²hhj~Úh³Nh´Nubj) )�”}”(hŒå**Parameters** ``struct drm_plane *plane`` drm plane **Description** Resets the atomic state for **plane** by freeing the state pointer (which might be NULL, e.g. at driver load time) and allocating a new empty state object.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjúðh]”hŒ Parameters”…”�”}”(hjüðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjøðubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´Mihjôðubjw )�”}”(hhh]”j| )�”}”(hŒ&``struct drm_plane *plane`` drm plane ”h]”(j‚ )�”}”(hŒ``struct drm_plane *plane``”h]”jˆ )�”}”(hjñh]”hŒstruct drm_plane *plane”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjñubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´Mfhjñubjž )�”}”(hhh]”hÎ)�”}”(hŒ drm plane”h]”hŒ drm plane”…”�”}”(hj2ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j.ñh´Mfhj/ñubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjñubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j.ñh´Mfhjñubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjôðubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjTñh]”hŒ Description”…”�”}”(hjVñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjRñubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MhhjôðubhÎ)�”}”(hŒ›Resets the atomic state for **plane** by freeing the state pointer (which might be NULL, e.g. at driver load time) and allocating a new empty state object.”h]”(hŒResets the atomic state for ”…”�”}”(hjjñh²hh³Nh´Nubj3 )�”}”(hŒ **plane**”h]”hŒplane”…”�”}”(hjrñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjjñubhŒv by freeing the state pointer (which might be NULL, e.g. at driver load time) and allocating a new empty state object.”…”�”}”(hjjñh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´Mghjôðubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj~Úh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ1drm_atomic_helper_plane_create_state (C function)”Œ&c.drm_atomic_helper_plane_create_state”hNt”auh1j† hj~Úh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒWstruct drm_plane_state * drm_atomic_helper_plane_create_state (struct drm_plane *plane)”h]”j¤ )�”}”(hŒUstruct drm_plane_state *drm_atomic_helper_plane_create_state(struct drm_plane *plane)”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj«ñh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj§ñh²hh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´Mxubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹ñh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj§ñh²hh³j¸ñh´Mxubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_plane_state”h]”hŒdrm_plane_state”…”�”}”(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Œ$drm_atomic_helper_plane_create_state”sbŒ&c.drm_atomic_helper_plane_create_state”†”asbuh1hhj§ñh²hh³j¸ñh´Mxubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjëñh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj§ñh²hh³j¸ñh´Mxubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjùñh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj§ñh²hh³j¸ñh´MxubjÍ )�”}”(hŒ$drm_atomic_helper_plane_create_state”h]”jÓ )�”}”(hjèñh]”hŒ$drm_atomic_helper_plane_create_state”…”�”}”(hj òh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjòubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj§ñh²hh³j¸ñh´MxubjÞ)�”}”(hŒ(struct drm_plane *plane)”h]”jä)�”}”(hŒstruct drm_plane *plane”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj%òh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj!òubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2òh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj!òubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_plane”h]”hŒ drm_plane”…”�”}”(hjCòh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj@òubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jEòŒmodname”NŒ classname”Njé jì )�”}”jï ]”jæñŒ&c.drm_atomic_helper_plane_create_state”†”asbuh1hhj!òubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjaòh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj!òubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjoòh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj!òubjÓ )�”}”(hŒplane”h]”hŒplane”…”�”}”(hj|òh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj!òubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjòubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj§ñh²hh³j¸ñh´Mxubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj£ñh²hh³j¸ñh´Mxubah}”(h]”jžñah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j¸ñh´Mxhj ñh²hubj )�”}”(hhh]”hÎ)�”}”(hŒWdefault :c:type:`drm_plane_funcs.atomic_create_state ` hook for planes”h]”(hŒdefault ”…”�”}”(hj¦òh²hh³Nh´Nubh)�”}”(hŒ?:c:type:`drm_plane_funcs.atomic_create_state `”h]”jˆ )�”}”(hj°òh]”hŒ#drm_plane_funcs.atomic_create_state”…”�”}”(hj²òh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj®òubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jì )�”}”jï ]”jæñŒ&c.drm_atomic_helper_plane_create_state”†”asbjñ Œdrm_plane_funcs”uh1hh³j¶Úh´KBhj¦òubhŒ hook for planes”…”�”}”(hj¦òh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´Mxhj£òh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ñh²hh³j¸ñh´Mxubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jæòj$ jæòj% ‰j& ‰j' ‰uh1j˜ h²hhj~Úh³Nh´Nubj) )�”}”(hX **Parameters** ``struct drm_plane *plane`` plane object **Description** Allocates and initializes pristine **drm_plane_state**. This is useful for drivers that don't subclass **drm_plane_state**. **Return** Pointer to new plane state, or ERR_PTR on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjðòh]”hŒ Parameters”…”�”}”(hjòòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjîòubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M|hjêòubjw )�”}”(hhh]”j| )�”}”(hŒ)``struct drm_plane *plane`` plane object ”h]”(j‚ )�”}”(hŒ``struct drm_plane *plane``”h]”jˆ )�”}”(hjóh]”hŒstruct drm_plane *plane”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj óubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´Myhj óubjž )�”}”(hhh]”hÎ)�”}”(hŒ plane object”h]”hŒ plane object”…”�”}”(hj(óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j$óh´Myhj%óubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj óubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j$óh´Myhjóubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjêòubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjJóh]”hŒ Description”…”�”}”(hjLóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjHóubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M{hjêòubhÎ)�”}”(hŒ7Allocates and initializes pristine **drm_plane_state**.”h]”(hŒ#Allocates and initializes pristine ”…”�”}”(hj`óh²hh³Nh´Nubj3 )�”}”(hŒ**drm_plane_state**”h]”hŒdrm_plane_state”…”�”}”(hjhóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj`óubhŒ.”…”�”}”(hj`óh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MzhjêòubhÎ)�”}”(hŒCThis is useful for drivers that don't subclass **drm_plane_state**.”h]”(hŒ1This is useful for drivers that don’t subclass ”…”�”}”(hj�óh²hh³Nh´Nubj3 )�”}”(hŒ**drm_plane_state**”h]”hŒdrm_plane_state”…”�”}”(hj‰óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj�óubhŒ.”…”�”}”(hj�óh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M|hjêòubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj¤óh]”hŒReturn”…”�”}”(hj¦óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¢óubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M~hjêòubhÎ)�”}”(hŒ2Pointer to new plane state, or ERR_PTR on failure.”h]”hŒ2Pointer to new plane state, or ERR_PTR on failure.”…”�”}”(hjºóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´Mhjêòubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj~Úh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ6__drm_atomic_helper_plane_duplicate_state (C function)”Œ+c.__drm_atomic_helper_plane_duplicate_state”hNt”auh1j† hj~Úh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒgvoid __drm_atomic_helper_plane_duplicate_state (struct drm_plane *plane, struct drm_plane_state *state)”h]”j¤ )�”}”(hŒfvoid __drm_atomic_helper_plane_duplicate_state(struct drm_plane *plane, struct drm_plane_state *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjéóh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjåóh²hh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.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Œ)__drm_atomic_helper_plane_duplicate_state”h]”jÓ )�”}”(hŒ)__drm_atomic_helper_plane_duplicate_state”h]”hŒ)__drm_atomic_helper_plane_duplicate_state”…”�”}”(hj ôh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjôubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjåóh²hh³j÷óh´M‘ubjÞ)�”}”(hŒ8(struct drm_plane *plane, struct drm_plane_state *state)”h]”(jä)�”}”(hŒstruct drm_plane *plane”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj&ôh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj"ôubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3ôh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj"ôubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_plane”h]”hŒ drm_plane”…”�”}”(hjDôh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjAôubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jFôŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj ôsbŒ+c.__drm_atomic_helper_plane_duplicate_state”†”asbuh1hhj"ôubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdôh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj"ôubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjrôh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj"ôubjÓ )�”}”(hŒplane”h]”hŒplane”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj"ôubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjôubjä)�”}”(hŒstruct drm_plane_state *state”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Œdrm_plane_state”h]”hŒdrm_plane_state”…”�”}”(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.__drm_atomic_helper_plane_duplicate_state”†”asbuh1hhj”ôubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔôh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj”ôubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjâôh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj”ôubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hjïôh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj”ôubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjôubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjåóh²hh³j÷óh´M‘ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œcopy atomic plane state”h]”hŒcopy atomic plane state”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.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# j1õj$ j1õj% ‰j& ‰j' ‰uh1j˜ h²hhj~Úh³Nh´Nubj) )�”}”(hŒð**Parameters** ``struct drm_plane *plane`` plane object ``struct drm_plane_state *state`` atomic plane state **Description** Copies atomic state from a plane's current state. This is useful for drivers that subclass the plane state.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj;õh]”hŒ Parameters”…”�”}”(hj=õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj9õubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M•hj5õubjw )�”}”(hhh]”(j| )�”}”(hŒ)``struct drm_plane *plane`` plane object ”h]”(j‚ )�”}”(hŒ``struct drm_plane *plane``”h]”jˆ )�”}”(hjZõh]”hŒstruct drm_plane *plane”…”�”}”(hj\õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjXõubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M’hjTõubjž )�”}”(hhh]”hÎ)�”}”(hŒ plane object”h]”hŒ plane object”…”�”}”(hjsõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³joõh´M’hjpõubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjTõubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³joõh´M’hjQõubj| )�”}”(hŒ5``struct drm_plane_state *state`` atomic plane state ”h]”(j‚ )�”}”(hŒ!``struct drm_plane_state *state``”h]”jˆ )�”}”(hj“õh]”hŒstruct drm_plane_state *state”…”�”}”(hj•õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj‘õubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M“hj�õubjž )�”}”(hhh]”hÎ)�”}”(hŒatomic plane state”h]”hŒatomic plane state”…”�”}”(hj¬õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¨õh´M“hj©õubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj�õubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¨õh´M“hjQõubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj5õubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjÎõh]”hŒ Description”…”�”}”(hjÐõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÌõubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M•hj5õubhÎ)�”}”(hŒkCopies atomic state from a plane's current state. This is useful for drivers that subclass the plane state.”h]”hŒmCopies atomic state from a plane’s current state. This is useful for drivers that subclass the plane state.”…”�”}”(hjäõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M”hj5õubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj~Úh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ4drm_atomic_helper_plane_duplicate_state (C function)”Œ)c.drm_atomic_helper_plane_duplicate_state”hNt”auh1j† hj~Úh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒZstruct drm_plane_state * drm_atomic_helper_plane_duplicate_state (struct drm_plane *plane)”h]”j¤ )�”}”(hŒXstruct drm_plane_state *drm_atomic_helper_plane_duplicate_state(struct drm_plane *plane)”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjöh²hh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.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¨ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_plane_state”h]”hŒdrm_plane_state”…”�”}”(hj2öh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj/öubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j4öŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jŒ'drm_atomic_helper_plane_duplicate_state”sbŒ)c.drm_atomic_helper_plane_duplicate_state”†”asbuh1hhjöh²hh³j öh´M¨ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSöh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjöh²hh³j öh´M¨ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjaöh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjöh²hh³j öh´M¨ubjÍ )�”}”(hŒ'drm_atomic_helper_plane_duplicate_state”h]”jÓ )�”}”(hjPöh]”hŒ'drm_atomic_helper_plane_duplicate_state”…”�”}”(hjröh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjnöubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjöh²hh³j öh´M¨ubjÞ)�”}”(hŒ(struct drm_plane *plane)”h]”jä)�”}”(hŒstruct drm_plane *plane”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Œ drm_plane”h]”hŒ drm_plane”…”�”}”(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ï ]”jNöŒ)c.drm_atomic_helper_plane_duplicate_state”†”asbuh1hhj‰öubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉöh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj‰öubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj×öh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‰öubjÓ )�”}”(hŒplane”h]”hŒplane”…”�”}”(hjäöh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj‰öubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj…öubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjöh²hh³j öh´M¨ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œdefault state duplicate hook”h]”hŒdefault state duplicate hook”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.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²hhj~Úh³Nh´Nubj) )�”}”(hŒµ**Parameters** ``struct drm_plane *plane`` drm plane **Description** Default plane state duplicate hook for drivers which don't have their own subclassed plane state structure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj0÷h]”hŒ Parameters”…”�”}”(hj2÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj.÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M¬hj*÷ubjw )�”}”(hhh]”j| )�”}”(hŒ&``struct drm_plane *plane`` drm plane ”h]”(j‚ )�”}”(hŒ``struct drm_plane *plane``”h]”jˆ )�”}”(hjO÷h]”hŒstruct drm_plane *plane”…”�”}”(hjQ÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjM÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M©hjI÷ubjž )�”}”(hhh]”hÎ)�”}”(hŒ drm plane”h]”hŒ drm plane”…”�”}”(hjh÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jd÷h´M©hje÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjI÷ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jd÷h´M©hjF÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj*÷ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjŠ÷h]”hŒ Description”…”�”}”(hjŒ÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjˆ÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M«hj*÷ubhÎ)�”}”(hŒkDefault plane state duplicate hook for drivers which don't have their own subclassed plane state structure.”h]”hŒmDefault plane state duplicate hook for drivers which don’t have their own subclassed plane state structure.”…”�”}”(hj ÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´Mªhj*÷ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj~Úh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ4__drm_atomic_helper_plane_destroy_state (C function)”Œ)c.__drm_atomic_helper_plane_destroy_state”hNt”auh1j† hj~Úh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒLvoid __drm_atomic_helper_plane_destroy_state (struct drm_plane_state *state)”h]”j¤ )�”}”(hŒKvoid __drm_atomic_helper_plane_destroy_state(struct drm_plane_state *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÏ÷h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjË÷h²hh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.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Œ'__drm_atomic_helper_plane_destroy_state”h]”jÓ )�”}”(hŒ'__drm_atomic_helper_plane_destroy_state”h]”hŒ'__drm_atomic_helper_plane_destroy_state”…”�”}”(hjð÷h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjì÷ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjË÷h²hh³jÝ÷h´M¿ubjÞ)�”}”(hŒ(struct drm_plane_state *state)”h]”jä)�”}”(hŒstruct drm_plane_state *state”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Œdrm_plane_state”h]”hŒdrm_plane_state”…”�”}”(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%)�”}”jjò÷sbŒ)c.__drm_atomic_helper_plane_destroy_state”†”asbuh1hhjøubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJøh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjøubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjXøh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjøubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hjeøh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjøubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjøubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjË÷h²hh³jÝ÷h´M¿ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œrelease plane state”h]”hŒrelease plane state”…”�”}”(hj�øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.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²hhj~Úh³Nh´Nubj) )�”}”(hX**Parameters** ``struct drm_plane_state *state`` plane state object to release **Description** Releases all resources stored in the plane state without actually freeing the memory of the plane state. This is useful for drivers that subclass the plane state.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj±øh]”hŒ Parameters”…”�”}”(hj³øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¯øubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MÃhj«øubjw )�”}”(hhh]”j| )�”}”(hŒ@``struct drm_plane_state *state`` plane state object to release ”h]”(j‚ )�”}”(hŒ!``struct drm_plane_state *state``”h]”jˆ )�”}”(hjÐøh]”hŒstruct drm_plane_state *state”…”�”}”(hjÒøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÎøubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MÀhjÊøubjž )�”}”(hhh]”hÎ)�”}”(hŒplane state object to release”h]”hŒplane state object to release”…”�”}”(hjéøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jåøh´MÀhjæøubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÊøubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jåøh´MÀhjÇøubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj«øubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj ùh]”hŒ Description”…”�”}”(hj ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj ùubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MÂhj«øubhÎ)�”}”(hŒ¢Releases all resources stored in the plane state without actually freeing the memory of the plane state. This is useful for drivers that subclass the plane state.”h]”hŒ¢Releases all resources stored in the plane state without actually freeing the memory of the plane state. This is useful for drivers that subclass the plane state.”…”�”}”(hj!ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MÁhj«øubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj~Úh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ2drm_atomic_helper_plane_destroy_state (C function)”Œ'c.drm_atomic_helper_plane_destroy_state”hNt”auh1j† hj~Úh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒcvoid drm_atomic_helper_plane_destroy_state (struct drm_plane *plane, struct drm_plane_state *state)”h]”j¤ )�”}”(hŒbvoid drm_atomic_helper_plane_destroy_state(struct drm_plane *plane, struct drm_plane_state *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjPùh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjLùh²hh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MÖubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_ùh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjLùh²hh³j^ùh´MÖubjÍ )�”}”(hŒ%drm_atomic_helper_plane_destroy_state”h]”jÓ )�”}”(hŒ%drm_atomic_helper_plane_destroy_state”h]”hŒ%drm_atomic_helper_plane_destroy_state”…”�”}”(hjqùh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjmùubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjLùh²hh³j^ùh´MÖubjÞ)�”}”(hŒ8(struct drm_plane *plane, struct drm_plane_state *state)”h]”(jä)�”}”(hŒstruct drm_plane *plane”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Œ drm_plane”h]”hŒ drm_plane”…”�”}”(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%)�”}”jjsùsbŒ'c.drm_atomic_helper_plane_destroy_state”†”asbuh1hhj‰ùubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjËùh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj‰ùubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÙùh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‰ùubjÓ )�”}”(hŒplane”h]”hŒplane”…”�”}”(hjæùh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj‰ùubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj…ùubjä)�”}”(hŒstruct drm_plane_state *state”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Œdrm_plane_state”h]”hŒdrm_plane_state”…”�”}”(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.drm_atomic_helper_plane_destroy_state”†”asbuh1hhjûùubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;úh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjûùubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjIúh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjûùubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hjVúh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjûùubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj…ùubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjLùh²hh³j^ùh´MÖubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjHùh²hh³j^ùh´MÖubah}”(h]”jCùah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j^ùh´MÖhjEùh²hubj )�”}”(hhh]”hÎ)�”}”(hŒdefault state destroy hook”h]”hŒdefault state destroy hook”…”�”}”(hj€úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MÖhj}úh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjEùh²hh³j^ùh´MÖubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j˜új$ j˜új% ‰j& ‰j' ‰uh1j˜ h²hhj~Úh³Nh´Nubj) )�”}”(hŒö**Parameters** ``struct drm_plane *plane`` drm plane ``struct drm_plane_state *state`` plane state object to release **Description** Default plane state destroy hook for drivers which don't have their own subclassed plane state structure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj¢úh]”hŒ Parameters”…”�”}”(hj¤úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj úubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MÚhjœúubjw )�”}”(hhh]”(j| )�”}”(hŒ&``struct drm_plane *plane`` drm plane ”h]”(j‚ )�”}”(hŒ``struct drm_plane *plane``”h]”jˆ )�”}”(hjÁúh]”hŒstruct drm_plane *plane”…”�”}”(hjÃúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¿úubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M×hj»úubjž )�”}”(hhh]”hÎ)�”}”(hŒ drm plane”h]”hŒ drm plane”…”�”}”(hjÚúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÖúh´M×hj×úubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj»úubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÖúh´M×hj¸úubj| )�”}”(hŒ@``struct drm_plane_state *state`` plane state object to release ”h]”(j‚ )�”}”(hŒ!``struct drm_plane_state *state``”h]”jˆ )�”}”(hjúúh]”hŒstruct drm_plane_state *state”…”�”}”(hjüúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjøúubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MØhjôúubjž )�”}”(hhh]”hÎ)�”}”(hŒplane state object to release”h]”hŒplane state object to release”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jûh´MØhjûubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjôúubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jûh´MØhj¸úubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjœúubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj5ûh]”hŒ Description”…”�”}”(hj7ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj3ûubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MÚhjœúubhÎ)�”}”(hŒiDefault plane state destroy hook for drivers which don't have their own subclassed plane state structure.”h]”hŒkDefault plane state destroy hook for drivers which don’t have their own subclassed plane state structure.”…”�”}”(hjKûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MÙhjœúubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj~Úh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ5__drm_atomic_helper_connector_state_init (C function)”Œ*c.__drm_atomic_helper_connector_state_init”hNt”auh1j† hj~Úh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒwvoid __drm_atomic_helper_connector_state_init (struct drm_connector_state *conn_state, struct drm_connector *connector)”h]”j¤ )�”}”(hŒvvoid __drm_atomic_helper_connector_state_init(struct drm_connector_state *conn_state, struct drm_connector *connector)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjzûh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjvûh²hh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´Mæubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰ûh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjvûh²hh³jˆûh´MæubjÍ )�”}”(hŒ(__drm_atomic_helper_connector_state_init”h]”jÓ )�”}”(hŒ(__drm_atomic_helper_connector_state_init”h]”hŒ(__drm_atomic_helper_connector_state_init”…”�”}”(hj›ûh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj—ûubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjvûh²hh³jˆûh´MæubjÞ)�”}”(hŒI(struct drm_connector_state *conn_state, struct drm_connector *connector)”h]”(jä)�”}”(hŒ&struct drm_connector_state *conn_state”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Œdrm_connector_state”h]”hŒdrm_connector_state”…”�”}”(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%)�”}”jj�ûsbŒ*c.__drm_atomic_helper_connector_state_init”†”asbuh1hhj³ûubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõûh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj³ûubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj³ûubjÓ )�”}”(hŒ conn_state”h]”hŒ conn_state”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj³ûubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¯ûubjä)�”}”(hŒstruct drm_connector *connector”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj)üh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj%üubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6üh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj%üubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_connector”h]”hŒ drm_connector”…”�”}”(hjGüh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjDüubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jIüŒmodname”NŒ classname”Njé jì )�”}”jï ]”jñûŒ*c.__drm_atomic_helper_connector_state_init”†”asbuh1hhj%üubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeüh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj%üubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjsüh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj%üubjÓ )�”}”(hŒ connector”h]”hŒ connector”…”�”}”(hj€üh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj%üubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¯ûubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjvûh²hh³jˆûh´Mæubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjrûh²hh³jˆûh´Mæubah}”(h]”jmûah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jˆûh´Mæhjoûh²hubj )�”}”(hhh]”hÎ)�”}”(hŒInitialize the connector state”h]”hŒInitialize the connector state”…”�”}”(hjªüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´Mæhj§üh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjoûh²hh³jˆûh´Mæubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jÂüj$ jÂüj% ‰j& ‰j' ‰uh1j˜ h²hhj~Úh³Nh´Nubj) )�”}”(hXC**Parameters** ``struct drm_connector_state *conn_state`` atomic connector state, must not be NULL ``struct drm_connector *connector`` connector object, must not be NULL **Description** Initializes the newly allocated **conn_state** with default values. This is useful for drivers that subclass the connector state.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjÌüh]”hŒ Parameters”…”�”}”(hjÎüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÊüubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MêhjÆüubjw )�”}”(hhh]”(j| )�”}”(hŒT``struct drm_connector_state *conn_state`` atomic connector state, must not be NULL ”h]”(j‚ )�”}”(hŒ*``struct drm_connector_state *conn_state``”h]”jˆ )�”}”(hjëüh]”hŒ&struct drm_connector_state *conn_state”…”�”}”(hjíüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjéüubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´Mçhjåüubjž )�”}”(hhh]”hÎ)�”}”(hŒ(atomic connector state, must not be NULL”h]”hŒ(atomic connector state, must not be NULL”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jýh´Mçhjýubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjåüubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jýh´Mçhjâüubj| )�”}”(hŒG``struct drm_connector *connector`` connector object, must not be NULL ”h]”(j‚ )�”}”(hŒ#``struct drm_connector *connector``”h]”jˆ )�”}”(hj$ýh]”hŒstruct drm_connector *connector”…”�”}”(hj&ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj"ýubah}”(h]”h ]”h"•]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´Mèhjýubjž )�”}”(hhh]”hÎ)�”}”(hŒ"connector object, must not be NULL”h]”hŒ"connector object, must not be NULL”…”�”}”(hj=ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j9ýh´Mèhj:ýubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjýubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j9ýh´Mèhjâüubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÆüubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj_ýh]”hŒ Description”…”�”}”(hjaýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj]ýubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MêhjÆüubhÎ)�”}”(hŒ�Initializes the newly allocated **conn_state** with default values. This is useful for drivers that subclass the connector state.”h]”(hŒ Initializes the newly allocated ”…”�”}”(hjuýh²hh³Nh´Nubj3 )�”}”(hŒ**conn_state**”h]”hŒ conn_state”…”�”}”(hj}ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjuýubhŒS with default values. This is useful for drivers that subclass the connector state.”…”�”}”(hjuýh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MéhjÆüubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj~Úh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ0__drm_atomic_helper_connector_reset (C function)”Œ%c.__drm_atomic_helper_connector_reset”hNt”auh1j† hj~Úh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒrvoid __drm_atomic_helper_connector_reset (struct drm_connector *connector, struct drm_connector_state *conn_state)”h]”j¤ )�”}”(hŒqvoid __drm_atomic_helper_connector_reset(struct drm_connector *connector, struct drm_connector_state *conn_state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¶ýh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj²ýh²hh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.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Œ#__drm_atomic_helper_connector_reset”h]”jÓ )�”}”(hŒ#__drm_atomic_helper_connector_reset”h]”hŒ#__drm_atomic_helper_connector_reset”…”�”}”(hj×ýh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÓýubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj²ýh²hh³jÄýh´MöubjÞ)�”}”(hŒI(struct drm_connector *connector, struct drm_connector_state *conn_state)”h]”(jä)�”}”(hŒstruct drm_connector *connector”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Œ drm_connector”h]”hŒ drm_connector”…”�”}”(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%)�”}”jjÙýsbŒ%c.__drm_atomic_helper_connector_reset”†”asbuh1hhjïýubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1þh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjïýubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj?þh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjïýubjÓ )�”}”(hŒ connector”h]”hŒ connector”…”�”}”(hjLþh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjïýubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjëýubjä)�”}”(hŒ&struct drm_connector_state *conn_state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjeþh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjaþubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrþh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjaþubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_connector_state”h]”hŒdrm_connector_state”…”�”}”(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.__drm_atomic_helper_connector_reset”†”asbuh1hhjaþubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡þh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjaþubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj¯þh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjaþubjÓ )�”}”(hŒ conn_state”h]”hŒ conn_state”…”�”}”(hj¼þh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjaþubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjëýubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj²ýh²hh³jÄýh´Möubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œreset state on connector”h]”hŒreset state on connector”…”�”}”(hjæþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.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²hhj~Úh³Nh´Nubj) )�”}”(hXñ**Parameters** ``struct drm_connector *connector`` drm connector ``struct drm_connector_state *conn_state`` connector state to assign **Description** Initializes the newly allocated **conn_state** and assigns it to the :c:type:`drm_connector->state ` pointer of **connector**, usually required when initializing the drivers or when called from the :c:type:`drm_connector_funcs.reset ` hook. This is useful for drivers that subclass the connector state.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjÿh]”hŒ Parameters”…”�”}”(hj ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÿubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´Múhjÿubjw )�”}”(hhh]”(j| )�”}”(hŒ2``struct drm_connector *connector`` drm connector ”h]”(j‚ )�”}”(hŒ#``struct drm_connector *connector``”h]”jˆ )�”}”(hj'ÿh]”hŒstruct drm_connector *connector”…”�”}”(hj)ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj%ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M÷hj!ÿubjž )�”}”(hhh]”hÎ)�”}”(hŒ drm connector”h]”hŒ drm connector”…”�”}”(hj@ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j<ÿh´M÷hj=ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj!ÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j<ÿh´M÷hjÿubj| )�”}”(hŒE``struct drm_connector_state *conn_state`` connector state to assign ”h]”(j‚ )�”}”(hŒ*``struct drm_connector_state *conn_state``”h]”jˆ )�”}”(hj`ÿh]”hŒ&struct drm_connector_state *conn_state”…”�”}”(hjbÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj^ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MøhjZÿubjž )�”}”(hhh]”hÎ)�”}”(hŒconnector state to assign”h]”hŒconnector state to assign”…”�”}”(hjyÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³juÿh´Møhjvÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjZÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³juÿh´Møhjÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÿubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj›ÿh]”hŒ Description”…”�”}”(hj�ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj™ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MúhjÿubhÎ)�”}”(hXInitializes the newly allocated **conn_state** and assigns it to the :c:type:`drm_connector->state ` pointer of **connector**, usually required when initializing the drivers or when called from the :c:type:`drm_connector_funcs.reset ` hook.”h]”(hŒ Initializes the newly allocated ”…”�”}”(hj±ÿh²hh³Nh´Nubj3 )�”}”(hŒ**conn_state**”h]”hŒ conn_state”…”�”}”(hj¹ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj±ÿubhŒ and assigns it to the ”…”�”}”(hj±ÿh²hh³Nh´Nubh)�”}”(hŒ.:c:type:`drm_connector->state `”h]”jˆ )�”}”(hjÍÿh]”hŒdrm_connector->state”…”�”}”(hjÏÿh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjËÿubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_connector”uh1hh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´Mùhj±ÿubhŒ pointer of ”…”�”}”(hj±ÿh²hh³Nh´Nubj3 )�”}”(hŒ **connector**”h]”hŒ connector”…”�”}”(hjïÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj±ÿubhŒI, usually required when initializing the drivers or when called from the ”…”�”}”(hj±ÿh²hh³Nh´Nubh)�”}”(hŒ9:c:type:`drm_connector_funcs.reset `”h]”jˆ )�”}”(hjh]”hŒdrm_connector_funcs.reset”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_connector_funcs”uh1hh³jêÿh´Mùhj±ÿubhŒ hook.”…”�”}”(hj±ÿh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jêÿh´MùhjÿubhÎ)�”}”(hŒ=This is useful for drivers that subclass the connector state.”h]”hŒ=This is useful for drivers that subclass the connector state.”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´Mþhjÿubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj~Úh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ.drm_atomic_helper_connector_reset (C function)”Œ#c.drm_atomic_helper_connector_reset”hNt”auh1j† hj~Úh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒHvoid drm_atomic_helper_connector_reset (struct drm_connector *connector)”h]”j¤ )�”}”(hŒGvoid drm_atomic_helper_connector_reset(struct drm_connector *connector)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjUh²hh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjUh²hh³jgh´M ubjÍ )�”}”(hŒ!drm_atomic_helper_connector_reset”h]”jÓ )�”}”(hŒ!drm_atomic_helper_connector_reset”h]”hŒ!drm_atomic_helper_connector_reset”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjvubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjUh²hh³jgh´M ubjÞ)�”}”(hŒ!(struct drm_connector *connector)”h]”jä)�”}”(hŒstruct drm_connector *connector”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Œ drm_connector”h]”hŒ drm_connector”…”�”}”(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%)�”}”jj|sbŒ#c.drm_atomic_helper_connector_reset”†”asbuh1hhj’ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj’ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj’ubjÓ )�”}”(hŒ connector”h]”hŒ connector”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj’ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjŽubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjUh²hh³jgh´M ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjQh²hh³jgh´M ubah}”(h]”jLah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jgh´M hjNh²hubj )�”}”(hhh]”hÎ)�”}”(hŒUdefault :c:type:`drm_connector_funcs.reset ` hook for connectors”h]”(hŒdefault ”…”�”}”(hjh²hh³Nh´Nubh)�”}”(hŒ9:c:type:`drm_connector_funcs.reset `”h]”jˆ )�”}”(hj#h]”hŒdrm_connector_funcs.reset”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj!ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jì )�”}”jï ]”jÐŒ#c.drm_atomic_helper_connector_reset”†”asbjñ Œdrm_connector_funcs”uh1hh³j¶Úh´KBhjubhŒ hook for connectors”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M hjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjNh²hh³jgh´M ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jYj$ jYj% ‰j& ‰j' ‰uh1j˜ h²hhj~Úh³Nh´Nubj) )�”}”(hŒõ**Parameters** ``struct drm_connector *connector`` drm connector **Description** Resets the atomic state for **connector** by freeing the state pointer (which might be NULL, e.g. at driver load time) and allocating a new empty state object.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjch]”hŒ Parameters”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjaubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´Mhj]ubjw )�”}”(hhh]”j| )�”}”(hŒ2``struct drm_connector *connector`` drm connector ”h]”(j‚ )�”}”(hŒ#``struct drm_connector *connector``”h]”jˆ )�”}”(hj‚h]”hŒstruct drm_connector *connector”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj€ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´Mhj|ubjž )�”}”(hhh]”hÎ)�”}”(hŒ drm connector”h]”hŒ drm connector”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j—h´Mhj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j—h´Mhjyubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj]ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj½h]”hŒ Description”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj»ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´Mhj]ubhÎ)�”}”(hŒŸResets the atomic state for **connector** by freeing the state pointer (which might be NULL, e.g. at driver load time) and allocating a new empty state object.”h]”(hŒResets the atomic state for ”…”�”}”(hjÓh²hh³Nh´Nubj3 )�”}”(hŒ **connector**”h]”hŒ connector”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÓubhŒv by freeing the state pointer (which might be NULL, e.g. at driver load time) and allocating a new empty state object.”…”�”}”(hjÓh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´Mhj]ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj~Úh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ5drm_atomic_helper_connector_create_state (C function)”Œ*c.drm_atomic_helper_connector_create_state”hNt”auh1j† hj~Úh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒgstruct drm_connector_state * drm_atomic_helper_connector_create_state (struct drm_connector *connector)”h]”j¤ )�”}”(hŒestruct drm_connector_state *drm_atomic_helper_connector_create_state(struct drm_connector *connector)”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjh²hh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M!ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjh²hh³j!h´M!ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_connector_state”h]”hŒdrm_connector_state”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj0ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j5Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jŒ(drm_atomic_helper_connector_create_state”sbŒ*c.drm_atomic_helper_connector_create_state”†”asbuh1hhjh²hh³j!h´M!ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjh²hh³j!h´M!ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjh²hh³j!h´M!ubjÍ )�”}”(hŒ(drm_atomic_helper_connector_create_state”h]”jÓ )�”}”(hjQh]”hŒ(drm_atomic_helper_connector_create_state”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjoubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjh²hh³j!h´M!ubjÞ)�”}”(hŒ!(struct drm_connector *connector)”h]”jä)�”}”(hŒstruct drm_connector *connector”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Œ drm_connector”h]”hŒ drm_connector”…”�”}”(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ï ]”jOŒ*c.drm_atomic_helper_connector_create_state”†”asbuh1hhjŠubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjŠubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŠubjÓ )�”}”(hŒ connector”h]”hŒ connector”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjŠubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj†ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjh²hh³j!h´M!ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj h²hh³j!h´M!ubah}”(h]”jah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j!h´M!hj h²hubj )�”}”(hhh]”hÎ)�”}”(hŒcdefault :c:type:`drm_connector_funcs.atomic_create_state ` hook for connectors”h]”(hŒdefault ”…”�”}”(hjh²hh³Nh´Nubh)�”}”(hŒG:c:type:`drm_connector_funcs.atomic_create_state `”h]”jˆ )�”}”(hjh]”hŒ'drm_connector_funcs.atomic_create_state”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jì )�”}”jï ]”jOŒ*c.drm_atomic_helper_connector_create_state”†”asbjñ Œdrm_connector_funcs”uh1hh³j¶Úh´KBhjubhŒ hook for connectors”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.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# jOj$ jOj% ‰j& ‰j' ‰uh1j˜ h²hhj~Úh³Nh´Nubj) )�”}”(hX"**Parameters** ``struct drm_connector *connector`` connector object **Description** Allocates and initializes pristine **drm_connector_state**. This is useful for drivers that don't subclass **drm_connector_state**. **Return** Pointer to new connector state, or ERR_PTR on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjYh]”hŒ Parameters”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjWubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M%hjSubjw )�”}”(hhh]”j| )�”}”(hŒ5``struct drm_connector *connector`` connector object ”h]”(j‚ )�”}”(hŒ#``struct drm_connector *connector``”h]”jˆ )�”}”(hjxh]”hŒstruct drm_connector *connector”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjvubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M"hjrubjž )�”}”(hhh]”hÎ)�”}”(hŒconnector object”h]”hŒconnector object”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j�h´M"hjŽubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjrubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j�h´M"hjoubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjSubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj³h]”hŒ Description”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj±ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M$hjSubhÎ)�”}”(hŒhj.ubhÎ)�”}”(hŒ9Resets the TV-related properties attached to a connector.”h]”hŒ9Resets the TV-related properties attached to a connector.”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M=hj.ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj~Úh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ1drm_atomic_helper_connector_tv_reset (C function)”Œ&c.drm_atomic_helper_connector_tv_reset”hNt”auh1j† hj~Úh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒKvoid drm_atomic_helper_connector_tv_reset (struct drm_connector *connector)”h]”j¤ )�”}”(hŒJvoid drm_atomic_helper_connector_tv_reset(struct drm_connector *connector)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjÏh²hh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MMubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÏh²hh³jáh´MMubjÍ )�”}”(hŒ$drm_atomic_helper_connector_tv_reset”h]”jÓ )�”}”(hŒ$drm_atomic_helper_connector_tv_reset”h]”hŒ$drm_atomic_helper_connector_tv_reset”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjðubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÏh²hh³jáh´MMubjÞ)�”}”(hŒ!(struct drm_connector *connector)”h]”jä)�”}”(hŒstruct drm_connector *connector”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_connector”h]”hŒ drm_connector”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj+ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j0Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjösbŒ&c.drm_atomic_helper_connector_tv_reset”†”asbuh1hhj ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ubjÓ )�”}”(hŒ connector”h]”hŒ connector”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjÏh²hh³jáh´MMubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjËh²hh³jáh´MMubah}”(h]”jÆah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jáh´MMhjÈh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ%Resets Analog TV connector properties”h]”hŒ%Resets Analog TV connector properties”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MMhj�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÈh²hh³jáh´MMubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j«j$ j«j% ‰j& ‰j' ‰uh1j˜ h²hhj~Úh³Nh´Nubj) )�”}”(hŒ�**Parameters** ``struct drm_connector *connector`` DRM connector **Description** Resets the analog TV properties attached to a connector”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjµh]”hŒ Parameters”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj³ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MQhj¯ubjw )�”}”(hhh]”j| )�”}”(hŒ2``struct drm_connector *connector`` DRM connector ”h]”(j‚ )�”}”(hŒ#``struct drm_connector *connector``”h]”jˆ )�”}”(hjÔh]”hŒstruct drm_connector *connector”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÒubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MNhjÎubjž )�”}”(hhh]”hÎ)�”}”(hŒ DRM connector”h]”hŒ DRM connector”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jéh´MNhjêubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÎubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jéh´MNhjËubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj¯ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjh]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MPhj¯ubhÎ)�”}”(hŒ7Resets the analog TV properties attached to a connector”h]”hŒ7Resets the analog TV properties attached to a connector”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MOhj¯ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj~Úh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ1drm_atomic_helper_connector_tv_check (C function)”Œ&c.drm_atomic_helper_connector_tv_check”hNt”auh1j† hj~Úh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒkint drm_atomic_helper_connector_tv_check (struct drm_connector *connector, struct drm_atomic_commit *state)”h]”j¤ )�”}”(hŒjint drm_atomic_helper_connector_tv_check(struct drm_connector *connector, struct drm_atomic_commit *state)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjPh²hh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M˜ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjPh²hh³jbh´M˜ubjÍ )�”}”(hŒ$drm_atomic_helper_connector_tv_check”h]”jÓ )�”}”(hŒ$drm_atomic_helper_connector_tv_check”h]”hŒ$drm_atomic_helper_connector_tv_check”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjqubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjPh²hh³jbh´M˜ubjÞ)�”}”(hŒB(struct drm_connector *connector, struct drm_atomic_commit *state)”h]”(jä)�”}”(hŒstruct drm_connector *connector”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Œ drm_connector”h]”hŒ drm_connector”…”�”}”(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%)�”}”jjwsbŒ&c.drm_atomic_helper_connector_tv_check”†”asbuh1hhj�ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj�ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�ubjÓ )�”}”(hŒ connector”h]”hŒ connector”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj‰ubjä)�”}”(hŒstruct drm_atomic_commit *state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjÿubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÿubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_atomic_commit”h]”hŒdrm_atomic_commit”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j#Œmodname”NŒ classname”Njé jì )�”}”jï ]”jËŒ&c.drm_atomic_helper_connector_tv_check”†”asbuh1hhjÿubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÿubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÿubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj‰ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjPh²hh³jbh´M˜ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjLh²hh³jbh´M˜ubah}”(h]”jGah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jbh´M˜hjIh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ%Validate an analog TV connector state”h]”hŒ%Validate an analog TV connector state”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M˜hj�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjIh²hh³jbh´M˜ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jœj$ jœj% ‰j& ‰j' ‰uh1j˜ h²hhj~Úh³Nh´Nubj) )�”}”(hX,**Parameters** ``struct drm_connector *connector`` DRM Connector ``struct drm_atomic_commit *state`` the DRM State object **Description** Checks the state object to see if the requested state is valid for an analog TV connector. **Return** ``0`` for success, a negative error code on error.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj¦h]”hŒ Parameters”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´Mœhj ubjw )�”}”(hhh]”(j| )�”}”(hŒ2``struct drm_connector *connector`` DRM Connector ”h]”(j‚ )�”}”(hŒ#``struct drm_connector *connector``”h]”jˆ )�”}”(hjÅh]”hŒstruct drm_connector *connector”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÃubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M™hj¿ubjž )�”}”(hhh]”hÎ)�”}”(hŒ DRM Connector”h]”hŒ DRM Connector”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÚh´M™hjÛubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÚh´M™hj¼ubj| )�”}”(hŒ9``struct drm_atomic_commit *state`` the DRM State object ”h]”(j‚ )�”}”(hŒ#``struct drm_atomic_commit *state``”h]”jˆ )�”}”(hjþh]”hŒstruct drm_atomic_commit *state”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjüubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´Mšhjøubjž )�”}”(hhh]”hÎ)�”}”(hŒthe DRM State object”h]”hŒthe DRM State object”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j h´Mšhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjøubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j h´Mšhj¼ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj9 h]”hŒ Description”…”�”}”(hj; h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj7 ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´Mœhj ubhÎ)�”}”(hŒZChecks the state object to see if the requested state is valid for an analog TV connector.”h]”hŒZChecks the state object to see if the requested state is valid for an analog TV connector.”…”�”}”(hjO h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M›hj ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj` h]”hŒReturn”…”�”}”(hjb h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj^ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´Mžhj ubhÎ)�”}”(hŒ2``0`` for success, a negative error code on error.”h]”(jˆ )�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hjz h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjv ubhŒ- for success, a negative error code on error.”…”�”}”(hjv h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MŸhj ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj~Úh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ:__drm_atomic_helper_connector_duplicate_state (C function)”Œ/c.__drm_atomic_helper_connector_duplicate_state”hNt”auh1j† hj~Úh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒwvoid __drm_atomic_helper_connector_duplicate_state (struct drm_connector *connector, struct drm_connector_state *state)”h]”j¤ )�”}”(hŒvvoid __drm_atomic_helper_connector_duplicate_state(struct drm_connector *connector, struct drm_connector_state *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj³ h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj¯ h²hh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.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Œ-__drm_atomic_helper_connector_duplicate_state”h]”jÓ )�”}”(hŒ-__drm_atomic_helper_connector_duplicate_state”h]”hŒ-__drm_atomic_helper_connector_duplicate_state”…”�”}”(hjÔ h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÐ ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj¯ h²hh³jÁ h´MÉubjÞ)�”}”(hŒD(struct drm_connector *connector, struct drm_connector_state *state)”h]”(jä)�”}”(hŒstruct drm_connector *connector”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Œ drm_connector”h]”hŒ drm_connector”…”�”}”(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%)�”}”jjÖ sbŒ/c.__drm_atomic_helper_connector_duplicate_state”†”asbuh1hhjì ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj. h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjì ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj< h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjì ubjÓ )�”}”(hŒ connector”h]”hŒ connector”…”�”}”(hjI h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjì ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjè ubjä)�”}”(hŒ!struct drm_connector_state *state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjb h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj^ ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjo h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj^ ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_connector_state”h]”hŒdrm_connector_state”…”�”}”(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.__drm_atomic_helper_connector_duplicate_state”†”asbuh1hhj^ ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjž h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj^ ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj¬ h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj^ ubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hj¹ h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj^ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjè ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj¯ h²hh³jÁ h´MÉubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œcopy atomic connector state”h]”hŒcopy atomic connector state”…”�”}”(hjã h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.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²hhj~Úh³Nh´Nubj) )�”}”(hX **Parameters** ``struct drm_connector *connector`` connector object ``struct drm_connector_state *state`` atomic connector state **Description** Copies atomic state from a connector's current state. This is useful for drivers that subclass the connector state.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj h]”hŒ Parameters”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MÍhjÿ ubjw )�”}”(hhh]”(j| )�”}”(hŒ5``struct drm_connector *connector`` connector object ”h]”(j‚ )�”}”(hŒ#``struct drm_connector *connector``”h]”jˆ )�”}”(hj$ h]”hŒstruct drm_connector *connector”…”�”}”(hj& h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj" ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MÊhj ubjž )�”}”(hhh]”hÎ)�”}”(hŒconnector object”h]”hŒconnector object”…”�”}”(hj= h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j9 h´MÊhj: ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j9 h´MÊhj ubj| )�”}”(hŒ=``struct drm_connector_state *state`` atomic connector state ”h]”(j‚ )�”}”(hŒ%``struct drm_connector_state *state``”h]”jˆ )�”}”(hj] h]”hŒ!struct drm_connector_state *state”…”�”}”(hj_ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj[ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MËhjW ubjž )�”}”(hhh]”hÎ)�”}”(hŒatomic connector state”h]”hŒatomic connector state”…”�”}”(hjv h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jr h´MËhjs ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjW ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jr h´MËhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÿ ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj˜ h]”hŒ Description”…”�”}”(hjš h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj– ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MÍhjÿ ubhÎ)�”}”(hŒsCopies atomic state from a connector's current state. This is useful for drivers that subclass the connector state.”h]”hŒuCopies atomic state from a connector’s current state. This is useful for drivers that subclass the connector state.”…”�”}”(hj® h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MÌhjÿ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj~Úh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ8drm_atomic_helper_connector_duplicate_state (C function)”Œ-c.drm_atomic_helper_connector_duplicate_state”hNt”auh1j† hj~Úh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒjstruct drm_connector_state * drm_atomic_helper_connector_duplicate_state (struct drm_connector *connector)”h]”j¤ )�”}”(hŒhstruct drm_connector_state *drm_atomic_helper_connector_duplicate_state(struct drm_connector *connector)”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjÝ h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjÙ h²hh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.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âubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_connector_state”h]”hŒdrm_connector_state”…”�”}”(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Œ+drm_atomic_helper_connector_duplicate_state”sbŒ-c.drm_atomic_helper_connector_duplicate_state”†”asbuh1hhjÙ h²hh³jê h´Mâubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÙ h²hh³jê h´Mâubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj+ h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÙ h²hh³jê h´MâubjÍ )�”}”(hŒ+drm_atomic_helper_connector_duplicate_state”h]”jÓ )�”}”(hj h]”hŒ+drm_atomic_helper_connector_duplicate_state”…”�”}”(hj< h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj8 ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÙ h²hh³jê h´MâubjÞ)�”}”(hŒ!(struct drm_connector *connector)”h]”jä)�”}”(hŒstruct drm_connector *connector”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjW h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjS ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjd h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjS ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_connector”h]”hŒ drm_connector”…”�”}”(hju h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjr ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jw Œmodname”NŒ classname”Njé jì )�”}”jï ]”j Œ-c.drm_atomic_helper_connector_duplicate_state”†”asbuh1hhjS ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“ h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjS ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj¡ h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjS ubjÓ )�”}”(hŒ connector”h]”hŒ connector”…”�”}”(hj® h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjS ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjO ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjÙ h²hh³jê h´Mâubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œdefault state duplicate hook”h]”hŒdefault state duplicate hook”…”�”}”(hjØ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.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²hhj~Úh³Nh´Nubj) )�”}”(hŒÉ**Parameters** ``struct drm_connector *connector`` drm connector **Description** Default connector state duplicate hook for drivers which don't have their own subclassed connector state structure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjú h]”hŒ Parameters”…”�”}”(hjü h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjø ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´Mæhjô ubjw )�”}”(hhh]”j| )�”}”(hŒ2``struct drm_connector *connector`` drm connector ”h]”(j‚ )�”}”(hŒ#``struct drm_connector *connector``”h]”jˆ )�”}”(hj h]”hŒstruct drm_connector *connector”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´Mãhj ubjž )�”}”(hhh]”hÎ)�”}”(hŒ drm connector”h]”hŒ drm connector”…”�”}”(hj2 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j. h´Mãhj/ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j. h´Mãhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjô ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjT h]”hŒ Description”…”�”}”(hjV h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjR ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´Måhjô ubhÎ)�”}”(hŒsDefault connector state duplicate hook for drivers which don't have their own subclassed connector state structure.”h]”hŒuDefault connector state duplicate hook for drivers which don’t have their own subclassed connector state structure.”…”�”}”(hjj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´Mähjô ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj~Úh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ8__drm_atomic_helper_connector_destroy_state (C function)”Œ-c.__drm_atomic_helper_connector_destroy_state”hNt”auh1j† hj~Úh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒTvoid __drm_atomic_helper_connector_destroy_state (struct drm_connector_state *state)”h]”j¤ )�”}”(hŒSvoid __drm_atomic_helper_connector_destroy_state(struct drm_connector_state *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj™ h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj• h²hh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.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Œ+__drm_atomic_helper_connector_destroy_state”h]”jÓ )�”}”(hŒ+__drm_atomic_helper_connector_destroy_state”h]”hŒ+__drm_atomic_helper_connector_destroy_state”…”�”}”(hjº h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¶ ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj• h²hh³j§ h´MùubjÞ)�”}”(hŒ#(struct drm_connector_state *state)”h]”jä)�”}”(hŒ!struct drm_connector_state *state”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Œdrm_connector_state”h]”hŒdrm_connector_state”…”�”}”(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%)�”}”jj¼ sbŒ-c.__drm_atomic_helper_connector_destroy_state”†”asbuh1hhjÒ ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÒ ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÒ ubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÒ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÎ ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj• h²hh³j§ h´Mùubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œrelease connector state”h]”hŒrelease connector state”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MùhjVh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjŽ h²hh³j§ h´Mùubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jqj$ jqj% ‰j& ‰j' ‰uh1j˜ h²hhj~Úh³Nh´Nubj) )�”}”(hX**Parameters** ``struct drm_connector_state *state`` connector state object to release **Description** Releases all resources stored in the connector state without actually freeing the memory of the connector state. This is useful for drivers that subclass the connector state.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj{h]”hŒ Parameters”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjyubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´Mýhjuubjw )�”}”(hhh]”j| )�”}”(hŒH``struct drm_connector_state *state`` connector state object to release ”h]”(j‚ )�”}”(hŒ%``struct drm_connector_state *state``”h]”jˆ )�”}”(hjšh]”hŒ!struct drm_connector_state *state”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´Múhj”ubjž )�”}”(hhh]”hÎ)�”}”(hŒ!connector state object to release”h]”hŒ!connector state object to release”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¯h´Múhj°ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¯h´Múhj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjuubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjÕh]”hŒ Description”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÓubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MühjuubhÎ)�”}”(hŒ®Releases all resources stored in the connector state without actually freeing the memory of the connector state. This is useful for drivers that subclass the connector state.”h]”hŒ®Releases all resources stored in the connector state without actually freeing the memory of the connector state. This is useful for drivers that subclass the connector state.”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´Mûhjuubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj~Úh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ6drm_atomic_helper_connector_destroy_state (C function)”Œ+c.drm_atomic_helper_connector_destroy_state”hNt”auh1j† hj~Úh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒsvoid drm_atomic_helper_connector_destroy_state (struct drm_connector *connector, struct drm_connector_state *state)”h]”j¤ )�”}”(hŒrvoid drm_atomic_helper_connector_destroy_state(struct drm_connector *connector, struct drm_connector_state *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjh²hh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjh²hh³j(h´MubjÍ )�”}”(hŒ)drm_atomic_helper_connector_destroy_state”h]”jÓ )�”}”(hŒ)drm_atomic_helper_connector_destroy_state”h]”hŒ)drm_atomic_helper_connector_destroy_state”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj7ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjh²hh³j(h´MubjÞ)�”}”(hŒD(struct drm_connector *connector, struct drm_connector_state *state)”h]”(jä)�”}”(hŒstruct drm_connector *connector”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjSubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjSubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_connector”h]”hŒ drm_connector”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjrubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jwŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj=sbŒ+c.drm_atomic_helper_connector_destroy_state”†”asbuh1hhjSubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjSubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjSubjÓ )�”}”(hŒ connector”h]”hŒ connector”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjSubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjOubjä)�”}”(hŒ!struct drm_connector_state *state”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Œdrm_connector_state”h]”hŒdrm_connector_state”…”�”}”(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.drm_atomic_helper_connector_destroy_state”†”asbuh1hhjÅubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÅubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÅubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÅubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjOubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjh²hh³j(h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjh²hh³j(h´Mubah}”(h]”j ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j(h´Mhjh²hubj )�”}”(hhh]”hÎ)�”}”(hŒdefault state destroy hook”h]”hŒdefault state destroy hook”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MhjGh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjh²hh³j(h´Mubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jbj$ jbj% ‰j& ‰j' ‰uh1j˜ h²hhj~Úh³Nh´Nubj) )�”}”(hX**Parameters** ``struct drm_connector *connector`` drm connector ``struct drm_connector_state *state`` connector state object to release **Description** Default connector state destroy hook for drivers which don't have their own subclassed connector state structure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjlh]”hŒ Parameters”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´Mhjfubjw )�”}”(hhh]”(j| )�”}”(hŒ2``struct drm_connector *connector`` drm connector ”h]”(j‚ )�”}”(hŒ#``struct drm_connector *connector``”h]”jˆ )�”}”(hj‹h]”hŒstruct drm_connector *connector”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´Mhj…ubjž )�”}”(hhh]”hÎ)�”}”(hŒ drm connector”h]”hŒ drm connector”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j h´Mhj¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j h´Mhj‚ubj| )�”}”(hŒH``struct drm_connector_state *state`` connector state object to release ”h]”(j‚ )�”}”(hŒ%``struct drm_connector_state *state``”h]”jˆ )�”}”(hjÄh]”hŒ!struct drm_connector_state *state”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÂubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´Mhj¾ubjž )�”}”(hhh]”hÎ)�”}”(hŒ!connector state object to release”h]”hŒ!connector state object to release”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÙh´MhjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÙh´Mhj‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjfubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjÿh]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjýubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MhjfubhÎ)�”}”(hŒqDefault connector state destroy hook for drivers which don't have their own subclassed connector state structure.”h]”hŒsDefault connector state destroy hook for drivers which don’t have their own subclassed connector state structure.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´Mhjfubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj~Úh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ9__drm_atomic_helper_private_obj_create_state (C function)”Œ.c.__drm_atomic_helper_private_obj_create_state”hNt”auh1j† hj~Úh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒpvoid __drm_atomic_helper_private_obj_create_state (struct drm_private_obj *obj, struct drm_private_state *state)”h]”j¤ )�”}”(hŒovoid __drm_atomic_helper_private_obj_create_state(struct drm_private_obj *obj, struct drm_private_state *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj@h²hh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M!ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj@h²hh³jRh´M!ubjÍ )�”}”(hŒ,__drm_atomic_helper_private_obj_create_state”h]”jÓ )�”}”(hŒ,__drm_atomic_helper_private_obj_create_state”h]”hŒ,__drm_atomic_helper_private_obj_create_state”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjaubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj@h²hh³jRh´M!ubjÞ)�”}”(hŒ>(struct drm_private_obj *obj, struct drm_private_state *state)”h]”(jä)�”}”(hŒstruct drm_private_obj *obj”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j¶ a•;h"]”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Œdrm_private_obj”h]”hŒdrm_private_obj”…”�”}”(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%)�”}”jjgsbŒ.c.__drm_atomic_helper_private_obj_create_state”†”asbuh1hhj}ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj}ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj}ubjÓ )�”}”(hŒobj”h]”hŒobj”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj}ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjyubjä)�”}”(hŒstruct drm_private_state *state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjïubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjïubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_private_state”h]”hŒdrm_private_state”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jŒmodname”NŒ classname”Njé jì )�”}”jï ]”j»Œ.c.__drm_atomic_helper_private_obj_create_state”†”asbuh1hhjïubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjïubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjïubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjïubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjyubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj@h²hh³jRh´M!ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj<h²hh³jRh´M!ubah}”(h]”j7ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jRh´M!hj9h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ initializes private object state”h]”hŒ initializes private object state”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M!hjqh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj9h²hh³jRh´M!ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jŒj$ jŒj% ‰j& ‰j' ‰uh1j˜ h²hhj~Úh³Nh´Nubj) )�”}”(hXC**Parameters** ``struct drm_private_obj *obj`` private object ``struct drm_private_state *state`` new state to initialize **Description** Initializes the newly allocated **state**, usually required when initializing the drivers. **obj** is assumed to be zeroed. This is useful for drivers that use private states.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj–h]”hŒ Parameters”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj”ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M%hj�ubjw )�”}”(hhh]”(j| )�”}”(hŒ/``struct drm_private_obj *obj`` private object ”h]”(j‚ )�”}”(hŒ``struct drm_private_obj *obj``”h]”jˆ )�”}”(hjµh]”hŒstruct drm_private_obj *obj”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj³ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M"hj¯ubjž )�”}”(hhh]”hÎ)�”}”(hŒprivate object”h]”hŒprivate object”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÊh´M"hjËubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÊh´M"hj¬ubj| )�”}”(hŒ<``struct drm_private_state *state`` new state to initialize ”h]”(j‚ )�”}”(hŒ#``struct drm_private_state *state``”h]”jˆ )�”}”(hjîh]”hŒstruct drm_private_state *state”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjìubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M#hjèubjž )�”}”(hhh]”hÎ)�”}”(hŒnew state to initialize”h]”hŒnew state to initialize”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jh´M#hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjèubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jh´M#hj¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj�ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj)h]”hŒ Description”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M%hj�ubhÎ)�”}”(hŒZInitializes the newly allocated **state**, usually required when initializing the drivers.”h]”(hŒ Initializes the newly allocated ”…”�”}”(hj?h²hh³Nh´Nubj3 )�”}”(hŒ **state**”h]”hŒstate”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj?ubhŒ1, usually required when initializing the drivers.”…”�”}”(hj?h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M$hj�ubhÎ)�”}”(hŒ **obj** is assumed to be zeroed.”h]”(j3 )�”}”(hŒ**obj**”h]”hŒobj”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj`ubhŒ is assumed to be zeroed.”…”�”}”(hj`h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M'hj�ubhÎ)�”}”(hŒ3This is useful for drivers that use private states.”h]”hŒ3This is useful for drivers that use private states.”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M)hj�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj~Úh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ<__drm_atomic_helper_private_obj_duplicate_state (C function)”Œ1c.__drm_atomic_helper_private_obj_duplicate_state”hNt”auh1j† hj~Úh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒsvoid __drm_atomic_helper_private_obj_duplicate_state (struct drm_private_obj *obj, struct drm_private_state *state)”h]”j¤ )�”}”(hŒrvoid __drm_atomic_helper_private_obj_duplicate_state(struct drm_private_obj *obj, struct drm_private_state *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj¨h²hh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M5ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¨h²hh³jºh´M5ubjÍ )�”}”(hŒ/__drm_atomic_helper_private_obj_duplicate_state”h]”jÓ )�”}”(hŒ/__drm_atomic_helper_private_obj_duplicate_state”h]”hŒ/__drm_atomic_helper_private_obj_duplicate_state”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÉubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj¨h²hh³jºh´M5ubjÞ)�”}”(hŒ>(struct drm_private_obj *obj, struct drm_private_state *state)”h]”(jä)�”}”(hŒstruct drm_private_obj *obj”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Œdrm_private_obj”h]”hŒdrm_private_obj”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjÏsbŒ1c.__drm_atomic_helper_private_obj_duplicate_state”†”asbuh1hhjåubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjåubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjåubjÓ )�”}”(hŒobj”h]”hŒobj”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjåubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjáubjä)�”}”(hŒstruct drm_private_state *state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjWubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjWubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_private_state”h]”hŒdrm_private_state”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjvubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j{Œmodname”NŒ classname”Njé jì )�”}”jï ]”j#Œ1c.__drm_atomic_helper_private_obj_duplicate_state”†”asbuh1hhjWubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjWubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjWubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjWubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjáubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj¨h²hh³jºh´M5ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj¤h²hh³jºh´M5ubah}”(h]”jŸah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jºh´M5hj¡h²hubj )�”}”(hhh]”hÎ)�”}”(hŒcopy atomic private state”h]”hŒcopy atomic private state”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M5hjÙh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¡h²hh³jºh´M5ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jôj$ jôj% ‰j& ‰j' ‰uh1j˜ h²hhj~Úh³Nh´Nubj) )�”}”(hX"**Parameters** ``struct drm_private_obj *obj`` CRTC object ``struct drm_private_state *state`` new private object state **Description** Copies atomic state from a private objects's current state and resets inferred values. This is useful for drivers that subclass the private state.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjþh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjüubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M9hjøubjw )�”}”(hhh]”(j| )�”}”(hŒ,``struct drm_private_obj *obj`` CRTC object ”h]”(j‚ )�”}”(hŒ``struct drm_private_obj *obj``”h]”jˆ )�”}”(hjh]”hŒstruct drm_private_obj *obj”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M6hjubjž )�”}”(hhh]”hÎ)�”}”(hŒ CRTC object”h]”hŒ CRTC object”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j2h´M6hj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j2h´M6hjubj| )�”}”(hŒ=``struct drm_private_state *state`` new private object state ”h]”(j‚ )�”}”(hŒ#``struct drm_private_state *state``”h]”jˆ )�”}”(hjVh]”hŒstruct drm_private_state *state”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjTubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M7hjPubjž )�”}”(hhh]”hÎ)�”}”(hŒnew private object state”h]”hŒnew private object state”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jkh´M7hjlubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjPubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jkh´M7hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjøubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj‘h]”hŒ Description”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M9hjøubhÎ)�”}”(hŒ’Copies atomic state from a private objects's current state and resets inferred values. This is useful for drivers that subclass the private state.”h]”hŒ”Copies atomic state from a private objects’s current state and resets inferred values. This is useful for drivers that subclass the private state.”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M8hjøubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj~Úh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ7__drm_atomic_helper_bridge_duplicate_state (C function)”Œ,c.__drm_atomic_helper_bridge_duplicate_state”hNt”auh1j† hj~Úh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒkvoid __drm_atomic_helper_bridge_duplicate_state (struct drm_bridge *bridge, struct drm_bridge_state *state)”h]”j¤ )�”}”(hŒjvoid __drm_atomic_helper_bridge_duplicate_state(struct drm_bridge *bridge, struct drm_bridge_state *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjÒh²hh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MDubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÒh²hh³jäh´MDubjÍ )�”}”(hŒ*__drm_atomic_helper_bridge_duplicate_state”h]”jÓ )�”}”(hŒ*__drm_atomic_helper_bridge_duplicate_state”h]”hŒ*__drm_atomic_helper_bridge_duplicate_state”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjóubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÒh²hh³jäh´MDubjÞ)�”}”(hŒ;(struct drm_bridge *bridge, struct drm_bridge_state *state)”h]”(jä)�”}”(hŒstruct drm_bridge *bridge”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(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Œ drm_bridge”h]”hŒ drm_bridge”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj.ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j3Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjùsbŒ,c.__drm_atomic_helper_bridge_duplicate_state”†”asbuh1hhjubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjubjÓ )�”}”(hŒbridge”h]”hŒbridge”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj ubjä)�”}”(hŒstruct drm_bridge_state *state”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Œdrm_bridge_state”h]”hŒdrm_bridge_state”…”�”}”(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ï ]”jMŒ,c.__drm_atomic_helper_bridge_duplicate_state”†”asbuh1hhj�ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj�ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�ubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjÒh²hh³jäh´MDubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjÎh²hh³jäh´MDubah}”(h]”jÉah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jäh´MDhjËh²hubj )�”}”(hhh]”hÎ)�”}”(hŒCopy atomic bridge state”h]”hŒCopy atomic bridge state”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MDhjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjËh²hh³jäh´MDubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jj$ jj% ‰j& ‰j' ‰uh1j˜ h²hhj~Úh³Nh´Nubj) )�”}”(hX**Parameters** ``struct drm_bridge *bridge`` bridge object ``struct drm_bridge_state *state`` atomic bridge state **Description** Copies atomic state from a bridge's current state and resets inferred values. This is useful for drivers that subclass the bridge state.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj(h]”hŒ Parameters”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MHhj"ubjw )�”}”(hhh]”(j| )�”}”(hŒ,``struct drm_bridge *bridge`` bridge object ”h]”(j‚ )�”}”(hŒ``struct drm_bridge *bridge``”h]”jˆ )�”}”(hjGh]”hŒstruct drm_bridge *bridge”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjEubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MEhjAubjž )�”}”(hhh]”hÎ)�”}”(hŒ bridge object”h]”hŒ bridge object”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j\h´MEhj]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjAubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j\h´MEhj>ubj| )�”}”(hŒ7``struct drm_bridge_state *state`` atomic bridge state ”h]”(j‚ )�”}”(hŒ"``struct drm_bridge_state *state``”h]”jˆ )�”}”(hj€h]”hŒstruct drm_bridge_state *state”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MFhjzubjž )�”}”(hhh]”hÎ)�”}”(hŒatomic bridge state”h]”hŒatomic bridge state”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j•h´MFhj–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjzubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j•h´MFhj>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj"ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj»h]”hŒ Description”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MHhj"ubhÎ)�”}”(hŒˆCopies atomic state from a bridge's current state and resets inferred values. This is useful for drivers that subclass the bridge state.”h]”hŒŠCopies atomic state from a bridge’s current state and resets inferred values. This is useful for drivers that subclass the bridge state.”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MGhj"ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj~Úh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ5drm_atomic_helper_bridge_duplicate_state (C function)”Œ*c.drm_atomic_helper_bridge_duplicate_state”hNt”auh1j† hj~Úh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ^struct drm_bridge_state * drm_atomic_helper_bridge_duplicate_state (struct drm_bridge *bridge)”h]”j¤ )�”}”(hŒ\struct drm_bridge_state *drm_atomic_helper_bridge_duplicate_state(struct drm_bridge *bridge)”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjüh²hh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MUubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjüh²hh³j h´MUubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_bridge_state”h]”hŒdrm_bridge_state”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j!Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jŒ(drm_atomic_helper_bridge_duplicate_state”sbŒ*c.drm_atomic_helper_bridge_duplicate_state”†”asbuh1hhjüh²hh³j h´MUubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjüh²hh³j h´MUubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjüh²hh³j h´MUubjÍ )�”}”(hŒ(drm_atomic_helper_bridge_duplicate_state”h]”jÓ )�”}”(hj=h]”hŒ(drm_atomic_helper_bridge_duplicate_state”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj[ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjüh²hh³j h´MUubjÞ)�”}”(hŒ(struct drm_bridge *bridge)”h]”jä)�”}”(hŒstruct drm_bridge *bridge”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjvubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjvubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_bridge”h]”hŒ drm_bridge”…”�”}”(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.drm_atomic_helper_bridge_duplicate_state”†”asbuh1hhjvubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjvubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjvubjÓ )�”}”(hŒbridge”h]”hŒbridge”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjvubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjrubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjüh²hh³j h´MUubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjøh²hh³j h´MUubah}”(h]”jóah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j h´MUhjõh²hubj )�”}”(hhh]”hÎ)�”}”(hŒDuplicate a bridge state object”h]”hŒDuplicate a bridge state object”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MUhjøh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjõh²hh³j h´MUubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jj$ jj% ‰j& ‰j' ‰uh1j˜ h²hhj~Úh³Nh´Nubj) )�”}”(hXM**Parameters** ``struct drm_bridge *bridge`` bridge object **Description** Allocates a new bridge state and initializes it with the current bridge state values. This helper is meant to be used as a bridge :c:type:`drm_bridge_funcs.atomic_duplicate_state ` hook for bridges that don't subclass the bridge state.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MYhjubjw )�”}”(hhh]”j| )�”}”(hŒ,``struct drm_bridge *bridge`` bridge object ”h]”(j‚ )�”}”(hŒ``struct drm_bridge *bridge``”h]”jˆ )�”}”(hj<h]”hŒstruct drm_bridge *bridge”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MVhj6ubjž )�”}”(hhh]”hÎ)�”}”(hŒ bridge object”h]”hŒ bridge object”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jQh´MVhjRubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jQh´MVhj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjwh]”hŒ Description”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjuubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MXhjubhÎ)�”}”(hŒýAllocates a new bridge state and initializes it with the current bridge state values. This helper is meant to be used as a bridge :c:type:`drm_bridge_funcs.atomic_duplicate_state ` hook for bridges that don't subclass the bridge state.”h]”(hŒ‚Allocates a new bridge state and initializes it with the current bridge state values. This helper is meant to be used as a bridge ”…”�”}”(hj�h²hh³Nh´Nubh)�”}”(hŒD:c:type:`drm_bridge_funcs.atomic_duplicate_state `”h]”jˆ )�”}”(hj—h]”hŒ'drm_bridge_funcs.atomic_duplicate_state”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj•ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MWhj�ubhŒ9 hook for bridges that don’t subclass the bridge state.”…”�”}”(hj�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j´h´MWhjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj~Úh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ3drm_atomic_helper_bridge_destroy_state (C function)”Œ(c.drm_atomic_helper_bridge_destroy_state”hNt”auh1j† hj~Úh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒgvoid drm_atomic_helper_bridge_destroy_state (struct drm_bridge *bridge, struct drm_bridge_state *state)”h]”j¤ )�”}”(hŒfvoid drm_atomic_helper_bridge_destroy_state(struct drm_bridge *bridge, struct drm_bridge_state *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjÛh²hh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´Mnubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÛh²hh³jíh´MnubjÍ )�”}”(hŒ&drm_atomic_helper_bridge_destroy_state”h]”jÓ )�”}”(hŒ&drm_atomic_helper_bridge_destroy_state”h]”hŒ&drm_atomic_helper_bridge_destroy_state”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjüubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÛh²hh³jíh´MnubjÞ)�”}”(hŒ;(struct drm_bridge *bridge, struct drm_bridge_state *state)”h]”(jä)�”}”(hŒstruct drm_bridge *bridge”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(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Œ drm_bridge”h]”hŒ drm_bridge”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj7ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j<Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjsbŒ(c.drm_atomic_helper_bridge_destroy_state”†”asbuh1hhjubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjubjÓ )�”}”(hŒbridge”h]”hŒbridge”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjubjä)�”}”(hŒstruct drm_bridge_state *state”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Œdrm_bridge_state”h]”hŒdrm_bridge_state”…”�”}”(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ï ]”jVŒ(c.drm_atomic_helper_bridge_destroy_state”†”asbuh1hhjŠubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjŠubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŠubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjŠubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjÛh²hh³jíh´Mnubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj×h²hh³jíh´Mnubah}”(h]”jÒah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jíh´MnhjÔh²hubj )�”}”(hhh]”hÎ)�”}”(hŒDestroy a bridge state object”h]”hŒDestroy a bridge state object”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´Mnhj h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÔh²hh³jíh´Mnubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j'j$ j'j% ‰j& ‰j' ‰uh1j˜ h²hhj~Úh³Nh´Nubj) )�”}”(hXÞ**Parameters** ``struct drm_bridge *bridge`` the bridge this state refers to ``struct drm_bridge_state *state`` bridge state to destroy **Description** Destroys a bridge state previously created by :c:type:`drm_atomic_helper_bridge_create_state`() or :c:type:`drm_atomic_helper_bridge_duplicate_state`(). This helper is meant to be used as a bridge :c:type:`drm_bridge_funcs.atomic_destroy_state ` hook for bridges that don't subclass the bridge state.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj1h]”hŒ Parameters”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´Mrhj+ubjw )�”}”(hhh]”(j| )�”}”(hŒ>``struct drm_bridge *bridge`` the bridge this state refers to ”h]”(j‚ )�”}”(hŒ``struct drm_bridge *bridge``”h]”jˆ )�”}”(hjPh]”hŒstruct drm_bridge *bridge”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjNubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MohjJubjž )�”}”(hhh]”hÎ)�”}”(hŒthe bridge this state refers to”h]”hŒthe bridge this state refers to”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jeh´Mohjfubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjJubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jeh´MohjGubj| )�”}”(hŒ;``struct drm_bridge_state *state`` bridge state to destroy ”h]”(j‚ )�”}”(hŒ"``struct drm_bridge_state *state``”h]”jˆ )�”}”(hj‰h]”hŒstruct drm_bridge_state *state”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´Mphjƒubjž )�”}”(hhh]”hÎ)�”}”(hŒbridge state to destroy”h]”hŒbridge state to destroy”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jžh´MphjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jžh´MphjGubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj+ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjÄh]”hŒ Description”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÂubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´Mrhj+ubhÎ)�”}”(hX>Destroys a bridge state previously created by :c:type:`drm_atomic_helper_bridge_create_state`() or :c:type:`drm_atomic_helper_bridge_duplicate_state`(). This helper is meant to be used as a bridge :c:type:`drm_bridge_funcs.atomic_destroy_state ` hook for bridges that don't subclass the bridge state.”h]”(hŒ.Destroys a bridge state previously created by ”…”�”}”(hjÚh²hh³Nh´Nubh)�”}”(hŒÙ:c:type:`drm_atomic_helper_bridge_create_state`() or :c:type:`drm_atomic_helper_bridge_duplicate_state`(). This helper is meant to be used as a bridge :c:type:`drm_bridge_funcs.atomic_destroy_state `”h]”jˆ )�”}”(hjäh]”hŒ¼drm_atomic_helper_bridge_create_state`() or :c:type:`drm_atomic_helper_bridge_duplicate_state`(). This helper is meant to be used as a bridge :c:type:`drm_bridge_funcs.atomic_destroy_state”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjâubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MqhjÚubhŒ9 hook for bridges that don’t subclass the bridge state.”…”�”}”(hjÚh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jh´Mqhj+ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj~Úh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ2__drm_atomic_helper_bridge_state_init (C function)”Œ'c.__drm_atomic_helper_bridge_state_init”hNt”auh1j† hj~Úh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒfvoid __drm_atomic_helper_bridge_state_init (struct drm_bridge_state *state, struct drm_bridge *bridge)”h]”j¤ )�”}”(hŒevoid __drm_atomic_helper_bridge_state_init(struct drm_bridge_state *state, struct drm_bridge *bridge)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj(h²hh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.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Œ%__drm_atomic_helper_bridge_state_init”h]”jÓ )�”}”(hŒ%__drm_atomic_helper_bridge_state_init”h]”hŒ%__drm_atomic_helper_bridge_state_init”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjIubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj(h²hh³j:h´M€ubjÞ)�”}”(hŒ;(struct drm_bridge_state *state, struct drm_bridge *bridge)”h]”(jä)�”}”(hŒstruct drm_bridge_state *state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(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Œdrm_bridge_state”h]”hŒdrm_bridge_state”…”�”}”(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%)�”}”jjOsbŒ'c.__drm_atomic_helper_bridge_state_init”†”asbuh1hhjeubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjeubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjeubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjeubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjaubjä)�”}”(hŒstruct drm_bridge *bridge”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Œ drm_bridge”h]”hŒ drm_bridge”…”�”}”(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.__drm_atomic_helper_bridge_state_init”†”asbuh1hhj×ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj×ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj×ubjÓ )�”}”(hŒbridge”h]”hŒbridge”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj×ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjaubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj(h²hh³j:h´M€ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj$h²hh³j:h´M€ubah}”(h]”jah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j:h´M€hj!h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ(Initialize a bridge state to its default”h]”hŒ(Initialize a bridge state to its default”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M€hjYh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj!h²hh³j:h´M€ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jtj$ jtj% ‰j& ‰j' ‰uh1j˜ h²hhj~Úh³Nh´Nubj) )�”}”(hX’**Parameters** ``struct drm_bridge_state *state`` bridge state to initialize ``struct drm_bridge *bridge`` the bridge this state refers to **Description** **state** is assumed to be zeroed. Initializes the bridge state to default values. This is meant to be called by the bridge :c:type:`drm_bridge_funcs.atomic_create_state ` hook for bridges that subclass the bridge state.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj~h]”hŒ Parameters”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj|ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M„hjxubjw )�”}”(hhh]”(j| )�”}”(hŒ>``struct drm_bridge_state *state`` bridge state to initialize ”h]”(j‚ )�”}”(hŒ"``struct drm_bridge_state *state``”h]”jˆ )�”}”(hj�h]”hŒstruct drm_bridge_state *state”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj›ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M‚hj—ubjž )�”}”(hhh]”hÎ)�”}”(hŒbridge state to initialize”h]”hŒbridge state to initialize”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j²h´M‚hj³ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j²h´M‚hj”ubj| )�”}”(hŒ>``struct drm_bridge *bridge`` the bridge this state refers to ”h]”(j‚ )�”}”(hŒ``struct drm_bridge *bridge``”h]”jˆ )�”}”(hjÖh]”hŒstruct drm_bridge *bridge”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÔubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MƒhjÐubjž )�”}”(hhh]”hÎ)�”}”(hŒthe bridge this state refers to”h]”hŒthe bridge this state refers to”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jëh´Mƒhjìubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÐubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jëh´Mƒhj”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjxubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjh]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M…hjxubhÎ)�”}”(hŒ"**state** is assumed to be zeroed.”h]”(j3 )�”}”(hŒ **state**”h]”hŒstate”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj'ubhŒ is assumed to be zeroed.”…”�”}”(hj'h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M„hjxubhÎ)�”}”(hŒËInitializes the bridge state to default values. This is meant to be called by the bridge :c:type:`drm_bridge_funcs.atomic_create_state ` hook for bridges that subclass the bridge state.”h]”(hŒYInitializes the bridge state to default values. This is meant to be called by the bridge ”…”�”}”(hjDh²hh³Nh´Nubh)�”}”(hŒA:c:type:`drm_bridge_funcs.atomic_create_state `”h]”jˆ )�”}”(hjNh]”hŒ$drm_bridge_funcs.atomic_create_state”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjLubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M†hjDubhŒ1 hook for bridges that subclass the bridge state.”…”�”}”(hjDh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jkh´M†hjxubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj~Úh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ2drm_atomic_helper_bridge_create_state (C function)”Œ'c.drm_atomic_helper_bridge_create_state”hNt”auh1j† hj~Úh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ[struct drm_bridge_state * drm_atomic_helper_bridge_create_state (struct drm_bridge *bridge)”h]”j¤ )�”}”(hŒYstruct drm_bridge_state *drm_atomic_helper_bridge_create_state(struct drm_bridge *bridge)”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj’h²hh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.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”ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_bridge_state”h]”hŒdrm_bridge_state”…”�”}”(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Œ%drm_atomic_helper_bridge_create_state”sbŒ'c.drm_atomic_helper_bridge_create_state”†”asbuh1hhj’h²hh³j£h´M”ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj’h²hh³j£h´M”ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj’h²hh³j£h´M”ubjÍ )�”}”(hŒ%drm_atomic_helper_bridge_create_state”h]”jÓ )�”}”(hjÓh]”hŒ%drm_atomic_helper_bridge_create_state”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjñubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj’h²hh³j£h´M”ubjÞ)�”}”(hŒ(struct drm_bridge *bridge)”h]”jä)�”}”(hŒstruct drm_bridge *bridge”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_bridge”h]”hŒ drm_bridge”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj+ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j0Œmodname”NŒ classname”Njé jì )�”}”jï ]”jÑŒ'c.drm_atomic_helper_bridge_create_state”†”asbuh1hhj ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ubjÓ )�”}”(hŒbridge”h]”hŒbridge”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj’h²hh³j£h´M”ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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ŒZdefault :c:type:`drm_bridge_funcs.atomic_create_state ` hook for bridges”h]”(hŒdefault ”…”�”}”(hj‘h²hh³Nh´Nubh)�”}”(hŒA:c:type:`drm_bridge_funcs.atomic_create_state `”h]”jˆ )�”}”(hj›h]”hŒ$drm_bridge_funcs.atomic_create_state”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj™ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jì )�”}”jï ]”jÑŒ'c.drm_atomic_helper_bridge_create_state”†”asbjñ Œdrm_bridge_funcs”uh1hh³j¶Úh´KBhj‘ubhŒ hook for bridges”…”�”}”(hj‘h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.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²hhj~Úh³Nh´Nubj) )�”}”(hX**Parameters** ``struct drm_bridge *bridge`` bridge object **Description** Allocates and initializes pristine **drm_bridge_state**. This is useful for drivers that don't subclass **drm_bridge_state**. **Return** Pointer to new bridge state, or ERR_PTR on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjÛh]”hŒ Parameters”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÙubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M˜hjÕubjw )�”}”(hhh]”j| )�”}”(hŒ,``struct drm_bridge *bridge`` bridge object ”h]”(j‚ )�”}”(hŒ``struct drm_bridge *bridge``”h]”jˆ )�”}”(hjúh]”hŒstruct drm_bridge *bridge”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjøubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M–hjôubjž )�”}”(hhh]”hÎ)�”}”(hŒ bridge object”h]”hŒ bridge object”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j h´M–hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjôubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j h´M–hjñubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÕubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj5 h]”hŒ Description”…”�”}”(hj7 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj3 ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M˜hjÕubhÎ)�”}”(hŒ8Allocates and initializes pristine **drm_bridge_state**.”h]”(hŒ#Allocates and initializes pristine ”…”�”}”(hjK h²hh³Nh´Nubj3 )�”}”(hŒ**drm_bridge_state**”h]”hŒdrm_bridge_state”…”�”}”(hjS h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjK ubhŒ.”…”�”}”(hjK h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M—hjÕubhÎ)�”}”(hŒDThis is useful for drivers that don't subclass **drm_bridge_state**.”h]”(hŒ1This is useful for drivers that don’t subclass ”…”�”}”(hjl h²hh³Nh´Nubj3 )�”}”(hŒ**drm_bridge_state**”h]”hŒdrm_bridge_state”…”�”}”(hjt h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjl ubhŒ.”…”�”}”(hjl h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M™hjÕubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj� h]”hŒReturn”…”�”}”(hj‘ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj� ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´M›hjÕubhÎ)�”}”(hŒ3Pointer to new bridge state, or ERR_PTR on failure.”h]”hŒ3Pointer to new bridge state, or ERR_PTR on failure.”…”�”}”(hj¥ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:82: ./drivers/gpu/drm/drm_atomic_state_helper.c”h´MœhjÕubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj~Úh²hh³Nh´Nubeh}”(h]”jeah ]”h"]”Œatomic state helper reference”ah$]”h&]”uh1hµhj“Bh²hh³hÌh´KPubh¶)�”}”(hhh]”(h»)�”}”(hŒGEM Atomic Helper Reference”h]”hŒGEM Atomic Helper Reference”…”�”}”(hjÅ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÊj�uh1hºhj h²hh³hÌh´KVubhÎ)�”}”(hŒçThe GEM atomic helpers library implements generic atomic-commit functions for drivers that use GEM objects. Currently, it provides synchronization helpers, and plane state and framebuffer BO mappings for planes with shadow buffers.”h]”hŒçThe GEM atomic helpers library implements generic atomic-commit functions for drivers that use GEM objects. Currently, it provides synchronization helpers, and plane state and framebuffer BO mappings for planes with shadow buffers.”…”�”}”(hjÓ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:88: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´Khj h²hubhÎ)�”}”(hXÔBefore scanout, a plane's framebuffer needs to be synchronized with possible writers that draw into the framebuffer. All drivers should call drm_gem_plane_helper_prepare_fb() from their implementation of struct :c:type:`drm_plane_helper.prepare_fb ` . It sets the plane's fence from the framebuffer so that the DRM core can synchronize access automatically. drm_gem_plane_helper_prepare_fb() can also be used directly as implementation of prepare_fb.”h]”(hŒÕBefore scanout, a plane’s framebuffer needs to be synchronized with possible writers that draw into the framebuffer. All drivers should call drm_gem_plane_helper_prepare_fb() from their implementation of struct ”…”�”}”(hjâ h²hh³Nh´Nubh)�”}”(hŒ8:c:type:`drm_plane_helper.prepare_fb `”h]”jˆ )�”}”(hjì h]”hŒdrm_plane_helper.prepare_fb”…”�”}”(hjî h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjê ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_plane_helper”uh1hh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:88: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´Khjâ ubhŒË . It sets the plane’s fence from the framebuffer so that the DRM core can synchronize access automatically. drm_gem_plane_helper_prepare_fb() can also be used directly as implementation of prepare_fb.”…”�”}”(hjâ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j !h´Khj h²hubjN )�”}”(hŒ«#include struct drm_plane_helper_funcs driver_plane_helper_funcs = { ..., . prepare_fb = drm_gem_plane_helper_prepare_fb, };”h]”hŒ«#include struct drm_plane_helper_funcs driver_plane_helper_funcs = { ..., . prepare_fb = drm_gem_plane_helper_prepare_fb, };”…”�”}”hj!sbah}”(h]”h ]”h"]”h$]”h&]”jê jë Œforce”‰Œlanguage”j Œhighlight_args”}”uh1jM h³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:88: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´Khj h²hubhÎ)�”}”(hXXA driver using a shadow buffer copies the content of the shadow buffers into the HW's framebuffer memory during an atomic update. This requires a mapping of the shadow buffer into kernel address space. The mappings cannot be established by commit-tail functions, such as atomic_update, as this would violate locking rules around dma_buf_vmap().”h]”hXZA driver using a shadow buffer copies the content of the shadow buffers into the HW’s framebuffer memory during an atomic update. This requires a mapping of the shadow buffer into kernel address space. The mappings cannot be established by commit-tail functions, such as atomic_update, as this would violate locking rules around dma_buf_vmap().”…”�”}”(hj'!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:88: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´K(hj h²hubhÎ)�”}”(hŒ­The helpers for shadow-buffered planes establish and release mappings, and provide struct drm_shadow_plane_state, which stores the plane's mapping for commit-tail functions.”h]”hŒ¯The helpers for shadow-buffered planes establish and release mappings, and provide struct drm_shadow_plane_state, which stores the plane’s mapping for commit-tail functions.”…”�”}”(hj6!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:88: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´K.hj h²hubhÎ)�”}”(hŒóShadow-buffered planes can easily be enabled by using the provided macros ``DRM_GEM_SHADOW_PLANE_FUNCS`` and ``DRM_GEM_SHADOW_PLANE_HELPER_FUNCS``. These macros set up the plane and plane-helper callbacks to point to the shadow-buffer helpers.”h]”(hŒJShadow-buffered planes can easily be enabled by using the provided macros ”…”�”}”(hjE!h²hh³Nh´Nubjˆ )�”}”(hŒ``DRM_GEM_SHADOW_PLANE_FUNCS``”h]”hŒDRM_GEM_SHADOW_PLANE_FUNCS”…”�”}”(hjM!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjE!ubhŒ and ”…”�”}”(hjE!h²hh³Nh´Nubjˆ )�”}”(hŒ%``DRM_GEM_SHADOW_PLANE_HELPER_FUNCS``”h]”hŒ!DRM_GEM_SHADOW_PLANE_HELPER_FUNCS”…”�”}”(hj_!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjE!ubhŒa. These macros set up the plane and plane-helper callbacks to point to the shadow-buffer helpers.”…”�”}”(hjE!h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:88: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´K2hj h²hubjN )�”}”(hX#include struct drm_plane_funcs driver_plane_funcs = { ..., DRM_GEM_SHADOW_PLANE_FUNCS, }; struct drm_plane_helper_funcs driver_plane_helper_funcs = { ..., DRM_GEM_SHADOW_PLANE_HELPER_FUNCS, };”h]”hX#include struct drm_plane_funcs driver_plane_funcs = { ..., DRM_GEM_SHADOW_PLANE_FUNCS, }; struct drm_plane_helper_funcs driver_plane_helper_funcs = { ..., DRM_GEM_SHADOW_PLANE_HELPER_FUNCS, };”…”�”}”hjx!sbah}”(h]”h ]”h"]”h$]”h&]”jê jë j"!‰j#!j j$!}”uh1jM h³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:88: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´K7hj h²hubhÎ)�”}”(hŒ©In the driver's atomic-update function, shadow-buffer mappings are available from the plane state. Use to_drm_shadow_plane_state() to upcast from struct drm_plane_state.”h]”hŒ«In the driver’s atomic-update function, shadow-buffer mappings are available from the plane state. Use to_drm_shadow_plane_state() to upcast from struct drm_plane_state.”…”�”}”(hjˆ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:88: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´KEhj h²hubjN )�”}”(hXrvoid driver_plane_atomic_update(struct drm_plane *plane, struct drm_plane_state *old_plane_state) { struct drm_plane_state *plane_state = plane->state; struct drm_shadow_plane_state *shadow_plane_state = to_drm_shadow_plane_state(plane_state); // access shadow buffer via shadow_plane_state->map }”h]”hXrvoid driver_plane_atomic_update(struct drm_plane *plane, struct drm_plane_state *old_plane_state) { struct drm_plane_state *plane_state = plane->state; struct drm_shadow_plane_state *shadow_plane_state = to_drm_shadow_plane_state(plane_state); // access shadow buffer via shadow_plane_state->map }”…”�”}”hj—!sbah}”(h]”h ]”h"]”h$]”h&]”jê jë j"!‰j#!j j$!}”uh1jM h³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:88: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´KIhj h²hubhÎ)�”}”(hŒÆA mapping address for each of the framebuffer's buffer object is stored in struct :c:type:`drm_shadow_plane_state.map `. The mappings are valid while the state is being used.”h]”(hŒTA mapping address for each of the framebuffer’s buffer object is stored in struct ”…”�”}”(hj§!h²hh³Nh´Nubh)�”}”(hŒ=:c:type:`drm_shadow_plane_state.map `”h]”jˆ )�”}”(hj±!h]”hŒdrm_shadow_plane_state.map”…”�”}”(hj³!h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj¯!ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_shadow_plane_state”uh1hh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:88: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´KUhj§!ubhŒ7. The mappings are valid while the state is being used.”…”�”}”(hj§!h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÎ!h´KUhj h²hubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ$DRM_SHADOW_PLANE_MAX_WIDTH (C macro)”Œc.DRM_SHADOW_PLANE_MAX_WIDTH”hNt”auh1j† hj h²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:91: ./include/drm/drm_gem_atomic_helper.h”h´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒDRM_SHADOW_PLANE_MAX_WIDTH”h]”j¤ )�”}”(hŒDRM_SHADOW_PLANE_MAX_WIDTH”h]”jÍ )�”}”(hŒDRM_SHADOW_PLANE_MAX_WIDTH”h]”jÓ )�”}”(hjí!h]”hŒDRM_SHADOW_PLANE_MAX_WIDTH”…”�”}”(hj÷!h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjó!ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjï!h²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:91: ./include/drm/drm_gem_atomic_helper.h”h´Kubah}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjë!h²hh³j "h´Kubah}”(h]”jå!ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j "h´Khjè!h²hubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j hjè!h²hh³j "h´Kubeh}”(h]”h ]”(j Œmacro”eh"]”h$]”h&]”j" j j# j#"j$ j#"j% ‰j& ‰j' ‰uh1j˜ h²hhj h³jç!h´NubhÎ)�”}”(hŒ``DRM_SHADOW_PLANE_MAX_WIDTH``”h]”jˆ )�”}”(hj)"h]”hŒDRM_SHADOW_PLANE_MAX_WIDTH”…”�”}”(hj+"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj'"ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:91: ./include/drm/drm_gem_atomic_helper.h”h´Khj h²hubj^E)�”}”(hX Maximum width of a plane's shadow buffer in pixels **Description** For drivers with shadow planes, the maximum width of the framebuffer is usually independent from hardware limitations. Drivers can initialize struct drm_mode_config.max_width from DRM_SHADOW_PLANE_MAX_WIDTH. ”h]”(j^E)�”}”(hŒ3Maximum width of a plane's shadow buffer in pixels ”h]”hÎ)�”}”(hŒ2Maximum width of a plane's shadow buffer in pixels”h]”hŒ4Maximum width of a plane’s shadow buffer in pixels”…”�”}”(hjG"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:91: ./include/drm/drm_gem_atomic_helper.h”h´KhjC"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]Eh³jU"h´Khj?"ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj^"h]”hŒ Description”…”�”}”(hj`"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj\"ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:91: ./include/drm/drm_gem_atomic_helper.h”h´Khj?"ubhÎ)�”}”(hŒÏFor drivers with shadow planes, the maximum width of the framebuffer is usually independent from hardware limitations. Drivers can initialize struct drm_mode_config.max_width from DRM_SHADOW_PLANE_MAX_WIDTH.”h]”hŒÏFor drivers with shadow planes, the maximum width of the framebuffer is usually independent from hardware limitations. Drivers can initialize struct drm_mode_config.max_width from DRM_SHADOW_PLANE_MAX_WIDTH.”…”�”}”(hjt"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:91: ./include/drm/drm_gem_atomic_helper.h”h´Khj?"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j]Eh³jU"h´Khj h²hubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ%DRM_SHADOW_PLANE_MAX_HEIGHT (C macro)”Œc.DRM_SHADOW_PLANE_MAX_HEIGHT”hNt”auh1j† hj h²hh³jç!h´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒDRM_SHADOW_PLANE_MAX_HEIGHT”h]”j¤ )�”}”(hŒDRM_SHADOW_PLANE_MAX_HEIGHT”h]”jÍ )�”}”(hŒDRM_SHADOW_PLANE_MAX_HEIGHT”h]”jÓ )�”}”(hjœ"h]”hŒDRM_SHADOW_PLANE_MAX_HEIGHT”…”�”}”(hj¦"h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¢"ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjž"h²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:91: ./include/drm/drm_gem_atomic_helper.h”h´K"ubah}”(h]”h ]”h"]”h$]”h&]”jê jë 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]”h ]”h"]”h$]”h&]”uh1j hj—"h²hh³j¹"h´K"ubeh}”(h]”h ]”(j Œmacro”eh"]”h$]”h&]”j" j j# jÒ"j$ jÒ"j% ‰j& ‰j' ‰uh1j˜ h²hhj h³jç!h´NubhÎ)�”}”(hŒ``DRM_SHADOW_PLANE_MAX_HEIGHT``”h]”jˆ )�”}”(hjØ"h]”hŒDRM_SHADOW_PLANE_MAX_HEIGHT”…”�”}”(hjÚ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÖ"ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:91: ./include/drm/drm_gem_atomic_helper.h”h´K$hj h²hubj^E)�”}”(hX  Maximum height of a plane's shadow buffer in scanlines **Description** For drivers with shadow planes, the maximum height of the framebuffer is usually independent from hardware limitations. Drivers can initialize struct drm_mode_config.max_height from DRM_SHADOW_PLANE_MAX_HEIGHT. ”h]”(j^E)�”}”(hŒ7Maximum height of a plane's shadow buffer in scanlines ”h]”hÎ)�”}”(hŒ6Maximum height of a plane's shadow buffer in scanlines”h]”hŒ8Maximum height of a plane’s shadow buffer in scanlines”…”�”}”(hjö"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:91: ./include/drm/drm_gem_atomic_helper.h”h´K"hjò"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]Eh³j#h´K"hjî"ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj #h]”hŒ Description”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj #ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:91: ./include/drm/drm_gem_atomic_helper.h”h´K$hjî"ubhÎ)�”}”(hŒÒFor drivers with shadow planes, the maximum height of the framebuffer is usually independent from hardware limitations. Drivers can initialize struct drm_mode_config.max_height from DRM_SHADOW_PLANE_MAX_HEIGHT.”h]”hŒÒFor drivers with shadow planes, the maximum height of the framebuffer is usually independent from hardware limitations. Drivers can initialize struct drm_mode_config.max_height from DRM_SHADOW_PLANE_MAX_HEIGHT.”…”�”}”(hj##h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:91: ./include/drm/drm_gem_atomic_helper.h”h´K#hjî"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j]Eh³j#h´K"hj h²hubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ!drm_shadow_plane_state (C struct)”Œc.drm_shadow_plane_state”hNt”auh1j† hj h²hh³jç!h´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒdrm_shadow_plane_state”h]”j¤ )�”}”(hŒstruct drm_shadow_plane_state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjQ#h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjM#h²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:91: ./include/drm/drm_gem_atomic_helper.h”h´K*ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_#h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjM#h²hh³j^#h´K*ubjÍ )�”}”(hŒdrm_shadow_plane_state”h]”jÓ )�”}”(hjK#h]”hŒdrm_shadow_plane_state”…”�”}”(hjq#h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjm#ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjM#h²hh³j^#h´K*ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjI#h²hh³j^#h´K*ubah}”(h]”jD#ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j^#h´K*hjF#h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ*plane state for planes with shadow buffers”h]”hŒ*plane state for planes with shadow buffers”…”�”}”(hj“#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:91: ./include/drm/drm_gem_atomic_helper.h”h´K+hj�#h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjF#h²hh³j^#h´K*ubeh}”(h]”h ]”(j Œstruct”eh"]”h$]”h&]”j" j j# j«#j$ j«#j% ‰j& ‰j' ‰uh1j˜ h²hhj h³jç!h´Nubj) )�”}”(hXZ**Definition**:: struct drm_shadow_plane_state { struct drm_plane_state base; struct drm_format_conv_state fmtcnv_state; struct iosys_map map[DRM_FORMAT_MAX_PLANES]; struct iosys_map data[DRM_FORMAT_MAX_PLANES]; }; **Members** ``base`` plane state ``fmtcnv_state`` Format-conversion state Per-plane state for format conversion. Flags for copying shadow buffers into backend storage. Also holds temporary storage for format conversion. ``map`` Mappings of the plane's framebuffer BOs in to kernel address space The memory mappings stored in map should be established in the plane's prepare_fb callback and removed in the cleanup_fb callback. ``data`` Address of each framebuffer BO's data The address of the data stored in each mapping. This is different for framebuffers with non-zero offset fields.”•vh]”(hÎ)�”}”(hŒ**Definition**::”h]”(j3 )�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj·#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj³#ubhŒ:”…”�”}”(hj³#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:91: ./include/drm/drm_gem_atomic_helper.h”h´K/hj¯#ubjN )�”}”(hŒÕstruct drm_shadow_plane_state { struct drm_plane_state base; struct drm_format_conv_state fmtcnv_state; struct iosys_map map[DRM_FORMAT_MAX_PLANES]; struct iosys_map data[DRM_FORMAT_MAX_PLANES]; };”h]”hŒÕstruct drm_shadow_plane_state { struct drm_plane_state base; struct drm_format_conv_state fmtcnv_state; struct iosys_map map[DRM_FORMAT_MAX_PLANES]; struct iosys_map data[DRM_FORMAT_MAX_PLANES]; };”…”�”}”hjÐ#sbah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jM h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:91: ./include/drm/drm_gem_atomic_helper.h”h´K1hj¯#ubhÎ)�”}”(hŒ **Members**”h]”j3 )�”}”(hjá#h]”hŒMembers”…”�”}”(hjã#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjß#ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:91: ./include/drm/drm_gem_atomic_helper.h”h´K8hj¯#ubjw )�”}”(hhh]”(j| )�”}”(hŒ``base`` plane state ”h]”(j‚ )�”}”(hŒ``base``”h]”jˆ )�”}”(hj$h]”hŒbase”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjþ#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:91: ./include/drm/drm_gem_atomic_helper.h”h´K3hjú#ubjž )�”}”(hhh]”hÎ)�”}”(hŒ plane state”h]”hŒ plane state”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j$h´K3hj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjú#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j$h´K3hj÷#ubj| )�”}”(hŒ¼``fmtcnv_state`` Format-conversion state Per-plane state for format conversion. Flags for copying shadow buffers into backend storage. Also holds temporary storage for format conversion. ”h]”(j‚ )�”}”(hŒ``fmtcnv_state``”h]”jˆ )�”}”(hj9$h]”hŒ fmtcnv_state”…”�”}”(hj;$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj7$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:91: ./include/drm/drm_gem_atomic_helper.h”h´K;hj3$ubjž )�”}”(hhh]”(hÎ)�”}”(hŒFormat-conversion state”h]”hŒFormat-conversion state”…”�”}”(hjR$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:91: ./include/drm/drm_gem_atomic_helper.h”h´K7hjO$ubhÎ)�”}”(hŒ‘Per-plane state for format conversion. Flags for copying shadow buffers into backend storage. Also holds temporary storage for format conversion.”h]”hŒ‘Per-plane state for format conversion. Flags for copying shadow buffers into backend storage. Also holds temporary storage for format conversion.”…”�”}”(hja$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:91: ./include/drm/drm_gem_atomic_helper.h”h´K9hjO$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj3$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jN$h´K;hj÷#ubj| )�”}”(hŒÏ``map`` Mappings of the plane's framebuffer BOs in to kernel address space The memory mappings stored in map should be established in the plane's prepare_fb callback and removed in the cleanup_fb callback. ”h]”(j‚ )�”}”(hŒ``map``”h]”jˆ )�”}”(hj‚$h]”hŒmap”…”�”}”(hj„$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj€$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:91: ./include/drm/drm_gem_atomic_helper.h”h´KEhj|$ubjž )�”}”(hhh]”(hÎ)�”}”(hŒBMappings of the plane's framebuffer BOs in to kernel address space”h]”hŒDMappings of the plane’s framebuffer BOs in to kernel address space”…”�”}”(hj›$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:91: ./include/drm/drm_gem_atomic_helper.h”h´KBhj˜$ubhÎ)�”}”(hŒ‚The memory mappings stored in map should be established in the plane's prepare_fb callback and removed in the cleanup_fb callback.”h]”hŒ„The memory mappings stored in map should be established in the plane’s prepare_fb callback and removed in the cleanup_fb callback.”…”�”}”(hjª$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:91: ./include/drm/drm_gem_atomic_helper.h”h´KDhj˜$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj|$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j—$h´KEhj÷#ubj| )�”}”(hŒŸ``data`` Address of each framebuffer BO's data The address of the data stored in each mapping. This is different for framebuffers with non-zero offset fields.”h]”(j‚ )�”}”(hŒ``data``”h]”jˆ )�”}”(hjË$h]”hŒdata”…”�”}”(hjÍ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÉ$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:91: ./include/drm/drm_gem_atomic_helper.h”h´KLhjÅ$ubjž )�”}”(hhh]”(hÎ)�”}”(hŒ%Address of each framebuffer BO's data”h]”hŒ'Address of each framebuffer BO’s data”…”�”}”(hjä$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:91: ./include/drm/drm_gem_atomic_helper.h”h´KJhjá$ubhÎ)�”}”(hŒoThe address of the data stored in each mapping. This is different for framebuffers with non-zero offset fields.”h]”hŒoThe address of the data stored in each mapping. This is different for framebuffers with non-zero offset fields.”…”�”}”(hjó$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jà$h´KLhjá$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÅ$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jà$h´KLhj÷#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj¯#ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj h²hh³jç!h´NubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj%h]”hŒ Description”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:91: ./include/drm/drm_gem_atomic_helper.h”h´KPhj h²hubhÎ)�”}”(hŒ¡For planes that use a shadow buffer, struct drm_shadow_plane_state provides the regular plane state plus mappings of the shadow buffer into kernel address space.”h]”hŒ¡For planes that use a shadow buffer, struct drm_shadow_plane_state provides the regular plane state plus mappings of the shadow buffer into kernel address space.”…”�”}”(hj2%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:91: ./include/drm/drm_gem_atomic_helper.h”h´K,hj h²hubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ&to_drm_shadow_plane_state (C function)”Œc.to_drm_shadow_plane_state”hNt”auh1j† hj h²hh³jç!h´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒYstruct drm_shadow_plane_state * to_drm_shadow_plane_state (struct drm_plane_state *state)”h]”j¤ )�”}”(hŒWstruct drm_shadow_plane_state *to_drm_shadow_plane_state(struct drm_plane_state *state)”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjZ%h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjV%h²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:91: ./include/drm/drm_gem_atomic_helper.h”h´KRubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh%h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjV%h²hh³jg%h´KRubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_shadow_plane_state”h]”hŒdrm_shadow_plane_state”…”�”}”(hjy%h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjv%ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j{%Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jŒto_drm_shadow_plane_state”sbŒc.to_drm_shadow_plane_state”†”asbuh1hhjV%h²hh³jg%h´KRubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjš%h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjV%h²hh³jg%h´KRubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj¨%h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjV%h²hh³jg%h´KRubjÍ )�”}”(hŒto_drm_shadow_plane_state”h]”jÓ )�”}”(hj—%h]”hŒto_drm_shadow_plane_state”…”�”}”(hj¹%h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjµ%ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjV%h²hh³jg%h´KRubjÞ)�”}”(hŒ(struct drm_plane_state *state)”h]”jä)�”}”(hŒstruct drm_plane_state *state”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Œdrm_plane_state”h]”hŒdrm_plane_state”…”�”}”(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.to_drm_shadow_plane_state”†”asbuh1hhjÐ%ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÐ%ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÐ%ubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hj+&h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÐ%ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÌ%ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjV%h²hh³jg%h´KRubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjR%h²hh³jg%h´KRubah}”(h]”jM%ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jg%h´KRhjO%h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ#upcasts from struct drm_plane_state”h]”hŒ#upcasts from struct drm_plane_state”…”�”}”(hjU&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:91: ./include/drm/drm_gem_atomic_helper.h”h´KRhjR&h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjO%h²hh³jg%h´KRubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jm&j$ jm&j% ‰j& ‰j' ‰uh1j˜ h²hhj h³jç!h´Nubj) )�”}”(hŒC**Parameters** ``struct drm_plane_state *state`` the plane state”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjw&h]”hŒ Parameters”…”�”}”(hjy&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hju&ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:91: ./include/drm/drm_gem_atomic_helper.h”h´KVhjq&ubjw )�”}”(hhh]”j| )�”}”(hŒ1``struct drm_plane_state *state`` the plane state”h]”(j‚ )�”}”(hŒ!``struct drm_plane_state *state``”h]”jˆ )�”}”(hj–&h]”hŒstruct drm_plane_state *state”…”�”}”(hj˜&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj”&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:91: ./include/drm/drm_gem_atomic_helper.h”h´KXhj�&ubjž )�”}”(hhh]”hÎ)�”}”(hŒthe plane state”h]”hŒthe plane state”…”�”}”(hj¯&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:91: ./include/drm/drm_gem_atomic_helper.h”h´KShj¬&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj�&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j«&h´KXhj�&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjq&ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj h²hh³jç!h´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ$DRM_GEM_SHADOW_PLANE_FUNCS (C macro)”Œc.DRM_GEM_SHADOW_PLANE_FUNCS”hNt”auh1j† hj h²hh³jç!h´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒDRM_GEM_SHADOW_PLANE_FUNCS”h]”j¤ )�”}”(hŒDRM_GEM_SHADOW_PLANE_FUNCS”h]”jÍ )�”}”(hŒDRM_GEM_SHADOW_PLANE_FUNCS”h]”jÓ )�”}”(hjê&h]”hŒDRM_GEM_SHADOW_PLANE_FUNCS”…”�”}”(hjô&h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjð&ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjì&h²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:91: ./include/drm/drm_gem_atomic_helper.h”h´Kgubah}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjè&h²hh³j'h´Kgubah}”(h]”jã&ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j'h´Kghjå&h²hubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j hjå&h²hh³j'h´Kgubeh}”(h]”h ]”(j Œmacro”eh"]”h$]”h&]”j" j j# j 'j$ j 'j% ‰j& ‰j' ‰uh1j˜ h²hhj h³jç!h´NubhÎ)�”}”(hŒ``DRM_GEM_SHADOW_PLANE_FUNCS``”h]”jˆ )�”}”(hj&'h]”hŒDRM_GEM_SHADOW_PLANE_FUNCS”…”�”}”(hj('h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj$'ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:91: ./include/drm/drm_gem_atomic_helper.h”h´Kihj h²hubj^E)�”}”(hŒè Initializes struct drm_plane_funcs for shadow-buffered planes **Description** Drivers may use GEM BOs as shadow buffers over the framebuffer memory. This macro initializes struct drm_plane_funcs to use the rsp helper functions. ”h]”(j^E)�”}”(hŒ>Initializes struct drm_plane_funcs for shadow-buffered planes ”h]”hÎ)�”}”(hŒ=Initializes struct drm_plane_funcs for shadow-buffered planes”h]”hŒ=Initializes struct drm_plane_funcs for shadow-buffered planes”…”�”}”(hjD'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:91: ./include/drm/drm_gem_atomic_helper.h”h´Kghj@'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]Eh³jR'h´Kghj<'ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj['h]”hŒ Description”…”�”}”(hj]'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjY'ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:91: ./include/drm/drm_gem_atomic_helper.h”h´Kihj<'ubhÎ)�”}”(hŒ•Drivers may use GEM BOs as shadow buffers over the framebuffer memory. This macro initializes struct drm_plane_funcs to use the rsp helper functions.”h]”hŒ•Drivers may use GEM BOs as shadow buffers over the framebuffer memory. This macro initializes struct drm_plane_funcs to use the rsp helper functions.”…”�”}”(hjq'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:91: ./include/drm/drm_gem_atomic_helper.h”h´Khhj<'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j]Eh³jR'h´Kghj h²hubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ+DRM_GEM_SHADOW_PLANE_HELPER_FUNCS (C macro)”Œ#c.DRM_GEM_SHADOW_PLANE_HELPER_FUNCS”hNt”auh1j† hj h²hh³jç!h´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ!DRM_GEM_SHADOW_PLANE_HELPER_FUNCS”h]”j¤ )�”}”(hŒ!DRM_GEM_SHADOW_PLANE_HELPER_FUNCS”h]”jÍ )�”}”(hŒ!DRM_GEM_SHADOW_PLANE_HELPER_FUNCS”h]”jÓ )�”}”(hj™'h]”hŒ!DRM_GEM_SHADOW_PLANE_HELPER_FUNCS”…”�”}”(hj£'h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjŸ'ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj›'h²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:91: ./include/drm/drm_gem_atomic_helper.h”h´Kvubah}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj—'h²hh³j¶'h´Kvubah}”(h]”j’'ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j¶'h´Kvhj”'h²hubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j hj”'h²hh³j¶'h´Kvubeh}”(h]”h ]”(j Œmacro”eh"]”h$]”h&]”j" j j# jÏ'j$ jÏ'j% ‰j& ‰j' ‰uh1j˜ h²hhj h³jç!h´NubhÎ)�”}”(hŒ%``DRM_GEM_SHADOW_PLANE_HELPER_FUNCS``”h]”jˆ )�”}”(hjÕ'h]”hŒ!DRM_GEM_SHADOW_PLANE_HELPER_FUNCS”…”�”}”(hj×'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÓ'ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:91: ./include/drm/drm_gem_atomic_helper.h”h´Kxhj h²hubj^E)�”}”(hŒö Initializes struct drm_plane_helper_funcs for shadow-buffered planes **Description** Drivers may use GEM BOs as shadow buffers over the framebuffer memory. This macro initializes struct drm_plane_helper_funcs to use the rsp helper functions. ”h]”(j^E)�”}”(hŒEInitializes struct drm_plane_helper_funcs for shadow-buffered planes ”h]”hÎ)�”}”(hŒDInitializes struct drm_plane_helper_funcs for shadow-buffered planes”h]”hŒDInitializes struct drm_plane_helper_funcs for shadow-buffered planes”…”�”}”(hjó'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:91: ./include/drm/drm_gem_atomic_helper.h”h´Kvhjï'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]Eh³j(h´Kvhjë'ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj (h]”hŒ Description”…”�”}”(hj (h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj(ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:91: ./include/drm/drm_gem_atomic_helper.h”h´Kxhjë'ubhÎ)�”}”(hŒœDrivers may use GEM BOs as shadow buffers over the framebuffer memory. This macro initializes struct drm_plane_helper_funcs to use the rsp helper functions.”h]”hŒœDrivers may use GEM BOs as shadow buffers over the framebuffer memory. This macro initializes struct drm_plane_helper_funcs to use the rsp helper functions.”…”�”}”(hj (h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:91: ./include/drm/drm_gem_atomic_helper.h”h´Kwhjë'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j]Eh³j(h´Kvhj h²hubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ8DRM_GEM_SIMPLE_DISPLAY_PIPE_SHADOW_PLANE_FUNCS (C macro)”Œ0c.DRM_GEM_SIMPLE_DISPLAY_PIPE_SHADOW_PLANE_FUNCS”hNt”auh1j† hj h²hh³jç!h´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ.DRM_GEM_SIMPLE_DISPLAY_PIPE_SHADOW_PLANE_FUNCS”h]”j¤ )�”}”(hŒ.DRM_GEM_SIMPLE_DISPLAY_PIPE_SHADOW_PLANE_FUNCS”h]”jÍ )�”}”(hŒ.DRM_GEM_SIMPLE_DISPLAY_PIPE_SHADOW_PLANE_FUNCS”h]”jÓ )�”}”(hjH(h]”hŒ.DRM_GEM_SIMPLE_DISPLAY_PIPE_SHADOW_PLANE_FUNCS”…”�”}”(hjR(h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjN(ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjJ(h²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:91: ./include/drm/drm_gem_atomic_helper.h”h´KŒubah}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjF(h²hh³je(h´KŒubah}”(h]”jA(ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³je(h´KŒhjC(h²hubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j hjC(h²hh³je(h´KŒubeh}”(h]”h ]”(j Œmacro”eh"]”h$]”h&]”j" j j# j~(j$ j~(j% ‰j& ‰j' ‰uh1j˜ h²hhj h³jç!h´NubhÎ)�”}”(hŒ2``DRM_GEM_SIMPLE_DISPLAY_PIPE_SHADOW_PLANE_FUNCS``”h]”jˆ )�”}”(hj„(h]”hŒ.DRM_GEM_SIMPLE_DISPLAY_PIPE_SHADOW_PLANE_FUNCS”…”�”}”(hj†(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj‚(ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:91: ./include/drm/drm_gem_atomic_helper.h”h´KŽhj h²hubj^E)�”}”(hX Initializes struct drm_simple_display_pipe_funcs for shadow-buffered planes **Description** Drivers may use GEM BOs as shadow buffers over the framebuffer memory. This macro initializes struct drm_simple_display_pipe_funcs to use the rsp helper functions. ”h]”(j^E)�”}”(hŒLInitializes struct drm_simple_display_pipe_funcs for shadow-buffered planes ”h]”hÎ)�”}”(hŒKInitializes struct drm_simple_display_pipe_funcs for shadow-buffered planes”h]”hŒKInitializes struct drm_simple_display_pipe_funcs for shadow-buffered planes”…”�”}”(hj¢(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:91: ./include/drm/drm_gem_atomic_helper.h”h´KŒhjž(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]Eh³j°(h´KŒhjš(ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj¹(h]”hŒ Description”…”�”}”(hj»(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj·(ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:91: ./include/drm/drm_gem_atomic_helper.h”h´KŽhjš(ubhÎ)�”}”(hŒ£Drivers may use GEM BOs as shadow buffers over the framebuffer memory. This macro initializes struct drm_simple_display_pipe_funcs to use the rsp helper functions.”h]”hŒ£Drivers may use GEM BOs as shadow buffers over the framebuffer memory. This macro initializes struct drm_simple_display_pipe_funcs to use the rsp helper functions.”…”�”}”(hjÏ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:91: ./include/drm/drm_gem_atomic_helper.h”h´K�hjš(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j]Eh³j°(h´KŒhj h²hubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ,drm_gem_plane_helper_prepare_fb (C function)”Œ!c.drm_gem_plane_helper_prepare_fb”hNt”auh1j† hj h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ\int drm_gem_plane_helper_prepare_fb (struct drm_plane *plane, struct drm_plane_state *state)”h]”j¤ )�”}”(hŒ[int drm_gem_plane_helper_prepare_fb(struct drm_plane *plane, struct drm_plane_state *state)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjý(h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjù(h²hh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´Kaubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj )h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjù(h²hh³j )h´KaubjÍ )�”}”(hŒdrm_gem_plane_helper_prepare_fb”h]”jÓ )�”}”(hŒdrm_gem_plane_helper_prepare_fb”h]”hŒdrm_gem_plane_helper_prepare_fb”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj)ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjù(h²hh³j )h´KaubjÞ)�”}”(hŒ8(struct drm_plane *plane, struct drm_plane_state *state)”h]”(jä)�”}”(hŒstruct drm_plane *plane”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj:)h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj6)ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjG)h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj6)ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_plane”h]”hŒ drm_plane”…”�”}”(hjX)h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjU)ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jZ)Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj )sbŒ!c.drm_gem_plane_helper_prepare_fb”†”asbuh1hhj6)ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjx)h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj6)ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj†)h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj6)ubjÓ )�”}”(hŒplane”h]”hŒplane”…”�”}”(hj“)h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj6)ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj2)ubjä)�”}”(hŒstruct drm_plane_state *state”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Œdrm_plane_state”h]”hŒdrm_plane_state”…”�”}”(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ï ]”jt)Œ!c.drm_gem_plane_helper_prepare_fb”†”asbuh1hhj¨)ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjè)h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¨)ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjö)h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¨)ubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¨)ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj2)ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjù(h²hh³j )h´Kaubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjõ(h²hh³j )h´Kaubah}”(h]”jð(ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j )h´Kahjò(h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ Prepare a GEM backed framebuffer”h]”hŒ Prepare a GEM backed framebuffer”…”�”}”(hj-*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´Kahj**h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjò(h²hh³j )h´Kaubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jE*j$ jE*j% ‰j& ‰j' ‰uh1j˜ h²hhj h³Nh´Nubj) )�”}”(hXx**Parameters** ``struct drm_plane *plane`` Plane ``struct drm_plane_state *state`` Plane state the fence will be attached to **Description** This function extracts the exclusive fence from :c:type:`drm_gem_object.resv ` and attaches it to plane state for the atomic helper to wait on. This is necessary to correctly implement implicit synchronization for any buffers shared as a struct :c:type:`dma_buf`. This function can be used as the :c:type:`drm_plane_helper_funcs.prepare_fb ` callback. There is no need for :c:type:`drm_plane_helper_funcs.cleanup_fb ` hook for simple GEM based framebuffer drivers which have their buffers always pinned in memory. This function is the default implementation for GEM drivers of :c:type:`drm_plane_helper_funcs.prepare_fb ` if no callback is provided.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjO*h]”hŒ Parameters”…”�”}”(hjQ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjM*ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´KehjI*ubjw )�”}”(hhh]”(j| )�”}”(hŒ"``struct drm_plane *plane`` Plane ”h]”(j‚ )�”}”(hŒ``struct drm_plane *plane``”h]”jˆ )�”}”(hjn*h]”hŒstruct drm_plane *plane”…”�”}”(hjp*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjl*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´Kbhjh*ubjž )�”}”(hhh]”hÎ)�”}”(hŒPlane”h]”hŒPlane”…”�”}”(hj‡*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jƒ*h´Kbhj„*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjh*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jƒ*h´Kbhje*ubj| )�”}”(hŒL``struct drm_plane_state *state`` Plane state the fence will be attached to ”h]”(j‚ )�”}”(hŒ!``struct drm_plane_state *state``”h]”jˆ )�”}”(hj§*h]”hŒstruct drm_plane_state *state”…”�”}”(hj©*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¥*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´Kchj¡*ubjž )�”}”(hhh]”hÎ)�”}”(hŒ)Plane state the fence will be attached to”h]”hŒ)Plane state the fence will be attached to”…”�”}”(hjÀ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¼*h´Kchj½*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¡*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¼*h´Kchje*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjI*ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjâ*h]”hŒ Description”…”�”}”(hjä*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjà*ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´KehjI*ubhÎ)�”}”(hX‡This function extracts the exclusive fence from :c:type:`drm_gem_object.resv ` and attaches it to plane state for the atomic helper to wait on. This is necessary to correctly implement implicit synchronization for any buffers shared as a struct :c:type:`dma_buf`. This function can be used as the :c:type:`drm_plane_helper_funcs.prepare_fb ` callback.”h]”(hŒ0This function extracts the exclusive fence from ”…”�”}”(hjø*h²hh³Nh´Nubh)�”}”(hŒ.:c:type:`drm_gem_object.resv `”h]”jˆ )�”}”(hj+h]”hŒdrm_gem_object.resv”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj+ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_gem_object”uh1hh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´Kdhjø*ubhŒ§ and attaches it to plane state for the atomic helper to wait on. This is necessary to correctly implement implicit synchronization for any buffers shared as a struct ”…”�”}”(hjø*h²hh³Nh´Nubh)�”}”(hŒ:c:type:`dma_buf`”h]”jˆ )�”}”(hj&+h]”hŒdma_buf”…”�”}”(hj(+h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj$+ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdma_buf”uh1hh³j+h´Kdhjø*ubhŒ#. This function can be used as the ”…”�”}”(hjø*h²hh³Nh´Nubh)�”}”(hŒD:c:type:`drm_plane_helper_funcs.prepare_fb `”h]”jˆ )�”}”(hjI+h]”hŒ!drm_plane_helper_funcs.prepare_fb”…”�”}”(hjK+h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjG+ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_plane_helper_funcs”uh1hh³j+h´Kdhjø*ubhŒ callback.”…”�”}”(hjø*h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j+h´KdhjI*ubhÎ)�”}”(hŒ¹There is no need for :c:type:`drm_plane_helper_funcs.cleanup_fb ` hook for simple GEM based framebuffer drivers which have their buffers always pinned in memory.”h]”(hŒThere is no need for ”…”�”}”(hjp+h²hh³Nh´Nubh)�”}”(hŒD:c:type:`drm_plane_helper_funcs.cleanup_fb `”h]”jˆ )�”}”(hjz+h]”hŒ!drm_plane_helper_funcs.cleanup_fb”…”�”}”(hj|+h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjx+ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_plane_helper_funcs”uh1hh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´Kjhjp+ubhŒ` hook for simple GEM based framebuffer drivers which have their buffers always pinned in memory.”…”�”}”(hjp+h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j—+h´KjhjI*ubhÎ)�”}”(hŒŸThis function is the default implementation for GEM drivers of :c:type:`drm_plane_helper_funcs.prepare_fb ` if no callback is provided.”h]”(hŒ?This function is the default implementation for GEM drivers of ”…”�”}”(hj¢+h²hh³Nh´Nubh)�”}”(hŒD:c:type:`drm_plane_helper_funcs.prepare_fb `”h]”jˆ )�”}”(hj¬+h]”hŒ!drm_plane_helper_funcs.prepare_fb”…”�”}”(hj®+h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjª+ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_plane_helper_funcs”uh1hh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´Knhj¢+ubhŒ if no callback is provided.”…”�”}”(hj¢+h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÉ+h´KnhjI*ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ3__drm_gem_duplicate_shadow_plane_state (C function)”Œ(c.__drm_gem_duplicate_shadow_plane_state”hNt”auh1j† hj h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ|void __drm_gem_duplicate_shadow_plane_state (struct drm_plane *plane, struct drm_shadow_plane_state *new_shadow_plane_state)”h]”j¤ )�”}”(hŒ{void __drm_gem_duplicate_shadow_plane_state(struct drm_plane *plane, struct drm_shadow_plane_state *new_shadow_plane_state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjô+h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjð+h²hh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.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Œ&__drm_gem_duplicate_shadow_plane_state”h]”jÓ )�”}”(hŒ&__drm_gem_duplicate_shadow_plane_state”h]”hŒ&__drm_gem_duplicate_shadow_plane_state”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj,ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjð+h²hh³j,h´K¸ubjÞ)�”}”(hŒP(struct drm_plane *plane, struct drm_shadow_plane_state *new_shadow_plane_state)”h]”(jä)�”}”(hŒstruct drm_plane *plane”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj1,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Œ drm_plane”h]”hŒ drm_plane”…”�”}”(hjO,h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjL,ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jQ,Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj,sbŒ(c.__drm_gem_duplicate_shadow_plane_state”†”asbuh1hhj-,ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjo,h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj-,ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj},h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj-,ubjÓ )�”}”(hŒplane”h]”hŒplane”…”�”}”(hjŠ,h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj-,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj),ubjä)�”}”(hŒ5struct drm_shadow_plane_state *new_shadow_plane_state”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Œdrm_shadow_plane_state”h]”hŒdrm_shadow_plane_state”…”�”}”(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ï ]”jk,Œ(c.__drm_gem_duplicate_shadow_plane_state”†”asbuh1hhjŸ,ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjß,h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjŸ,ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjí,h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŸ,ubjÓ )�”}”(hŒnew_shadow_plane_state”h]”hŒnew_shadow_plane_state”…”�”}”(hjú,h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjŸ,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj),ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjð+h²hh³j,h´K¸ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ&duplicates shadow-buffered plane state”h]”hŒ&duplicates shadow-buffered plane state”…”�”}”(hj$-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.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²hhj h³Nh´Nubj) )�”}”(hX1**Parameters** ``struct drm_plane *plane`` the plane ``struct drm_shadow_plane_state *new_shadow_plane_state`` the new shadow-buffered plane state **Description** This function duplicates shadow-buffered plane state. This is helpful for drivers that subclass struct drm_shadow_plane_state. The function does not duplicate existing mappings of the shadow buffers. Mappings are maintained during the atomic commit by the plane's prepare_fb and cleanup_fb helpers. See drm_gem_prepare_shadow_fb() and drm_gem_cleanup_shadow_fb() for corresponding helpers.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjF-h]”hŒ Parameters”…”�”}”(hjH-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjD-ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´K¼hj@-ubjw )�”}”(hhh]”(j| )�”}”(hŒ&``struct drm_plane *plane`` the plane ”h]”(j‚ )�”}”(hŒ``struct drm_plane *plane``”h]”jˆ )�”}”(hje-h]”hŒstruct drm_plane *plane”…”�”}”(hjg-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjc-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´K¹hj_-ubjž )�”}”(hhh]”hÎ)�”}”(hŒ the plane”h]”hŒ the plane”…”�”}”(hj~-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jz-h´K¹hj{-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj_-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jz-h´K¹hj\-ubj| )�”}”(hŒ^``struct drm_shadow_plane_state *new_shadow_plane_state`` the new shadow-buffered plane state ”h]”(j‚ )�”}”(hŒ9``struct drm_shadow_plane_state *new_shadow_plane_state``”h]”jˆ )�”}”(hjž-h]”hŒ5struct drm_shadow_plane_state *new_shadow_plane_state”…”�”}”(hj -h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjœ-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´Kºhj˜-ubjž )�”}”(hhh]”hÎ)�”}”(hŒ#the new shadow-buffered plane state”h]”hŒ#the new shadow-buffered plane state”…”�”}”(hj·-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j³-h´Kºhj´-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj˜-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j³-h´Kºhj\-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj@-ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjÙ-h]”hŒ Description”…”�”}”(hjÛ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj×-ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´K¼hj@-ubhÎ)�”}”(hŒ~This function duplicates shadow-buffered plane state. This is helpful for drivers that subclass struct drm_shadow_plane_state.”h]”hŒ~This function duplicates shadow-buffered plane state. This is helpful for drivers that subclass struct drm_shadow_plane_state.”…”�”}”(hjï-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´K»hj@-ubhÎ)�”}”(hXThe function does not duplicate existing mappings of the shadow buffers. Mappings are maintained during the atomic commit by the plane's prepare_fb and cleanup_fb helpers. See drm_gem_prepare_shadow_fb() and drm_gem_cleanup_shadow_fb() for corresponding helpers.”h]”hXThe function does not duplicate existing mappings of the shadow buffers. Mappings are maintained during the atomic commit by the plane’s prepare_fb and cleanup_fb helpers. See drm_gem_prepare_shadow_fb() and drm_gem_cleanup_shadow_fb() for corresponding helpers.”…”�”}”(hjþ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´K¾hj@-ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ1drm_gem_duplicate_shadow_plane_state (C function)”Œ&c.drm_gem_duplicate_shadow_plane_state”hNt”auh1j† hj h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒWstruct drm_plane_state * drm_gem_duplicate_shadow_plane_state (struct drm_plane *plane)”h]”j¤ )�”}”(hŒUstruct drm_plane_state *drm_gem_duplicate_shadow_plane_state(struct drm_plane *plane)”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj-.h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj).h²hh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.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Ôubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_plane_state”h]”hŒdrm_plane_state”…”�”}”(hjL.h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjI.ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jN.Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jŒ$drm_gem_duplicate_shadow_plane_state”sbŒ&c.drm_gem_duplicate_shadow_plane_state”†”asbuh1hhj).h²hh³j:.h´KÔubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjm.h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj).h²hh³j:.h´KÔubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj{.h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj).h²hh³j:.h´KÔubjÍ )�”}”(hŒ$drm_gem_duplicate_shadow_plane_state”h]”jÓ )�”}”(hjj.h]”hŒ$drm_gem_duplicate_shadow_plane_state”…”�”}”(hjŒ.h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjˆ.ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj).h²hh³j:.h´KÔubjÞ)�”}”(hŒ(struct drm_plane *plane)”h]”jä)�”}”(hŒstruct drm_plane *plane”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Œ drm_plane”h]”hŒ drm_plane”…”�”}”(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ï ]”jh.Œ&c.drm_gem_duplicate_shadow_plane_state”†”asbuh1hhj£.ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjã.h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj£.ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjñ.h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj£.ubjÓ )�”}”(hŒplane”h]”hŒplane”…”�”}”(hjþ.h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj£.ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjŸ.ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj).h²hh³j:.h´KÔubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ&duplicates shadow-buffered plane state”h]”hŒ&duplicates shadow-buffered plane state”…”�”}”(hj(/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.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²hhj h³Nh´Nubj) )�”}”(hX˜**Parameters** ``struct drm_plane *plane`` the plane **Description** This function implements struct :c:type:`drm_plane_funcs.atomic_duplicate_state ` for shadow-buffered planes. It assumes the existing state to be of type struct drm_shadow_plane_state and it allocates the new state to be of this type. The function does not duplicate existing mappings of the shadow buffers. Mappings are maintained during the atomic commit by the plane's prepare_fb and cleanup_fb helpers. See drm_gem_prepare_shadow_fb() and drm_gem_cleanup_shadow_fb() for corresponding helpers. **Return** A pointer to a new plane state on success, or NULL otherwise.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjJ/h]”hŒ Parameters”…”�”}”(hjL/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjH/ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´KØhjD/ubjw )�”}”(hhh]”j| )�”}”(hŒ&``struct drm_plane *plane`` the plane ”h]”(j‚ )�”}”(hŒ``struct drm_plane *plane``”h]”jˆ )�”}”(hji/h]”hŒstruct drm_plane *plane”…”�”}”(hjk/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjg/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´KÕhjc/ubjž )�”}”(hhh]”hÎ)�”}”(hŒ the plane”h]”hŒ the plane”…”�”}”(hj‚/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j~/h´KÕhj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjc/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j~/h´KÕhj`/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjD/ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj¤/h]”hŒ Description”…”�”}”(hj¦/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¢/ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´K×hjD/ubhÎ)�”}”(hŒûThis function implements struct :c:type:`drm_plane_funcs.atomic_duplicate_state ` for shadow-buffered planes. It assumes the existing state to be of type struct drm_shadow_plane_state and it allocates the new state to be of this type.”h]”(hŒ This function implements struct ”…”�”}”(hjº/h²hh³Nh´Nubh)�”}”(hŒB:c:type:`drm_plane_funcs.atomic_duplicate_state `”h]”jˆ )�”}”(hjÄ/h]”hŒ&drm_plane_funcs.atomic_duplicate_state”…”�”}”(hjÆ/h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÂ/ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_plane_funcs”uh1hh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´KÖhjº/ubhŒ™ for shadow-buffered planes. It assumes the existing state to be of type struct drm_shadow_plane_state and it allocates the new state to be of this type.”…”�”}”(hjº/h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³já/h´KÖhjD/ubhÎ)�”}”(hXThe function does not duplicate existing mappings of the shadow buffers. Mappings are maintained during the atomic commit by the plane's prepare_fb and cleanup_fb helpers. See drm_gem_prepare_shadow_fb() and drm_gem_cleanup_shadow_fb() for corresponding helpers.”h]”hXThe function does not duplicate existing mappings of the shadow buffers. Mappings are maintained during the atomic commit by the plane’s prepare_fb and cleanup_fb helpers. See drm_gem_prepare_shadow_fb() and drm_gem_cleanup_shadow_fb() for corresponding helpers.”…”�”}”(hjì/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´KÛhjD/ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjý/h]”hŒReturn”…”�”}”(hjÿ/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjû/ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´KàhjD/ubhÎ)�”}”(hŒ=A pointer to a new plane state on success, or NULL otherwise.”h]”hŒ=A pointer to a new plane state on success, or NULL otherwise.”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´KáhjD/ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ1__drm_gem_destroy_shadow_plane_state (C function)”Œ&c.__drm_gem_destroy_shadow_plane_state”hNt”auh1j† hj h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ]void __drm_gem_destroy_shadow_plane_state (struct drm_shadow_plane_state *shadow_plane_state)”h]”j¤ )�”}”(hŒ\void __drm_gem_destroy_shadow_plane_state(struct drm_shadow_plane_state *shadow_plane_state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjB0h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj>0h²hh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´K÷ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQ0h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj>0h²hh³jP0h´K÷ubjÍ )�”}”(hŒ$__drm_gem_destroy_shadow_plane_state”h]”jÓ )�”}”(hŒ$__drm_gem_destroy_shadow_plane_state”h]”hŒ$__drm_gem_destroy_shadow_plane_state”…”�”}”(hjc0h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj_0ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj>0h²hh³jP0h´K÷ubjÞ)�”}”(hŒ3(struct drm_shadow_plane_state *shadow_plane_state)”h]”jä)�”}”(hŒ1struct drm_shadow_plane_state *shadow_plane_state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj{0ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒ0h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj{0ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_shadow_plane_state”h]”hŒdrm_shadow_plane_state”…”�”}”(hj�0h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjš0ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jŸ0Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jje0sbŒ&c.__drm_gem_destroy_shadow_plane_state”†”asbuh1hhj{0ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½0h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj{0ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjË0h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj{0ubjÓ )�”}”(hŒshadow_plane_state”h]”hŒshadow_plane_state”…”�”}”(hjØ0h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj{0ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjw0ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj>0h²hh³jP0h´K÷ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj:0h²hh³jP0h´K÷ubah}”(h]”j50ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jP0h´K÷hj70h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ%cleans up shadow-buffered plane state”h]”hŒ%cleans up shadow-buffered plane state”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´K÷hjÿ0h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj70h²hh³jP0h´K÷ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j1j$ j1j% ‰j& ‰j' ‰uh1j˜ h²hhj h³Nh´Nubj) )�”}”(hŒï**Parameters** ``struct drm_shadow_plane_state *shadow_plane_state`` the shadow-buffered plane state **Description** This function cleans up shadow-buffered plane state. Helpful for drivers that subclass struct drm_shadow_plane_state.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj$1h]”hŒ Parameters”…”�”}”(hj&1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj"1ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´Kûhj1ubjw )�”}”(hhh]”j| )�”}”(hŒV``struct drm_shadow_plane_state *shadow_plane_state`` the shadow-buffered plane state ”h]”(j‚ )�”}”(hŒ5``struct drm_shadow_plane_state *shadow_plane_state``”h]”jˆ )�”}”(hjC1h]”hŒ1struct drm_shadow_plane_state *shadow_plane_state”…”�”}”(hjE1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjA1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´Køhj=1ubjž )�”}”(hhh]”hÎ)�”}”(hŒthe shadow-buffered plane state”h]”hŒthe shadow-buffered plane state”…”�”}”(hj\1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jX1h´KøhjY1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj=1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jX1h´Køhj:1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj1ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj~1h]”hŒ Description”…”�”}”(hj€1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj|1ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´Kúhj1ubhÎ)�”}”(hŒuThis function cleans up shadow-buffered plane state. Helpful for drivers that subclass struct drm_shadow_plane_state.”h]”hŒuThis function cleans up shadow-buffered plane state. Helpful for drivers that subclass struct drm_shadow_plane_state.”…”�”}”(hj”1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´Kùhj1ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ/drm_gem_destroy_shadow_plane_state (C function)”Œ$c.drm_gem_destroy_shadow_plane_state”hNt”auh1j† hj h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒfvoid drm_gem_destroy_shadow_plane_state (struct drm_plane *plane, struct drm_plane_state *plane_state)”h]”j¤ )�”}”(hŒevoid drm_gem_destroy_shadow_plane_state(struct drm_plane *plane, struct drm_plane_state *plane_state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÃ1h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj¿1h²hh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒ1h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¿1h²hh³jÑ1h´MubjÍ )�”}”(hŒ"drm_gem_destroy_shadow_plane_state”h]”jÓ )�”}”(hŒ"drm_gem_destroy_shadow_plane_state”h]”hŒ"drm_gem_destroy_shadow_plane_state”…”�”}”(hjä1h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjà1ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj¿1h²hh³jÑ1h´MubjÞ)�”}”(hŒ>(struct drm_plane *plane, struct drm_plane_state *plane_state)”h]”(jä)�”}”(hŒstruct drm_plane *plane”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjü1ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj 2h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjü1ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_plane”h]”hŒ drm_plane”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj2ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j 2Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjæ1sbŒ$c.drm_gem_destroy_shadow_plane_state”†”asbuh1hhjü1ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>2h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjü1ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjL2h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjü1ubjÓ )�”}”(hŒplane”h]”hŒplane”…”�”}”(hjY2h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjü1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjø1ubjä)�”}”(hŒ#struct drm_plane_state *plane_state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjr2h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjn2ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjn2ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_plane_state”h]”hŒdrm_plane_state”…”�”}”(hj�2h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj�2ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j’2Œmodname”NŒ classname”Njé jì )�”}”jï ]”j:2Œ$c.drm_gem_destroy_shadow_plane_state”†”asbuh1hhjn2ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®2h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjn2ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj¼2h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjn2ubjÓ )�”}”(hŒ plane_state”h]”hŒ plane_state”…”�”}”(hjÉ2h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjn2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjø1ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj¿1h²hh³jÑ1h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj»1h²hh³jÑ1h´Mubah}”(h]”j¶1ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jÑ1h´Mhj¸1h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ#deletes shadow-buffered plane state”h]”hŒ#deletes shadow-buffered plane state”…”�”}”(hjó2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´Mhjð2h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¸1h²hh³jÑ1h´Mubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j 3j$ j 3j% ‰j& ‰j' ‰uh1j˜ h²hhj h³Nh´Nubj) )�”}”(hXn**Parameters** ``struct drm_plane *plane`` the plane ``struct drm_plane_state *plane_state`` the plane state of type struct drm_shadow_plane_state **Description** This function implements struct :c:type:`drm_plane_funcs.atomic_destroy_state ` for shadow-buffered planes. It expects that mappings of shadow buffers have been released already.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj3h]”hŒ Parameters”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´M hj3ubjw )�”}”(hhh]”(j| )�”}”(hŒ&``struct drm_plane *plane`` the plane ”h]”(j‚ )�”}”(hŒ``struct drm_plane *plane``”h]”jˆ )�”}”(hj43h]”hŒstruct drm_plane *plane”…”�”}”(hj63h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj23ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´Mhj.3ubjž )�”}”(hhh]”hÎ)�”}”(hŒ the plane”h]”hŒ the plane”…”�”}”(hjM3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jI3h´MhjJ3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj.3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jI3h´Mhj+3ubj| )�”}”(hŒ^``struct drm_plane_state *plane_state`` the plane state of type struct drm_shadow_plane_state ”h]”(j‚ )�”}”(hŒ'``struct drm_plane_state *plane_state``”h]”jˆ )�”}”(hjm3h]”hŒ#struct drm_plane_state *plane_state”…”�”}”(hjo3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjk3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´Mhjg3ubjž )�”}”(hhh]”hÎ)�”}”(hŒ5the plane state of type struct drm_shadow_plane_state”h]”hŒ5the plane state of type struct drm_shadow_plane_state”…”�”}”(hj†3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j‚3h´Mhjƒ3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjg3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j‚3h´Mhj+3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj3ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj¨3h]”hŒ Description”…”�”}”(hjª3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¦3ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´M hj3ubhÎ)�”}”(hŒÃThis function implements struct :c:type:`drm_plane_funcs.atomic_destroy_state ` for shadow-buffered planes. It expects that mappings of shadow buffers have been released already.”h]”(hŒ This function implements struct ”…”�”}”(hj¾3h²hh³Nh´Nubh)�”}”(hŒ@:c:type:`drm_plane_funcs.atomic_destroy_state `”h]”jˆ )�”}”(hjÈ3h]”hŒ$drm_plane_funcs.atomic_destroy_state”…”�”}”(hjÊ3h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÆ3ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_plane_funcs”uh1hh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´Mhj¾3ubhŒc for shadow-buffered planes. It expects that mappings of shadow buffers have been released already.”…”�”}”(hj¾3h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jå3h´Mhj3ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ)__drm_gem_reset_shadow_plane (C function)”Œc.__drm_gem_reset_shadow_plane”hNt”auh1j† hj h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒnvoid __drm_gem_reset_shadow_plane (struct drm_plane *plane, struct drm_shadow_plane_state *shadow_plane_state)”h]”j¤ )�”}”(hŒmvoid __drm_gem_reset_shadow_plane(struct drm_plane *plane, struct drm_shadow_plane_state *shadow_plane_state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj 4h²hh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj 4h²hh³j4h´MubjÍ )�”}”(hŒ__drm_gem_reset_shadow_plane”h]”jÓ )�”}”(hŒ__drm_gem_reset_shadow_plane”h]”hŒ__drm_gem_reset_shadow_plane”…”�”}”(hj14h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj-4ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj 4h²hh³j4h´MubjÞ)�”}”(hŒL(struct drm_plane *plane, struct drm_shadow_plane_state *shadow_plane_state)”h]”(jä)�”}”(hŒstruct drm_plane *plane”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjM4h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjI4ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZ4h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjI4ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_plane”h]”hŒ drm_plane”…”�”}”(hjk4h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjh4ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jm4Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj34sbŒc.__drm_gem_reset_shadow_plane”†”asbuh1hhjI4ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹4h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjI4ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj™4h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjI4ubjÓ )�”}”(hŒplane”h]”hŒplane”…”�”}”(hj¦4h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjI4ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjE4ubjä)�”}”(hŒ1struct drm_shadow_plane_state *shadow_plane_state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj¿4h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj»4ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌ4h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj»4ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_shadow_plane_state”h]”hŒdrm_shadow_plane_state”…”�”}”(hjÝ4h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÚ4ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jß4Œmodname”NŒ classname”Njé jì )�”}”jï ]”j‡4Œc.__drm_gem_reset_shadow_plane”†”asbuh1hhj»4ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjû4h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj»4ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj 5h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj»4ubjÓ )�”}”(hŒshadow_plane_state”h]”hŒshadow_plane_state”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj»4ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjE4ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj 4h²hh³j4h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj4h²hh³j4h´Mubah}”(h]”j4ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j4h´Mhj4h²hubj )�”}”(hhh]”hÎ)�”}”(hŒresets a shadow-buffered plane”h]”hŒresets a shadow-buffered plane”…”�”}”(hj@5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´Mhj=5h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj4h²hh³j4h´Mubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jX5j$ jX5j% ‰j& ‰j' ‰uh1j˜ h²hhj h³Nh´Nubj) )�”}”(hX**Parameters** ``struct drm_plane *plane`` the plane ``struct drm_shadow_plane_state *shadow_plane_state`` the shadow-buffered plane state **Description** This function resets state for shadow-buffered planes. Helpful for drivers that subclass struct drm_shadow_plane_state.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjb5h]”hŒ Parameters”…”�”}”(hjd5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj`5ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´Mhj\5ubjw )�”}”(hhh]”(j| )�”}”(hŒ&``struct drm_plane *plane`` the plane ”h]”(j‚ )�”}”(hŒ``struct drm_plane *plane``”h]”jˆ )�”}”(hj�5h]”hŒstruct drm_plane *plane”…”�”}”(hjƒ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´Mhj{5ubjž )�”}”(hhh]”hÎ)�”}”(hŒ the plane”h]”hŒ the plane”…”�”}”(hjš5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j–5h´Mhj—5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj{5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j–5h´Mhjx5ubj| )�”}”(hŒV``struct drm_shadow_plane_state *shadow_plane_state`` the shadow-buffered plane state ”h]”(j‚ )�”}”(hŒ5``struct drm_shadow_plane_state *shadow_plane_state``”h]”jˆ )�”}”(hjº5h]”hŒ1struct drm_shadow_plane_state *shadow_plane_state”…”�”}”(hj¼5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¸5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´Mhj´5ubjž )�”}”(hhh]”hÎ)�”}”(hŒthe shadow-buffered plane state”h]”hŒthe shadow-buffered plane state”…”�”}”(hjÓ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÏ5h´MhjÐ5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj´5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÏ5h´Mhjx5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj\5ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjõ5h]”hŒ Description”…”�”}”(hj÷5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjó5ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´Mhj\5ubhÎ)�”}”(hŒwThis function resets state for shadow-buffered planes. Helpful for drivers that subclass struct drm_shadow_plane_state.”h]”hŒwThis function resets state for shadow-buffered planes. Helpful for drivers that subclass struct drm_shadow_plane_state.”…”�”•}”(hj 6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´Mhj\5ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ'drm_gem_reset_shadow_plane (C function)”Œc.drm_gem_reset_shadow_plane”hNt”auh1j† hj h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ9void drm_gem_reset_shadow_plane (struct drm_plane *plane)”h]”j¤ )�”}”(hŒ8void drm_gem_reset_shadow_plane(struct drm_plane *plane)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj:6h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj66h²hh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´M-ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjI6h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj66h²hh³jH6h´M-ubjÍ )�”}”(hŒdrm_gem_reset_shadow_plane”h]”jÓ )�”}”(hŒdrm_gem_reset_shadow_plane”h]”hŒdrm_gem_reset_shadow_plane”…”�”}”(hj[6h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjW6ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj66h²hh³jH6h´M-ubjÞ)�”}”(hŒ(struct drm_plane *plane)”h]”jä)�”}”(hŒstruct drm_plane *plane”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjw6h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjs6ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„6h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjs6ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_plane”h]”hŒ drm_plane”…”�”}”(hj•6h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj’6ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j—6Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj]6sbŒc.drm_gem_reset_shadow_plane”†”asbuh1hhjs6ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµ6h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjs6ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÃ6h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjs6ubjÓ )�”}”(hŒplane”h]”hŒplane”…”�”}”(hjÐ6h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjs6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjo6ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj66h²hh³jH6h´M-ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj26h²hh³jH6h´M-ubah}”(h]”j-6ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jH6h´M-hj/6h²hubj )�”}”(hhh]”hÎ)�”}”(hŒresets a shadow-buffered plane”h]”hŒresets a shadow-buffered plane”…”�”}”(hjú6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´M-hj÷6h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj/6h²hh³jH6h´M-ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j7j$ j7j% ‰j& ‰j' ‰uh1j˜ h²hhj h³Nh´Nubj) )�”}”(hX3**Parameters** ``struct drm_plane *plane`` the plane **Description** This function implements struct :c:type:`drm_plane_funcs.reset_plane ` for shadow-buffered planes. It assumes the current plane state to be of type struct drm_shadow_plane and it allocates the new state of this type.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj7h]”hŒ Parameters”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´M1hj7ubjw )�”}”(hhh]”j| )�”}”(hŒ&``struct drm_plane *plane`` the plane ”h]”(j‚ )�”}”(hŒ``struct drm_plane *plane``”h]”jˆ )�”}”(hj;7h]”hŒstruct drm_plane *plane”…”�”}”(hj=7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj97ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´M.hj57ubjž )�”}”(hhh]”hÎ)�”}”(hŒ the plane”h]”hŒ the plane”…”�”}”(hjT7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jP7h´M.hjQ7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj57ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jP7h´M.hj27ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj7ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjv7h]”hŒ Description”…”�”}”(hjx7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjt7ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´M0hj7ubhÎ)�”}”(hŒéThis function implements struct :c:type:`drm_plane_funcs.reset_plane ` for shadow-buffered planes. It assumes the current plane state to be of type struct drm_shadow_plane and it allocates the new state of this type.”h]”(hŒ This function implements struct ”…”�”}”(hjŒ7h²hh³Nh´Nubh)�”}”(hŒ7:c:type:`drm_plane_funcs.reset_plane `”h]”jˆ )�”}”(hj–7h]”hŒdrm_plane_funcs.reset_plane”…”�”}”(hj˜7h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj”7ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_plane_funcs”uh1hh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´M/hjŒ7ubhŒ’ for shadow-buffered planes. It assumes the current plane state to be of type struct drm_shadow_plane and it allocates the new state of this type.”…”�”}”(hjŒ7h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j³7h´M/hj7ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ+drm_gem_begin_shadow_fb_access (C function)”Œ c.drm_gem_begin_shadow_fb_access”hNt”auh1j† hj h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒaint drm_gem_begin_shadow_fb_access (struct drm_plane *plane, struct drm_plane_state *plane_state)”h]”j¤ )�”}”(hŒ`int drm_gem_begin_shadow_fb_access(struct drm_plane *plane, struct drm_plane_state *plane_state)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjÞ7h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjÚ7h²hh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´MDubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjí7h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÚ7h²hh³jì7h´MDubjÍ )�”}”(hŒdrm_gem_begin_shadow_fb_access”h]”jÓ )�”}”(hŒdrm_gem_begin_shadow_fb_access”h]”hŒdrm_gem_begin_shadow_fb_access”…”�”}”(hjÿ7h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjû7ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÚ7h²hh³jì7h´MDubjÞ)�”}”(hŒ>(struct drm_plane *plane, struct drm_plane_state *plane_state)”h]”(jä)�”}”(hŒstruct drm_plane *plane”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj8ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(8h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj8ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_plane”h]”hŒ drm_plane”…”�”}”(hj98h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj68ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j;8Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj8sbŒ c.drm_gem_begin_shadow_fb_access”†”asbuh1hhj8ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjY8h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj8ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjg8h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj8ubjÓ )�”}”(hŒplane”h]”hŒplane”…”�”}”(hjt8h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj8ubjä)�”}”(hŒ#struct drm_plane_state *plane_state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj�8h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj‰8ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjš8h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj‰8ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_plane_state”h]”hŒdrm_plane_state”…”�”}”(hj«8h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¨8ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j­8Œmodname”NŒ classname”Njé jì )�”}”jï ]”jU8Œ c.drm_gem_begin_shadow_fb_access”†”asbuh1hhj‰8ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉ8h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj‰8ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj×8h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‰8ubjÓ )�”}”(hŒ plane_state”h]”hŒ plane_state”…”�”}”(hjä8h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj‰8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj8ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjÚ7h²hh³jì7h´MDubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjÖ7h²hh³jì7h´MDubah}”(h]”jÑ7ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jì7h´MDhjÓ7h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ+prepares shadow framebuffers for CPU access”h]”hŒ+prepares shadow framebuffers for CPU access”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´MDhj 9h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÓ7h²hh³jì7h´MDubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j&9j$ j&9j% ‰j& ‰j' ‰uh1j˜ h²hhj h³Nh´Nubj) )�”}”(hX›**Parameters** ``struct drm_plane *plane`` the plane ``struct drm_plane_state *plane_state`` the plane state of type struct drm_shadow_plane_state **Description** This function implements struct :c:type:`drm_plane_helper_funcs.begin_fb_access `. It maps all buffer objects of the plane's framebuffer into kernel address space and stores them in struct :c:type:`drm_shadow_plane_state.map `. The first data bytes are available in struct :c:type:`drm_shadow_plane_state.data `. See drm_gem_end_shadow_fb_access() for cleanup. **Return** 0 on success, or a negative errno code otherwise.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj09h]”hŒ Parameters”…”�”}”(hj29h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj.9ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´MHhj*9ubjw )�”}”(hhh]”(j| )�”}”(hŒ&``struct drm_plane *plane`` the plane ”h]”(j‚ )�”}”(hŒ``struct drm_plane *plane``”h]”jˆ )�”}”(hjO9h]”hŒstruct drm_plane *plane”…”�”}”(hjQ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjM9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´MEhjI9ubjž )�”}”(hhh]”hÎ)�”}”(hŒ the plane”h]”hŒ the plane”…”�”}”(hjh9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jd9h´MEhje9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjI9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jd9h´MEhjF9ubj| )�”}”(hŒ^``struct drm_plane_state *plane_state`` the plane state of type struct drm_shadow_plane_state ”h]”(j‚ )�”}”(hŒ'``struct drm_plane_state *plane_state``”h]”jˆ )�”}”(hjˆ9h]”hŒ#struct drm_plane_state *plane_state”…”�”}”(hjŠ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj†9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´MFhj‚9ubjž )�”}”(hhh]”hÎ)�”}”(hŒ5the plane state of type struct drm_shadow_plane_state”h]”hŒ5the plane state of type struct drm_shadow_plane_state”…”�”}”(hj¡9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j�9h´MFhjž9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj‚9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j�9h´MFhjF9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj*9ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjÃ9h]”hŒ Description”…”�”}”(hjÅ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÁ9ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´MHhj*9ubhÎ)�”}”(hX€This function implements struct :c:type:`drm_plane_helper_funcs.begin_fb_access `. It maps all buffer objects of the plane's framebuffer into kernel address space and stores them in struct :c:type:`drm_shadow_plane_state.map `. The first data bytes are available in struct :c:type:`drm_shadow_plane_state.data `.”h]”(hŒ This function implements struct ”…”�”}”(hjÙ9h²hh³Nh´Nubh)�”}”(hŒI:c:type:`drm_plane_helper_funcs.begin_fb_access `”h]”jˆ )�”}”(hjã9h]”hŒ&drm_plane_helper_funcs.begin_fb_access”…”�”}”(hjå9h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjá9ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_plane_helper_funcs”uh1hh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´MGhjÙ9ubhŒn. It maps all buffer objects of the plane’s framebuffer into kernel address space and stores them in struct ”…”�”}”(hjÙ9h²hh³Nh´Nubh)�”}”(hŒ=:c:type:`drm_shadow_plane_state.map `”h]”jˆ )�”}”(hj:h]”hŒdrm_shadow_plane_state.map”…”�”}”(hj :h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj:ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_shadow_plane_state”uh1hh³j:h´MGhjÙ9ubhŒ/. The first data bytes are available in struct ”…”�”}”(hjÙ9h²hh³Nh´Nubh)�”}”(hŒ>:c:type:`drm_shadow_plane_state.data `”h]”jˆ )�”}”(hj*:h]”hŒdrm_shadow_plane_state.data”…”�”}”(hj,:h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj(:ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_shadow_plane_state”uh1hh³j:h´MGhjÙ9ubhŒ.”…”�”}”(hjÙ9h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j:h´MGhj*9ubhÎ)�”}”(hŒ/See drm_gem_end_shadow_fb_access() for cleanup.”h]”hŒ/See drm_gem_end_shadow_fb_access() for cleanup.”…”�”}”(hjQ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´MLhj*9ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjb:h]”hŒReturn”…”�”}”(hjd:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj`:ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´MNhj*9ubhÎ)�”}”(hŒ10 on success, or a negative errno code otherwise.”h]”hŒ10 on success, or a negative errno code otherwise.”…”�”}”(hjx:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´MOhj*9ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ)drm_gem_end_shadow_fb_access (C function)”Œc.drm_gem_end_shadow_fb_access”hNt”auh1j† hj h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ`void drm_gem_end_shadow_fb_access (struct drm_plane *plane, struct drm_plane_state *plane_state)”h]”j¤ )�”}”(hŒ_void drm_gem_end_shadow_fb_access(struct drm_plane *plane, struct drm_plane_state *plane_state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj§:h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj£:h²hh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.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Œdrm_gem_end_shadow_fb_access”h]”jÓ )�”}”(hŒdrm_gem_end_shadow_fb_access”h]”hŒdrm_gem_end_shadow_fb_access”…”�”}”(hjÈ:h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÄ:ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj£:h²hh³jµ:h´M_ubjÞ)�”}”(hŒ>(struct drm_plane *plane, struct drm_plane_state *plane_state)”h]”(jä)�”}”(hŒstruct drm_plane *plane”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Œ drm_plane”h]”hŒ drm_plane”…”�”}”(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%)�”}”jjÊ:sbŒc.drm_gem_end_shadow_fb_access”†”asbuh1hhjà:ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj";h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjà:ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj0;h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjà:ubjÓ )�”}”(hŒplane”h]”hŒplane”…”�”}”(hj=;h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjà:ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÜ:ubjä)�”}”(hŒ#struct drm_plane_state *plane_state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjV;h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjR;ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjc;h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjR;ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_plane_state”h]”hŒdrm_plane_state”…”�”}”(hjt;h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjq;ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jv;Œmodname”NŒ classname”Njé jì )�”}”jï ]”j;Œc.drm_gem_end_shadow_fb_access”†”asbuh1hhjR;ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’;h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjR;ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj ;h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjR;ubjÓ )�”}”(hŒ plane_state”h]”hŒ plane_state”…”�”}”(hj­;h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjR;ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÜ:ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj£:h²hh³jµ:h´M_ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ,releases shadow framebuffers from CPU access”h]”hŒ,releases shadow framebuffers from CPU access”…”�”}”(hj×;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.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²hhj h³Nh´Nubj) )�”}”(hX›**Parameters** ``struct drm_plane *plane`` the plane ``struct drm_plane_state *plane_state`` the plane state of type struct drm_shadow_plane_state **Description** This function implements struct :c:type:`drm_plane_helper_funcs.end_fb_access `. It undoes all effects of drm_gem_begin_shadow_fb_access() in reverse order. See drm_gem_begin_shadow_fb_access() for more information.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjù;h]”hŒ Parameters”…”�”}”(hjû;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj÷;ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´Mchjó;ubjw )�”}”(hhh]”(j| )�”}”(hŒ&``struct drm_plane *plane`` the plane ”h]”(j‚ )�”}”(hŒ``struct drm_plane *plane``”h]”jˆ )�”}”(hj<h]”hŒstruct drm_plane *plane”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´M`hj<ubjž )�”}”(hhh]”hÎ)�”}”(hŒ the plane”h]”hŒ the plane”…”�”}”(hj1<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j-<h´M`hj.<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j-<h´M`hj<ubj| )�”}”(hŒ^``struct drm_plane_state *plane_state`` the plane state of type struct drm_shadow_plane_state ”h]”(j‚ )�”}”(hŒ'``struct drm_plane_state *plane_state``”h]”jˆ )�”}”(hjQ<h]”hŒ#struct drm_plane_state *plane_state”…”�”}”(hjS<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjO<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´MahjK<ubjž )�”}”(hhh]”hÎ)�”}”(hŒ5the plane state of type struct drm_shadow_plane_state”h]”hŒ5the plane state of type struct drm_shadow_plane_state”…”�”}”(hjj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jf<h´Mahjg<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjK<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jf<h´Mahj<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjó;ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjŒ<h]”hŒ Description”…”�”}”(hjŽ<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjŠ<ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´Mchjó;ubhÎ)�”}”(hŒ´This function implements struct :c:type:`drm_plane_helper_funcs.end_fb_access `. It undoes all effects of drm_gem_begin_shadow_fb_access() in reverse order.”h]”(hŒ This function implements struct ”…”�”}”(hj¢<h²hh³Nh´Nubh)�”}”(hŒG:c:type:`drm_plane_helper_funcs.end_fb_access `”h]”jˆ )�”}”(hj¬<h]”hŒ$drm_plane_helper_funcs.end_fb_access”…”�”}”(hj®<h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjª<ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_plane_helper_funcs”uh1hh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´Mbhj¢<ubhŒM. It undoes all effects of drm_gem_begin_shadow_fb_access() in reverse order.”…”�”}”(hj¢<h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÉ<h´Mbhjó;ubhÎ)�”}”(hŒ:See drm_gem_begin_shadow_fb_access() for more information.”h]”hŒ:See drm_gem_begin_shadow_fb_access() for more information.”…”�”}”(hjÔ<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´Mehjó;ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ6drm_gem_simple_kms_begin_shadow_fb_access (C function)”Œ+c.drm_gem_simple_kms_begin_shadow_fb_access”hNt”auh1j† hj h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒyint drm_gem_simple_kms_begin_shadow_fb_access (struct drm_simple_display_pipe *pipe, struct drm_plane_state *plane_state)”h]”j¤ )�”}”(hŒxint drm_gem_simple_kms_begin_shadow_fb_access(struct drm_simple_display_pipe *pipe, struct drm_plane_state *plane_state)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjÿ<h²hh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´Muubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÿ<h²hh³j=h´MuubjÍ )�”}”(hŒ)drm_gem_simple_kms_begin_shadow_fb_access”h]”jÓ )�”}”(hŒ)drm_gem_simple_kms_begin_shadow_fb_access”h]”hŒ)drm_gem_simple_kms_begin_shadow_fb_access”…”�”}”(hj$=h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj =ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÿ<h²hh³j=h´MuubjÞ)�”}”(hŒK(struct drm_simple_display_pipe *pipe, struct drm_plane_state *plane_state)”h]”(jä)�”}”(hŒ$struct drm_simple_display_pipe *pipe”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj@=h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj<=ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjM=h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj<=ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_simple_display_pipe”h]”hŒdrm_simple_display_pipe”…”�”}”(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%)�”}”jj&=sbŒ+c.drm_gem_simple_kms_begin_shadow_fb_access”†”asbuh1hhj<=ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~=h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj<=ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjŒ=h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj<=ubjÓ )�”}”(hŒpipe”h]”hŒpipe”…”�”}”(hj™=h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj<=ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj8=ubjä)�”}”(hŒ#struct drm_plane_state *plane_state”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Œdrm_plane_state”h]”hŒdrm_plane_state”…”�”}”(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ï ]”jz=Œ+c.drm_gem_simple_kms_begin_shadow_fb_access”†”asbuh1hhj®=ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjî=h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj®=ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjü=h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj®=ubjÓ )�”}”(hŒ plane_state”h]”hŒ plane_state”…”�”}”(hj >h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj®=ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj8=ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjÿ<h²hh³j=h´Muubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjû<h²hh³j=h´Muubah}”(h]”jö<ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j=h´Muhjø<h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ+prepares shadow framebuffers for CPU access”h]”hŒ+prepares shadow framebuffers for CPU access”…”�”}”(hj3>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´Muhj0>h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjø<h²hh³j=h´Muubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jK>j$ jK>j% ‰j& ‰j' ‰uh1j˜ h²hhj h³Nh´Nubj) )�”}”(hX¸**Parameters** ``struct drm_simple_display_pipe *pipe`` the simple display pipe ``struct drm_plane_state *plane_state`` the plane state of type struct drm_shadow_plane_state **Description** This function implements struct drm_simple_display_funcs.begin_fb_access. See drm_gem_begin_shadow_fb_access() for details and drm_gem_simple_kms_cleanup_shadow_fb() for cleanup. **Return** 0 on success, or a negative errno code otherwise.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjU>h]”hŒ Parameters”…”�”}”(hjW>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjS>ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´MyhjO>ubjw )�”}”(hhh]”(j| )�”}”(hŒA``struct drm_simple_display_pipe *pipe`` the simple display pipe ”h]”(j‚ )�”}”(hŒ(``struct drm_simple_display_pipe *pipe``”h]”jˆ )�”}”(hjt>h]”hŒ$struct drm_simple_display_pipe *pipe”…”�”}”(hjv>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjr>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´Mvhjn>ubjž )�”}”(hhh]”hÎ)�”}”(hŒthe simple display pipe”h]”hŒthe simple display pipe”…”�”}”(hj�>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j‰>h´MvhjŠ>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjn>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j‰>h´Mvhjk>ubj| )�”}”(hŒ^``struct drm_plane_state *plane_state`` the plane state of type struct drm_shadow_plane_state ”h]”(j‚ )�”}”(hŒ'``struct drm_plane_state *plane_state``”h]”jˆ )�”}”(hj­>h]”hŒ#struct drm_plane_state *plane_state”…”�”}”(hj¯>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj«>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´Mwhj§>ubjž )�”}”(hhh]”hÎ)�”}”(hŒ5the plane state of type struct drm_shadow_plane_state”h]”hŒ5the plane state of type struct drm_shadow_plane_state”…”�”}”(hjÆ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÂ>h´MwhjÃ>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj§>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÂ>h´Mwhjk>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjO>ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjè>h]”hŒ Description”…”�”}”(hjê>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjæ>ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´MyhjO>ubhÎ)�”}”(hŒIThis function implements struct drm_simple_display_funcs.begin_fb_access.”h]”hŒIThis function implements struct drm_simple_display_funcs.begin_fb_access.”…”�”}”(hjþ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´MxhjO>ubhÎ)�”}”(hŒhSee drm_gem_begin_shadow_fb_access() for details and drm_gem_simple_kms_cleanup_shadow_fb() for cleanup.”h]”hŒhSee drm_gem_begin_shadow_fb_access() for details and drm_gem_simple_kms_cleanup_shadow_fb() for cleanup.”…”�”}”(hj ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´MzhjO>ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj?h]”hŒReturn”…”�”}”(hj ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´M}hjO>ubhÎ)�”}”(hŒ10 on success, or a negative errno code otherwise.”h]”hŒ10 on success, or a negative errno code otherwise.”…”�”}”(hj4?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´M~hjO>ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ4drm_gem_simple_kms_end_shadow_fb_access (C function)”Œ)c.drm_gem_simple_kms_end_shadow_fb_access”hNt”auh1j† hj h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒxvoid drm_gem_simple_kms_end_shadow_fb_access (struct drm_simple_display_pipe *pipe, struct drm_plane_state *plane_state)”h]”j¤ )�”}”(hŒwvoid drm_gem_simple_kms_end_shadow_fb_access(struct drm_simple_display_pipe *pipe, struct drm_plane_state *plane_state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjc?h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj_?h²hh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´M‰ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjr?h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj_?h²hh³jq?h´M‰ubjÍ )�”}”(hŒ'drm_gem_simple_kms_end_shadow_fb_access”h]”jÓ )�”}”(hŒ'drm_gem_simple_kms_end_shadow_fb_access”h]”hŒ'drm_gem_simple_kms_end_shadow_fb_access”…”�”}”(hj„?h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj€?ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj_?h²hh³jq?h´M‰ubjÞ)�”}”(hŒK(struct drm_simple_display_pipe *pipe, struct drm_plane_state *plane_state)”h]”(jä)�”}”(hŒ$struct drm_simple_display_pipe *pipe”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Œdrm_simple_display_pipe”h]”hŒdrm_simple_display_pipe”…”�”}”(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%)�”}”jj†?sbŒ)c.drm_gem_simple_kms_end_shadow_fb_access”†”asbuh1hhjœ?ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞ?h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjœ?ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjì?h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjœ?ubjÓ )�”}”(hŒpipe”h]”hŒpipe”…”�”}”(hjù?h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjœ?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj˜?ubjä)�”}”(hŒ#struct drm_plane_state *plane_state”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Œdrm_plane_state”h]”hŒdrm_plane_state”…”�”}”(hj0@h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj-@ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j2@Œmodname”NŒ classname”Njé jì )�”}”jï ]”jÚ?Œ)c.drm_gem_simple_kms_end_shadow_fb_access”†”asbuh1hhj@ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjN@h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj@ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj\@h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj@ubjÓ )�”}”(hŒ plane_state”h]”hŒ plane_state”…”�”}”(hji@h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj@ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj˜?ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj_?h²hh³jq?h´M‰ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj[?h²hh³jq?h´M‰ubah}”(h]”jV?ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jq?h´M‰hjX?h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ,releases shadow framebuffers from CPU access”h]”hŒ,releases shadow framebuffers from CPU access”…”�”}”(hj“@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´M‰hj�@h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjX?h²hh³jq?h´M‰ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j«@j$ j«@j% ‰j& ‰j' ‰uh1j˜ h²hhj h³Nh´Nubj) )�”}”(hX–**Parameters** ``struct drm_simple_display_pipe *pipe`` the simple display pipe ``struct drm_plane_state *plane_state`` the plane state of type struct drm_shadow_plane_state **Description** This function implements struct drm_simple_display_funcs.end_fb_access. It undoes all effects of drm_gem_simple_kms_begin_shadow_fb_access() in reverse order. See drm_gem_simple_kms_begin_shadow_fb_access().”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjµ@h]”hŒ Parameters”…”�”}”(hj·@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj³@ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´M�hj¯@ubjw )�”}”(hhh]”(j| )�”}”(hŒA``struct drm_simple_display_pipe *pipe`` the simple display pipe ”h]”(j‚ )�”}”(hŒ(``struct drm_simple_display_pipe *pipe``”h]”jˆ )�”}”(hjÔ@h]”hŒ$struct drm_simple_display_pipe *pipe”…”�”}”(hjÖ@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÒ@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´MŠhjÎ@ubjž )�”}”(hhh]”hÎ)�”}”(hŒthe simple display pipe”h]”hŒthe simple display pipe”…”�”}”(hjí@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jé@h´MŠhjê@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÎ@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jé@h´MŠhjË@ubj| )�”}”(hŒ^``struct drm_plane_state *plane_state`` the plane state of type struct drm_shadow_plane_state ”h]”(j‚ )�”}”(hŒ'``struct drm_plane_state *plane_state``”h]”jˆ )�”}”(hj Ah]”hŒ#struct drm_plane_state *plane_state”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj Aubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´M‹hjAubjž )�”}”(hhh]”hÎ)�”}”(hŒ5the plane state of type struct drm_shadow_plane_state”h]”hŒ5the plane state of type struct drm_shadow_plane_state”…”�”}”(hj&Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j"Ah´M‹hj#Aubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjAubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j"Ah´M‹hjË@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj¯@ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjHAh]”hŒ Description”…”�”}”(hjJAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjFAubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´M�hj¯@ubhÎ)�”}”(hŒžThis function implements struct drm_simple_display_funcs.end_fb_access. It undoes all effects of drm_gem_simple_kms_begin_shadow_fb_access() in reverse order.”h]”hŒžThis function implements struct drm_simple_display_funcs.end_fb_access. It undoes all effects of drm_gem_simple_kms_begin_shadow_fb_access() in reverse order.”…”�”}”(hj^Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´MŒhj¯@ubhÎ)�”}”(hŒ0See drm_gem_simple_kms_begin_shadow_fb_access().”h]”hŒ0See drm_gem_simple_kms_begin_shadow_fb_access().”…”�”}”(hjmAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´M�hj¯@ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ2drm_gem_simple_kms_reset_shadow_plane (C function)”Œ'c.drm_gem_simple_kms_reset_shadow_plane”hNt”auh1j† hj h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒQvoid drm_gem_simple_kms_reset_shadow_plane (struct drm_simple_display_pipe *pipe)”h]”j¤ )�”}”(hŒPvoid drm_gem_simple_kms_reset_shadow_plane(struct drm_simple_display_pipe *pipe)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjœAh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj˜Ah²hh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´M›ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«Ah²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj˜Ah²hh³jªAh´M›ubjÍ )�”}”(hŒ%drm_gem_simple_kms_reset_shadow_plane”h]”jÓ )�”}”(hŒ%drm_gem_simple_kms_reset_shadow_plane”h]”hŒ%drm_gem_simple_kms_reset_shadow_plane”…”�”}”(hj½Ah²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¹Aubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj˜Ah²hh³jªAh´M›ubjÞ)�”}”(hŒ&(struct drm_simple_display_pipe *pipe)”h]”jä)�”}”(hŒ$struct drm_simple_display_pipe *pipe”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjÙAh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjÕAubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæAh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÕAubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_simple_display_pipe”h]”hŒdrm_simple_display_pipe”…”�”}”(hj÷Ah²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjôAubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jùAŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj¿AsbŒ'c.drm_gem_simple_kms_reset_shadow_plane”†”asbuh1hhjÕAubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÕAubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj%Bh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÕAubjÓ )�”}”(hŒpipe”h]”hŒpipe”…”�”}”(hj2Bh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÕAubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÑAubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj˜Ah²hh³jªAh´M›ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj”Ah²hh³jªAh´M›ubah}”(h]”j�Aah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jªAh´M›hj‘Ah²hubj )�”}”(hhh]”hÎ)�”}”(hŒresets a shadow-buffered plane”h]”hŒresets a shadow-buffered plane”…”�”}”(hj\Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´M›hjYBh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj‘Ah²hh³jªAh´M›ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jtBj$ jtBj% ‰j& ‰j' ‰uh1j˜ h²hhj h³Nh´Nubj) )�”}”(hŒÅ**Parameters** ``struct drm_simple_display_pipe *pipe`` the simple display pipe **Description** This function implements struct drm_simple_display_funcs.reset_plane for shadow-buffered planes.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj~Bh]”hŒ Parameters”…”�”}”(hj€Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj|Bubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´MŸhjxBubjw )�”}”(hhh]”j| )�”}”(hŒA``struct drm_simple_display_pipe *pipe`` the simple display pipe ”h]”(j‚ )�”}”(hŒ(``struct drm_simple_display_pipe *pipe``”h]”jˆ )�”}”(hj�Bh]”hŒ$struct drm_simple_display_pipe *pipe”…”�”}”(hjŸBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj›Bubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´Mœhj—Bubjž )�”}”(hhh]”hÎ)�”}”(hŒthe simple display pipe”h]”hŒthe simple display pipe”…”�”}”(hj¶Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j²Bh´Mœhj³Bubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj—Bubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j²Bh´Mœhj”Bubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjxBubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjØBh]”hŒ Description”…”�”}”(hjÚBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÖBubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´MžhjxBubhÎ)�”}”(hŒ`This function implements struct drm_simple_display_funcs.reset_plane for shadow-buffered planes.”h]”hŒ`This function implements struct drm_simple_display_funcs.reset_plane for shadow-buffered planes.”…”�”}”(hjîBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´M�hjxBubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ ŒCŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jŒ/drm_gem_simple_kms_duplicate_shadow_plane_state”sbŒ1c.drm_gem_simple_kms_duplicate_shadow_plane_state”†”asbuh1hhjCh²hh³j*Ch´M¨ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]Ch²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjCh²hh³j*Ch´M¨ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjkCh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjCh²hh³j*Ch´M¨ubjÍ )�”}”(hŒ/drm_gem_simple_kms_duplicate_shadow_plane_state”h]”jÓ )�”}”(hjZCh]”hŒ/drm_gem_simple_kms_duplicate_shadow_plane_state”…”�”}”(hj|Ch²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjxCubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjCh²hh³j*Ch´M¨ubjÞ)�”}”(hŒ&(struct drm_simple_display_pipe *pipe)”h]”jä)�”}”(hŒ$struct drm_simple_display_pipe *pipe”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj—Ch²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj“Cubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤Ch²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj“Cubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_simple_display_pipe”h]”hŒdrm_simple_display_pipe”…”�”}”(hjµCh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj²Cubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j·CŒmodname”NŒ classname”Njé jì )�”}”jï ]”jXCŒ1c.drm_gem_simple_kms_duplicate_shadow_plane_state”†”asbuh1hhj“Cubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓCh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj“Cubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjáCh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj“CubjÓ )�”}”(hŒpipe”h]”hŒpipe”…”�”}”(hjîCh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj“Cubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj�Cubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjCh²hh³j*Ch´M¨ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjCh²hh³j*Ch´M¨ubah}”(h]”jCah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j*Ch´M¨hjCh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ&duplicates shadow-buffered plane state”h]”hŒ&duplicates shadow-buffered plane state”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œk/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:94: ./drivers/gpu/drm/drm_gem_atomic_helper.c”h´M¨hjDh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjCh²hh³j*Ch´M¨ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j0Dj$ j0Dj% ‰j& ‰j' ‰uh1j˜ h²hhj h³Nh´Nubj) )�”}”(hX¼**Parameters** ``struct drm_simple_display_pipe *pipe`` the simple display pipe **Description** This function implements struct drm_simple_display_funcs.duplicate_plane_state for shadow-buffered planes. It does not duplicate existing mappings of the shadow buffers. Mappings are maintained during the atomic commit by the plane's prepare_fb and cleanup_fb helpers. **Return** A pointer to a new plane state on success, or NULL otherwise.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj:Dh]”hŒ Parameters”…”�”}”(hj`.”h]”(hXOnce the driver enables vblank support with drm_vblank_init(), each CRTC’s vblank timer fires according to the programmed display mode. By default, the vblank timer invokes drm_crtc_handle_vblank(). Drivers with more specific requirements can set their own handler function in struct ”…”�”}”(hj�Gh²hh³Nh´Nubh)�”}”(hŒM:c:type:`drm_crtc_helper_funcs.handle_vblank_timeout `”h]”jˆ )�”}”(hj—Gh]”hŒ+drm_crtc_helper_funcs.handle_vblank_timeout”…”�”}”(hj™Gh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj•Gubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_crtc_helper_funcs”uh1hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:100: ./drivers/gpu/drm/drm_vblank_helper.c”h´Khj�GubhŒ.”…”�”}”(hj�Gh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j´Gh´KhjGh²hubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ&DRM_CRTC_HELPER_VBLANK_FUNCS (C macro)”Œc.DRM_CRTC_HELPER_VBLANK_FUNCS”hNt”auh1j† hjGh²hh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:103: ./include/drm/drm_vblank_helper.h”h´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒDRM_CRTC_HELPER_VBLANK_FUNCS”h]”j¤ )�”}”(hŒDRM_CRTC_HELPER_VBLANK_FUNCS”h]”jÍ )�”}”(hŒDRM_CRTC_HELPER_VBLANK_FUNCS”h]”jÓ )�”}”(hjÓGh]”hŒDRM_CRTC_HELPER_VBLANK_FUNCS”…”�”}”(hjÝGh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÙGubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÕGh²hh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:103: ./include/drm/drm_vblank_helper.h”h´Kubah}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjÑGh²hh³jðGh´Kubah}”(h]”jËGah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jðGh´KhjÎGh²hubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j hjÎGh²hh³jðGh´Kubeh}”(h]”h ]”(j Œmacro”eh"]”h$]”h&]”j" j j# j Hj$ j Hj% ‰j& ‰j' ‰uh1j˜ h²hhjGh³jÍGh´NubhÎ)�”}”(hŒ ``DRM_CRTC_HELPER_VBLANK_FUNCS``”h]”jˆ )�”}”(hjHh]”hŒDRM_CRTC_HELPER_VBLANK_FUNCS”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj Hubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:103: ./include/drm/drm_vblank_helper.h”h´KhjGh²hubj^E)�”}”(hŒ¤ Default implementation for VBLANK helpers **Description** This macro initializes struct :c:type:`drm_crtc_helper_funcs` to default helpers for VBLANK handling. ”h]”(j^E)�”}”(hŒ*Default implementation for VBLANK helpers ”h]”hÎ)�”}”(hŒ)Default implementation for VBLANK helpers”h]”hŒ)Default implementation for VBLANK helpers”…”�”}”(hj-Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:103: ./include/drm/drm_vblank_helper.h”h´Khj)Hubah}”(h]”h ]”h"]”h$]”h&]”uh1j]Eh³j;Hh´Khj%HubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjDHh]”hŒ Description”…”�”}”(hjFHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjBHubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:103: ./include/drm/drm_vblank_helper.h”h´Khj%HubhÎ)�”}”(hŒeThis macro initializes struct :c:type:`drm_crtc_helper_funcs` to default helpers for VBLANK handling.”h]”(hŒThis macro initializes struct ”…”�”}”(hjZHh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_crtc_helper_funcs`”h]”jˆ )�”}”(hjdHh]”hŒdrm_crtc_helper_funcs”…”�”}”(hjfHh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjbHubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_crtc_helper_funcs”uh1hh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:103: ./include/drm/drm_vblank_helper.h”h´KhjZHubhŒ( to default helpers for VBLANK handling.”…”�”}”(hjZHh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j�Hh´Khj%Hubeh}”(h]”h ]”h"]”h$]”h&]”uh1j]Eh³j;Hh´KhjGh²hubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ%DRM_CRTC_VBLANK_TIMER_FUNCS (C macro)”Œc.DRM_CRTC_VBLANK_TIMER_FUNCS”hNt”auh1j† hjGh²hh³jÍGh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒDRM_CRTC_VBLANK_TIMER_FUNCS”h]”j¤ )�”}”(hŒDRM_CRTC_VBLANK_TIMER_FUNCS”h]”jÍ )�”}”(hŒDRM_CRTC_VBLANK_TIMER_FUNCS”h]”jÓ )�”}”(hj¥Hh]”hŒDRM_CRTC_VBLANK_TIMER_FUNCS”…”�”}”(hj¯Hh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj«Hubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj§Hh²hh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:103: ./include/drm/drm_vblank_helper.h”h´K.ubah}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj£Hh²hh³jÂHh´K.ubah}”(h]”jžHah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jÂHh´K.hj Hh²hubj )�”}”(hhh]”h•}”(h]”h ]”h"]”h$]”h&]”uh1j hj Hh²hh³jÂHh´K.ubeh}”(h]”h ]”(j Œmacro”eh"]”h$]”h&]”j" j j# jÛHj$ jÛHj% ‰j& ‰j' ‰uh1j˜ h²hhjGh³jÍGh´NubhÎ)�”}”(hŒ``DRM_CRTC_VBLANK_TIMER_FUNCS``”h]”jˆ )�”}”(hjáHh]”hŒDRM_CRTC_VBLANK_TIMER_FUNCS”…”�”}”(hjãHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjßHubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:103: ./include/drm/drm_vblank_helper.h”h´K0hjGh²hubj^E)�”}”(hŒš Default implementation for VBLANK timers **Description** This macro initializes struct :c:type:`drm_crtc_funcs` to default helpers for VBLANK timers. ”h]”(j^E)�”}”(hŒ)Default implementation for VBLANK timers ”h]”hÎ)�”}”(hŒ(Default implementation for VBLANK timers”h]”hŒ(Default implementation for VBLANK timers”…”�”}”(hjÿHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:103: ./include/drm/drm_vblank_helper.h”h´K.hjûHubah}”(h]”h ]”h"]”h$]”h&]”uh1j]Eh³j Ih´K.hj÷HubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjIh]”hŒ Description”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjIubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:103: ./include/drm/drm_vblank_helper.h”h´K0hj÷HubhÎ)�”}”(hŒ\This macro initializes struct :c:type:`drm_crtc_funcs` to default helpers for VBLANK timers.”h]”(hŒThis macro initializes struct ”…”�”}”(hj,Ih²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_crtc_funcs`”h]”jˆ )�”}”(hj6Ih]”hŒdrm_crtc_funcs”…”�”}”(hj8Ih²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj4Iubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_crtc_funcs”uh1hh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:103: ./include/drm/drm_vblank_helper.h”h´K/hj,IubhŒ& to default helpers for VBLANK timers.”…”�”}”(hj,Ih²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jSIh´K/hj÷Hubeh}”(h]”h ]”h"]”h$]”h&]”uh1j]Eh³j Ih´K.hjGh²hubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ)drm_crtc_vblank_atomic_flush (C function)”Œc.drm_crtc_vblank_atomic_flush”hNt”auh1j† hjGh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒZvoid drm_crtc_vblank_atomic_flush (struct drm_crtc *crtc, struct drm_atomic_commit *state)”h]”j¤ )�”}”(hŒYvoid drm_crtc_vblank_atomic_flush(struct drm_crtc *crtc, struct drm_atomic_commit *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj}Ih²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjyIh²hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:106: ./drivers/gpu/drm/drm_vblank_helper.c”h´K(ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒIh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjyIh²hh³j‹Ih´K(ubjÍ )�”}”(hŒdrm_crtc_vblank_atomic_flush”h]”jÓ )�”}”(hŒdrm_crtc_vblank_atomic_flush”h]”hŒdrm_crtc_vblank_atomic_flush”…”�”}”(hjžIh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjšIubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjyIh²hh³j‹Ih´K(ubjÞ)�”}”(hŒ8(struct drm_crtc *crtc, struct drm_atomic_commit *state)”h]”(jä)�”}”(hŒstruct drm_crtc *crtc”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjºIh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj¶Iubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇIh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¶Iubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_crtc”h]”hŒdrm_crtc”…”�”}”(hjØIh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÕIubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jÚIŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj IsbŒc.drm_crtc_vblank_atomic_flush”†”asbuh1hhj¶Iubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjøIh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¶Iubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¶IubjÓ )�”}”(hŒcrtc”h]”hŒcrtc”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¶Iubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj²Iubjä)�”}”(hŒstruct drm_atomic_commit *state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj,Jh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj(Jubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9Jh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj(Jubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_atomic_commit”h]”hŒdrm_atomic_commit”…”�”}”(hjJJh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjGJubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jLJŒmodname”NŒ classname”Njé jì )�”}”jï ]”jôIŒc.drm_crtc_vblank_atomic_flush”†”asbuh1hhj(Jubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhJh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj(Jubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjvJh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj(JubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hjƒJh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj(Jubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj²Iubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjyIh²hh³j‹Ih´K(ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjuIh²hh³j‹Ih´K(ubah}”(h]”jpIah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j‹Ih´K(hjrIh²hubj )�”}”(hhh]”hÎ)�”}”(hŒVImplements struct :c:type:`drm_crtc_helper_funcs.atomic_flush `”h]”(hŒImplements struct ”…”�”}”(hj­Jh²hh³Nh´Nubh)�”}”(hŒD:c:type:`drm_crtc_helper_funcs.atomic_flush `”h]”jˆ )�”}”(hj·Jh]”hŒ"drm_crtc_helper_funcs.atomic_flush”…”�”}”(hj¹Jh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjµJubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jì )�”}”jï ]”jôIŒc.drm_crtc_vblank_atomic_flush”†”asbjñ Œdrm_crtc_helper_funcs”uh1hh³j‹Ih´K(hj­Jubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:106: ./drivers/gpu/drm/drm_vblank_helper.c”h´K(hjªJh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjrIh²hh³j‹Ih´K(ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jéJj$ jéJj% ‰j& ‰j' ‰uh1j˜ h²hhjGh³Nh´Nubj) )�”}”(hXu**Parameters** ``struct drm_crtc *crtc`` The CRTC ``struct drm_atomic_commit *state`` The atomic state to apply **Description** The helper drm_crtc_vblank_atomic_flush() implements atomic_flush of struct drm_crtc_helper_funcs for CRTCs that only need to send out a VBLANK event. See also struct :c:type:`drm_crtc_helper_funcs.atomic_flush `.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjóJh]”hŒ Parameters”…”�”}”(hjõJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjñJubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:106: ./drivers/gpu/drm/drm_vblank_helper.c”h´K,hjíJubjw )�”}”(hhh]”(j| )�”}”(hŒ#``struct drm_crtc *crtc`` The CRTC ”h]”(j‚ )�”}”(hŒ``struct drm_crtc *crtc``”h]”jˆ )�”}”(hjKh]”hŒstruct drm_crtc *crtc”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjKubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:106: ./drivers/gpu/drm/drm_vblank_helper.c”h´K*hj Kubjž )�”}”(hhh]”hÎ)�”}”(hŒThe CRTC”h]”hŒThe CRTC”…”�”}”(hj+Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j'Kh´K*hj(Kubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j'Kh´K*hj Kubj| )�”}”(hŒ>``struct drm_atomic_commit *state`` The atomic state to apply ”h]”(j‚ )�”}”(hŒ#``struct drm_atomic_commit *state``”h]”jˆ )�”}”(hjKKh]”hŒstruct drm_atomic_commit *state”…”�”}”(hjMKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjIKubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:106: ./drivers/gpu/drm/drm_vblank_helper.c”h´K+hjEKubjž )�”}”(hhh]”hÎ)�”}”(hŒThe atomic state to apply”h]”hŒThe atomic state to apply”…”�”}”(hjdKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j`Kh´K+hjaKubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjEKubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j`Kh´K+hj Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjíJubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj†Kh]”hŒ Description”…”�”}”(hjˆKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj„Kubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:106: ./drivers/gpu/drm/drm_vblank_helper.c”h´K-hjíJubhÎ)�”}”(hŒ–The helper drm_crtc_vblank_atomic_flush() implements atomic_flush of struct drm_crtc_helper_funcs for CRTCs that only need to send out a VBLANK event.”h]”hŒ–The helper drm_crtc_vblank_atomic_flush() implements atomic_flush of struct drm_crtc_helper_funcs for CRTCs that only need to send out a VBLANK event.”…”�”}”(hjœKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:106: ./drivers/gpu/drm/drm_vblank_helper.c”h´K,hjíJubhÎ)�”}”(hŒUSee also struct :c:type:`drm_crtc_helper_funcs.atomic_flush `.”h]”(hŒSee also struct ”…”�”}”(hj«Kh²hh³Nh´Nubh)�”}”(hŒD:c:type:`drm_crtc_helper_funcs.atomic_flush `”h]”jˆ )�”}”(hjµKh]”hŒ"drm_crtc_helper_funcs.atomic_flush”…”�”}”(hj·Kh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj³Kubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_crtc_helper_funcs”uh1hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:106: ./drivers/gpu/drm/drm_vblank_helper.c”h´K0hj«KubhŒ.”…”�”}”(hj«Kh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÒKh´K0hjíJubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjGh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ*drm_crtc_vblank_atomic_enable (C function)”Œc.drm_crtc_vblank_atomic_enable”hNt”auh1j† hjGh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ[void drm_crtc_vblank_atomic_enable (struct drm_crtc *crtc, struct drm_atomic_commit *state)”h]”j¤ )�”}”(hŒZvoid drm_crtc_vblank_atomic_enable(struct drm_crtc *crtc, struct drm_atomic_commit *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjýKh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjùKh²hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:106: ./drivers/gpu/drm/drm_vblank_helper.c”h´KKubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Lh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjùKh²hh³j Lh´KKubjÍ )�”}”(hŒdrm_crtc_vblank_atomic_enable”h]”jÓ )�”}”(hŒdrm_crtc_vblank_atomic_enable”h]”hŒdrm_crtc_vblank_atomic_enable”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjLubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjùKh²hh³j Lh´KKubjÞ)�”}”(hŒ8(struct drm_crtc *crtc, struct drm_atomic_commit *state)”h]”(jä)�”}”(hŒstruct drm_crtc *crtc”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj:Lh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj6Lubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGLh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj6Lubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_crtc”h]”hŒdrm_crtc”…”�”}”(hjXLh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjULubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jZLŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj LsbŒc.drm_crtc_vblank_atomic_enable”†”asbuh1hhj6Lubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxLh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj6Lubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj†Lh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj6LubjÓ )�”}”(hŒcrtc”h]”hŒcrtc”…”�”}”(hj“Lh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj6Lubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj2Lubjä)�”}”(hŒstruct drm_atomic_commit *state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj¬Lh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj¨Lubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹Lh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¨Lubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_atomic_commit”h]”hŒdrm_atomic_commit”…”�”}”(hjÊLh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÇLubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jÌLŒmodname”NŒ classname”Njé jì )�”}”jï ]”jtLŒc.drm_crtc_vblank_atomic_enable”†”asbuh1hhj¨Lubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjèLh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¨Lubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjöLh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¨LubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¨Lubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj2Lubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjùKh²hh³j Lh´KKubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjõKh²hh³j Lh´KKubah}”(h]”jðKah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j Lh´KKhjòKh²hubj )�”}”(hhh]”hÎ)�”}”(hŒWImplements struct :c:type:`drm_crtc_helper_funcs.atomic_enable `”h]”(hŒImplements struct ”…”�”}”(hj-Mh²hh³Nh´Nubh)�”}”(hŒE:c:type:`drm_crtc_helper_funcs.atomic_enable `”h]”jˆ )�”}”(hj7Mh]”hŒ#drm_crtc_helper_funcs.atomic_enable”…”�”}”(hj9Mh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj5Mubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jì )�”}”jï ]”jtLŒc.drm_crtc_vblank_atomic_enable”†”asbjñ Œdrm_crtc_helper_funcs”uh1hh³j‹Ih´K(hj-Mubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:106: ./drivers/gpu/drm/drm_vblank_helper.c”h´KKhj*Mh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjòKh²hh³j Lh´KKubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jiMj$ jiMj% ‰j& ‰j' ‰uh1j˜ h²hhjGh³Nh´Nubj) )�”}”(hXe**Parameters** ``struct drm_crtc *crtc`` The CRTC ``struct drm_atomic_commit *state`` The atomic state **Description** The helper drm_crtc_vblank_atomic_enable() implements atomic_enable of struct drm_crtc_helper_funcs for CRTCs the only need to enable VBLANKs. See also struct :c:type:`drm_crtc_helper_funcs.atomic_enable `.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjsMh]”hŒ Parameters”…”�”}”(hjuMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjqMubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:106: ./drivers/gpu/drm/drm_vblank_helper.c”h´KOhjmMubjw )�”}”(hhh]”(j| )�”}”(hŒ#``struct drm_crtc *crtc`` The CRTC ”h]”(j‚ )�”}”(hŒ``struct drm_crtc *crtc``”h]”jˆ )�”}”(hj’Mh]”hŒstruct drm_crtc *crtc”…”�”}”(hj”Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj�Mubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:106: ./drivers/gpu/drm/drm_vblank_helper.c”h´KLhjŒMubjž )�”}”(hhh]”hÎ)�”}”(hŒThe CRTC”h]”hŒThe CRTC”…”�”}”(hj«Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j§Mh´KLhj¨Mubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjŒMubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j§Mh´KLhj‰Mubj| )�”}”(hŒ5``struct drm_atomic_commit *state`` The atomic state ”h]”(j‚ )�”}”(hŒ#``struct drm_atomic_commit *state``”h]”jˆ )�”}”(hjËMh]”hŒstruct drm_atomic_commit *state”…”�”}”(hjÍMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÉMubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:106: ./drivers/gpu/drm/drm_vblank_helper.c”h´KMhjÅMubjž )�”}”(hhh]”hÎ)�”}”(hŒThe atomic state”h]”hŒThe atomic state”…”�”}”(hjäMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jàMh´KMhjáMubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÅMubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jàMh´KMhj‰Mubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjmMubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjNh]”hŒ Description”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjNubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:106: ./drivers/gpu/drm/drm_vblank_helper.c”h´KOhjmMubhÎ)�”}”(hŒŽThe helper drm_crtc_vblank_atomic_enable() implements atomic_enable of struct drm_crtc_helper_funcs for CRTCs the only need to enable VBLANKs.”h]”hŒŽThe helper drm_crtc_vblank_atomic_enable() implements atomic_enable of struct drm_crtc_helper_funcs for CRTCs the only need to enable VBLANKs.”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:106: ./drivers/gpu/drm/drm_vblank_helper.c”h´KNhjmMubhÎ)�”}”(hŒVSee also struct :c:type:`drm_crtc_helper_funcs.atomic_enable `.”h]”(hŒSee also struct ”…”�”}”(hj+Nh²hh³Nh´Nubh)�”}”(hŒE:c:type:`drm_crtc_helper_funcs.atomic_enable `”h]”jˆ )�”}”(hj5Nh]”hŒ#drm_crtc_helper_funcs.atomic_enable”…”�”}”(hj7Nh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj3Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_crtc_helper_funcs”uh1hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:106: ./drivers/gpu/drm/drm_vblank_helper.c”h´KQhj+NubhŒ.”…”�”}”(hj+Nh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jRNh´KQhjmMubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjGh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ+drm_crtc_vblank_atomic_disable (C function)”Œ c.drm_crtc_vblank_atomic_disable”hNt”auh1j† hjGh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ\void drm_crtc_vblank_atomic_disable (struct drm_crtc *crtc, struct drm_atomic_commit *state)”h]”j¤ )�”}”(hŒ[void drm_crtc_vblank_atomic_disable(struct drm_crtc *crtc, struct drm_atomic_commit *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj}Nh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjyNh²hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:106: ./drivers/gpu/drm/drm_vblank_helper.c”h´K\ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒNh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjyNh²hh³j‹Nh´K\ubjÍ )�”}”(hŒdrm_crtc_vblank_atomic_disable”h]”jÓ )�”}”(hŒdrm_crtc_vblank_atomic_disable”h]”hŒdrm_crtc_vblank_atomic_disable”…”�”}”(hjžNh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjšNubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjyNh²hh³j‹Nh´K\ubjÞ)�”}”(hŒ8(struct drm_crtc *crtc, struct drm_atomic_commit *state)”h]”(jä)�”}”(hŒstruct drm_crtc *crtc”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjºNh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj¶Nubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇNh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¶Nubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_crtc”h]”hŒdrm_crtc”…”�”}”(hjØNh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÕNubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jÚNŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj NsbŒ c.drm_crtc_vblank_atomic_disable”†”asbuh1hhj¶Nubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjøNh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¶Nubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¶NubjÓ )�”}”(hŒcrtc”h]”hŒcrtc”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¶Nubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj²Nubjä)�”}”(hŒstruct drm_atomic_commit *state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj,Oh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj(Oubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9Oh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj(Oubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_atomic_commit”h]”hŒdrm_atomic_commit”…”�”}”(hjJOh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjGOubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jLOŒmodname”NŒ classname”Njé jì )�”}”jï ]”jôNŒ c.drm_crtc_vblank_atomic_disable”†”asbuh1hhj(Oubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhOh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj(Oubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjvOh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj(OubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hjƒOh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj(Oubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj²Nubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjyNh²hh³j‹Nh´K\ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjuNh²hh³j‹Nh´K\ubah}”(h]”jpNah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j‹Nh´K\hjrNh²hubj )�”}”(hhh]”hÎ)�”}”(hŒXImplements struct :c:type:`drm_crtc_helper_funcs.atomic_disable `”h]”(hŒImplements struct ”…”�”}”(hj­Oh²hh³Nh´Nubh)�”}”(hŒF:c:type:`drm_crtc_helper_funcs.atomic_disable `”h]”jˆ )�”}”(hj·Oh]”hŒ$drm_crtc_helper_funcs.atomic_disable”…”�”}”(hj¹Oh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjµOubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jì )�”}”jï ]”jôNŒ c.drm_crtc_vblank_atomic_disable”†”asbjñ Œdrm_crtc_helper_funcs”uh1hh³j‹Ih´K(hj­Oubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:106: ./drivers/gpu/drm/drm_vblank_helper.c”h´K\hjªOh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjrNh²hh³j‹Nh´K\ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jéOj$ jéOj% ‰j& ‰j' ‰uh1j˜ h²hhjGh³Nh´Nubj) )�”}”(hX[**Parameters** ``struct drm_crtc *crtc`` The CRTC ``struct drm_atomic_commit *state`` The atomic state **Description** The helper drm_crtc_vblank_atomic_disable() implements atomic_disable of struct drm_crtc_helper_funcs for CRTCs the only need to disable VBLANKs. See also struct :c:type:`drm_crtc_funcs.atomic_disable `.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjóOh]”hŒ Parameters”…”�”}”(hjõOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjñOubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:106: ./drivers/gpu/drm/drm_vblank_helper.c”h´K`hjíOubjw )�”}”(hhh]”(j| )�”}”(hŒ#``struct drm_crtc *crtc`` The CRTC ”h]”(j‚ )�”}”(hŒ``struct drm_crtc *crtc``”h]”jˆ )�”}”(hjPh]”hŒstruct drm_crtc *crtc”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjPubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:106: ./drivers/gpu/drm/drm_vblank_helper.c”h´K]hj Pubjž )�”}”(hhh]”hÎ)�”}”(hŒThe CRTC”h]”hŒThe CRTC”…”�”}”(hj+Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j'Ph´K]hj(Pubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj Pubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j'Ph´K]hj Pubj| )�”}”(hŒ5``struct drm_atomic_commit *state`` The atomic state ”h]”(j‚ )�”}”(hŒ#``struct drm_atomic_commit *state``”h]”jˆ )�”}”(hjKPh]”hŒstruct drm_atomic_commit *state”…”�”}”(hjMPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjIPubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:106: ./drivers/gpu/drm/drm_vblank_helper.c”h´K^hjEPubjž )�”}”(hhh]”hÎ)�”}”(hŒThe atomic state”h]”hŒThe atomic state”…”�”}”(hjdPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j`Ph´K^hjaPubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjEPubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j`Ph´K^hj Pubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjíOubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj†Ph]”hŒ Description”…”�”}”(hjˆPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj„Pubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:106: ./drivers/gpu/drm/drm_vblank_helper.c”h´K`hjíOubhÎ)�”}”(hŒ‘The helper drm_crtc_vblank_atomic_disable() implements atomic_disable of struct drm_crtc_helper_funcs for CRTCs the only need to disable VBLANKs.”h]”hŒ‘The helper drm_crtc_vblank_atomic_disable() implements atomic_disable of struct drm_crtc_helper_funcs for CRTCs the only need to disable VBLANKs.”…”�”}”(hjœPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:106: ./drivers/gpu/drm/drm_vblank_helper.c”h´K_hjíOubhÎ)�”}”(hŒISee also struct :c:type:`drm_crtc_funcs.atomic_disable `.”h]”(hŒSee also struct ”…”�”}”(hj«Ph²hh³Nh´Nubh)�”}”(hŒ8:c:type:`drm_crtc_funcs.atomic_disable `”h]”jˆ )�”}”(hjµPh]”hŒdrm_crtc_funcs.atomic_disable”…”�”}”(hj·Ph²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj³Pubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_crtc_funcs”uh1hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:106: ./drivers/gpu/drm/drm_vblank_helper.c”h´Kbhj«PubhŒ.”…”�”}”(hj«Ph²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÒPh´KbhjíOubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjGh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ7drm_crtc_vblank_helper_enable_vblank_timer (C function)”Œ,c.drm_crtc_vblank_helper_enable_vblank_timer”hNt”auh1j† hjGh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒFint drm_crtc_vblank_helper_enable_vblank_timer (struct drm_crtc *crtc)”h]”j¤ )�”}”(hŒEint drm_crtc_vblank_helper_enable_vblank_timer(struct drm_crtc *crtc)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjýPh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjùPh²hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:106: ./drivers/gpu/drm/drm_vblank_helper.c”h´Kqubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Qh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjùPh²hh³j Qh´KqubjÍ )�”}”(hŒ*drm_crtc_vblank_helper_enable_vblank_timer”h]”jÓ )�”}”(hŒ*drm_crtc_vblank_helper_enable_vblank_timer”h]”hŒ*drm_crtc_vblank_helper_enable_vblank_timer”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjQubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjùPh²hh³j Qh´KqubjÞ)�”}”(hŒ(struct drm_crtc *crtc)”h]”jä)�”}”(hŒstruct drm_crtc *crtc”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj:Qh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj6Qubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGQh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj6Qubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_crtc”h]”hŒdrm_crtc”…”�”}”(hjXQh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjUQubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jZQŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj QsbŒ,c.drm_crtc_vblank_helper_enable_vblank_timer”†”asbuh1hhj6Qubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxQh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj6Qubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj†Qh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj6QubjÓ )�”}”(hŒcrtc”h]”hŒcrtc”…”�”}”(hj“Qh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj6Qubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj2Qubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjùPh²hh³j Qh´Kqubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjõPh²hh³j Qh´Kqubah}”(h]”jðPah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j Qh´KqhjòPh²hubj )�”}”(hhh]”hÎ)�”}”(hŒIImplements struct :c:type:`drm_crtc_funcs.enable_vblank `”h]”(hŒImplements struct ”…”�”}”(hj½Qh²hh³Nh´Nubh)�”}”(hŒ7:c:type:`drm_crtc_funcs.enable_vblank `”h]”jˆ )�”}”(hjÇQh]”hŒdrm_crtc_funcs.enable_vblank”…”�”}”(hjÉQh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÅQubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jì )�”}”jï ]”jtQŒ,c.drm_crtc_vblank_helper_enable_vblank_timer”†”asbjñ Œdrm_crtc_funcs”uh1hh³j‹Ih´K(hj½Qubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:106: ./drivers/gpu/drm/drm_vblank_helper.c”h´KqhjºQh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjòPh²hh³j Qh´Kqubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jùQj$ jùQj% ‰j& ‰j' ‰uh1j˜ h²hhjGh³Nh´Nubj) )�”}”(hX#**Parameters** ``struct drm_crtc *crtc`` The CRTC **Description** The helper drm_crtc_vblank_helper_enable_vblank_timer() implements enable_vblank of struct drm_crtc_helper_funcs for CRTCs that require a VBLANK timer. It sets up the timer on the first invocation. The started timer expires after the current frame duration. See struct :c:type:`drm_vblank_crtc.framedur_ns `. See also struct :c:type:`drm_crtc_helper_funcs.enable_vblank `. **Return** 0 on success, or a negative errno code otherwise.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjRh]”hŒ Parameters”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjRubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:106: ./drivers/gpu/drm/drm_vblank_helper.c”h´KuhjýQubjw )�”}”(hhh]”j| )�”}”(hŒ#``struct drm_crtc *crtc`` The CRTC ”h]”(j‚ )�”}”(hŒ``struct drm_crtc *crtc``”h]”jˆ )�”}”(hj"Rh]”hŒstruct drm_crtc *crtc”…”�”}”(hj$Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj Rubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:106: ./drivers/gpu/drm/drm_vblank_helper.c”h´KrhjRubjž )�”}”(hhh]”hÎ)�”}”(hŒThe CRTC”h]”hŒThe CRTC”…”�”}”(hj;Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j7Rh´Krhj8Rubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjRubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j7Rh´KrhjRubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjýQubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj]Rh]”hŒ Description”…”�”}”(hj_Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj[Rubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:106: ./drivers/gpu/drm/drm_vblank_helper.c”h´KthjýQubhÎ)�”}”(hXEThe helper drm_crtc_vblank_helper_enable_vblank_timer() implements enable_vblank of struct drm_crtc_helper_funcs for CRTCs that require a VBLANK timer. It sets up the timer on the first invocation. The started timer expires after the current frame duration. See struct :c:type:`drm_vblank_crtc.framedur_ns `.”h]”(hX The helper drm_crtc_vblank_helper_enable_vblank_timer() implements enable_vblank of struct drm_crtc_helper_funcs for CRTCs that require a VBLANK timer. It sets up the timer on the first invocation. The started timer expires after the current frame duration. See struct ”…”�”}”(hjsRh²hh³Nh´Nubh)�”}”(hŒ7:c:type:`drm_vblank_crtc.framedur_ns `”h]”jˆ )�”}”(hj}Rh]”hŒdrm_vblank_crtc.framedur_ns”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj{Rubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_vblank_crtc”uh1hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:106: ./drivers/gpu/drm/drm_vblank_helper.c”h´KshjsRubhŒ.”…”�”}”(hjsRh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jšRh´KshjýQubhÎ)�”}”(hŒVSee also struct :c:type:`drm_crtc_helper_funcs.enable_vblank `.”h]”(hŒSee also struct ”…”�”}”(hj¥Rh²hh³Nh´Nubh)�”}”(hŒE:c:type:`drm_crtc_helper_funcs.enable_vblank `”h]”jˆ )�”}”(hj¯Rh]”hŒ#drm_crtc_helper_funcs.enable_vblank”…”�”}”(hj±Rh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj­Rubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_crtc_helper_funcs”uh1hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:106: ./drivers/gpu/drm/drm_vblank_helper.c”h´Kyhj¥RubhŒ.”…”�”}”(hj¥Rh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÌRh´KyhjýQubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjÙRh]”hŒReturn”…”�”}”(hjÛRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj×Rubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:106: ./drivers/gpu/drm/drm_vblank_helper.c”h´K{hjýQubhÎ)�”}”(hŒ10 on success, or a negative errno code otherwise.”h]”hŒ10 on success, or a negative errno code otherwise.”…”�”}”(hjïRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:106: ./drivers/gpu/drm/drm_vblank_helper.c”h´K|hjýQubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjGh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ8drm_crtc_vblank_helper_disable_vblank_timer (C function)”Œ-c.drm_crtc_vblank_helper_disable_vblank_timer”hNt”auh1j† hjGh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒHvoid drm_crtc_vblank_helper_disable_vblank_timer (struct drm_crtc *crtc)”h]”j¤ )�”}”(hŒGvoid drm_crtc_vblank_helper_disable_vblank_timer(struct drm_crtc *crtc)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjSh²hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:106: ./drivers/gpu/drm/drm_vblank_helper.c”h´K†ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-Sh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjSh²hh³j,Sh´K†ubjÍ )�”}”(hŒ+drm_crtc_vblank_helper_disable_vblank_timer”h]”jÓ )�”}”(hŒ+drm_crtc_vblank_helper_disable_vblank_timer”h]”hŒ+drm_crtc_vblank_helper_disable_vblank_timer”…”�”}”(hj?Sh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj;Subah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjSh²hh³j,Sh´K†ubjÞ)�”}”(hŒ(struct drm_crtc *crtc)”h]”jä)�”}”(hŒstruct drm_crtc *crtc”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj[Sh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjWSubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhSh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjWSubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_crtc”h]”hŒdrm_crtc”…”�”}”(hjySh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjvSubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j{SŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjASsbŒ-c.drm_crtc_vblank_helper_disable_vblank_timer”†”asbuh1hhjWSubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™Sh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjWSubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj§Sh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjWSubjÓ )�”}”(hŒcrtc”h]”hŒcrtc”…”�”}”(hj´Sh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjWSubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjSSubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjSh²hh³j,Sh´K†ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjSh²hh³j,Sh´K†ubah}”(h]”jSah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j,Sh´K†hjSh²hubj )�”}”(hhh]”hÎ)�”}”(hŒJImplements struct :c:type:`drm_crtc_funcs.disable_vblank `”h]”(hŒImplements struct ”…”�”}”(hjÞSh²hh³Nh´Nubh)�”}”(hŒ8:c:type:`drm_crtc_funcs.disable_vblank `”h]”jˆ )�”}”(hjèSh]”hŒdrm_crtc_funcs.disable_vblank”…”�”}”(hjêSh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjæSubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jì )�”}”jï ]”j•SŒ-c.drm_crtc_vblank_helper_disable_vblank_timer”†”asbjñ Œdrm_crtc_funcs”uh1hh³j‹Ih´K(hjÞSubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:106: ./drivers/gpu/drm/drm_vblank_helper.c”h´K†hjÛSh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjSh²hh³j,Sh´K†ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jTj$ jTj% ‰j& ‰j' ‰uh1j˜ h²hhjGh³Nh´Nubj) )�”}”(hX2**Parameters** ``struct drm_crtc *crtc`` The CRTC **Description** The helper drm_crtc_vblank_helper_disable_vblank_timer() implements disable_vblank of struct drm_crtc_funcs for CRTCs that require a VBLANK timer. See also struct :c:type:`drm_crtc_helper_funcs.disable_vblank `.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj$Th]”hŒ Parameters”…”�”}”(hj&Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj"Tubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:106: ./drivers/gpu/drm/drm_vblank_helper.c”h´KŠhjTubjw )�”}”(hhh]”j| )�”}”(hŒ#``struct drm_crtc *crtc`` The CRTC ”h]”(j‚ )�”}”(hŒ``struct drm_crtc *crtc``”h]”jˆ )�”}”(hjCTh]”hŒstruct drm_crtc *crtc”…”�”}”(hjETh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjATubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:106: ./drivers/gpu/drm/drm_vblank_helper.c”h´K‡hj=Tubjž )�”}”(hhh]”hÎ)�”}”(hŒThe CRTC”h]”hŒThe CRTC”…”�”}”(hj\Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jXTh´K‡hjYTubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj=Tubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jXTh´K‡hj:Tubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjTubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj~Th]”hŒ Description”…”�”}”(hj€Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj|Tubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:106: ./drivers/gpu/drm/drm_vblank_helper.c”h´K‰hjTubhÎ)�”}”(hŒ’The helper drm_crtc_vblank_helper_disable_vblank_timer() implements disable_vblank of struct drm_crtc_funcs for CRTCs that require a VBLANK timer.”h]”hŒ’The helper drm_crtc_vblank_helper_disable_vblank_timer() implements disable_vblank of struct drm_crtc_funcs for CRTCs that require a VBLANK timer.”…”�”}”(hj”Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:106: ./drivers/gpu/drm/drm_vblank_helper.c”h´KˆhjTubhÎ)�”}”(hŒWSee also struct :c:type:`drm_crtc_helper_funcs.disable_vblank `.”h]”(hŒSee also struct ”…”�”}”(hj£Th²hh³Nh´Nubh)�”}”(hŒF:c:type:`drm_crtc_helper_funcs.disable_vblank `”h]”jˆ )�”}”(hj­Th]”hŒ$drm_crtc_helper_funcs.disable_vblank”…”�”}”(hj¯Th²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj«Tubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_crtc_helper_funcs”uh1hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:106: ./drivers/gpu/drm/drm_vblank_helper.c”h´KŒhj£TubhŒ.”…”�”}”(hj£Th²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÊTh´KŒhjTubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjGh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ ŒCdrm_crtc_vblank_helper_get_vblank_timestamp_from_timer (C function)”Œ8c.drm_crtc_vblank_helper_get_vblank_timestamp_from_timer”hNt”auh1j† hjGh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ�bool drm_crtc_vblank_helper_get_vblank_timestamp_from_timer (struct drm_crtc *crtc, int *max_error, ktime_t *vblank_time, bool in_vblank_irq)”h]”j¤ )�”}”(hŒŒbool drm_crtc_vblank_helper_get_vblank_timestamp_from_timer(struct drm_crtc *crtc, int *max_error, ktime_t *vblank_time, bool in_vblank_irq)”h]”(j¦)�”}”(hj£Ih]”hŒbool”…”�”}”(hjõTh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjñTh²hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:106: ./drivers/gpu/drm/drm_vblank_helper.c”h´K–ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjñTh²hh³jUh´K–ubjÍ )�”}”(hŒ6drm_crtc_vblank_helper_get_vblank_timestamp_from_timer”h]”jÓ )�”}”(hŒ6drm_crtc_vblank_helper_get_vblank_timestamp_from_timer”h]”hŒ6drm_crtc_vblank_helper_get_vblank_timestamp_from_timer”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjUubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjñTh²hh³jUh´K–ubjÞ)�”}”(hŒQ(struct drm_crtc *crtc, int *max_error, ktime_t *vblank_time, bool in_vblank_irq)”h]”(jä)�”}”(hŒstruct drm_crtc *crtc”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj1Uh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj-Uubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>Uh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj-Uubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_crtc”h]”hŒdrm_crtc”…”�”}”(hjOUh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjLUubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jQUŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjUsbŒ8c.drm_crtc_vblank_helper_get_vblank_timestamp_from_timer”†”asbuh1hhj-Uubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjoUh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj-Uubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj}Uh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj-UubjÓ )�”}”(hŒcrtc”h]”hŒcrtc”…”�”}”(hjŠUh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj-Uubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj)Uubjä)�”}”(hŒint *max_error”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj£Uh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjŸUubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±Uh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjŸUubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj¿Uh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŸUubjÓ )�”}”(hŒ max_error”h]”hŒ max_error”…”�”}”(hjÌUh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjŸUubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj)Uubjä)�”}”(hŒktime_t *vblank_time”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒktime_t”h]”hŒktime_t”…”�”}”(hjèUh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjåUubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jêUŒmodname”NŒ classname”Njé jì )�”}”jï ]”jkUŒ8c.drm_crtc_vblank_helper_get_vblank_timestamp_from_timer”†”asbuh1hhjáUubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjáUubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjáUubjÓ )�”}”(hŒ vblank_time”h]”hŒ vblank_time”…”�”}”(hj!Vh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjáUubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj)Uubjä)�”}”(hŒbool in_vblank_irq”h]”(j¦)�”}”(hj£Ih]”hŒbool”…”�”}”(hj:Vh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj6Vubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGVh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj6VubjÓ )�”}”(hŒ in_vblank_irq”h]”hŒ in_vblank_irq”…”�”}”(hjUVh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj6Vubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj)Uubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjñTh²hh³jUh´K–ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjíTh²hh³jUh´K–ubah}”(h]”jèTah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jUh´K–hjêTh²hubj )�”}”(hhh]”hÎ)�”}”(hŒPImplements struct :c:type:`drm_crtc_funcs.get_vblank_timestamp `”h]”(hŒImplements struct ”…”�”}”(hjVh²hh³Nh´Nubh)�”}”(hŒ>:c:type:`drm_crtc_funcs.get_vblank_timestamp `”h]”jˆ )�”}”(hj‰Vh]”hŒ#drm_crtc_funcs.get_vblank_timestamp”…”�”}”(hj‹Vh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj‡Vubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jì )�”}”jï ]”jkUŒ8c.drm_crtc_vblank_helper_get_vblank_timestamp_from_timer”†”asbjñ Œdrm_crtc_funcs”uh1hh³j‹Ih´K(hjVubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:106: ./drivers/gpu/drm/drm_vblank_helper.c”h´K–hj|Vh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjêTh²hh³jUh´K–ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j»Vj$ j»Vj% ‰j& ‰j' ‰uh1j˜ h²hhjGh³Nh´Nubj) )�”}”(hXY**Parameters** ``struct drm_crtc *crtc`` The CRTC ``int *max_error`` Maximum acceptable error ``ktime_t *vblank_time`` Returns the next vblank timestamp ``bool in_vblank_irq`` True is called from drm_crtc_handle_vblank() **Description** The helper drm_crtc_helper_get_vblank_timestamp_from_timer() implements get_vblank_timestamp of struct drm_crtc_funcs for CRTCs that require a VBLANK timer. It returns the timestamp according to the timer's expiry time. See also struct :c:type:`drm_crtc_funcs.get_vblank_timestamp `. **Return** True on success, or false otherwise.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjÅVh]”hŒ Parameters”…”�”}”(hjÇVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÃVubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:106: ./drivers/gpu/drm/drm_vblank_helper.c”h´Kšhj¿Vubjw )�”}”(hhh]”(j| )�”}”(hŒ#``struct drm_crtc *crtc`` The CRTC ”h]”(j‚ )�”}”(hŒ``struct drm_crtc *crtc``”h]”jˆ )�”}”(hjäVh]”hŒstruct drm_crtc *crtc”…”�”}”(hjæVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjâVubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:106: ./drivers/gpu/drm/drm_vblank_helper.c”h´K˜hjÞVubjž )�”}”(hhh]”hÎ)�”}”(hŒThe CRTC”h]”hŒThe CRTC”…”�”}”(hjýVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jùVh´K˜hjúVubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÞVubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jùVh´K˜hjÛVubj| )�”}”(hŒ,``int *max_error`` Maximum acceptable error ”h]”(j‚ )�”}”(hŒ``int *max_error``”h]”jˆ )�”}”(hjWh]”hŒint *max_error”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjWubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:106: ./drivers/gpu/drm/drm_vblank_helper.c”h´K™hjWubjž )�”}”(hhh]”hÎ)�”}”(hŒMaximum acceptable error”h]”hŒMaximum acceptable error”…”�”}”(hj6Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j2Wh´K™hj3Wubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjWubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j2Wh´K™hjÛVubj| )�”}”(hŒ;``ktime_t *vblank_time`` Returns the next vblank timestamp ”h]”(j‚ )�”}”(hŒ``ktime_t *vblank_time``”h]”jˆ )�”}”(hjVWh]”hŒktime_t *vblank_time”…”�”}”(hjXWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjTWubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:106: ./drivers/gpu/drm/drm_vblank_helper.c”h´KšhjPWubjž )�”}”(hhh]”hÎ)�”}”(hŒ!Returns the next vblank timestamp”h]”hŒ!Returns the next vblank timestamp”…”�”}”(hjoWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jkWh´KšhjlWubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjPWubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jkWh´KšhjÛVubj| )�”}”(hŒD``bool in_vblank_irq`` True is called from drm_crtc_handle_vblank() ”h]”(j‚ )�”}”(hŒ``bool in_vblank_irq``”h]”jˆ )�”}”(hj�Wh]”hŒbool in_vblank_irq”…”�”}”(hj‘Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj�Wubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:106: ./drivers/gpu/drm/drm_vblank_helper.c”h´K›hj‰Wubjž )�”}”(hhh]”hÎ)�”}”(hŒ,True is called from drm_crtc_handle_vblank()”h]”hŒ,True is called from drm_crtc_handle_vblank()”…”�”}”(hj¨Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¤Wh´K›hj¥Wubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj‰Wubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¤Wh´K›hjÛVubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj¿VubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjÊWh]”hŒ Description”…”�”}”(hjÌWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÈWubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:106: ./drivers/gpu/drm/drm_vblank_helper.c”h´K�hj¿VubhÎ)�”}”(hŒÛThe helper drm_crtc_helper_get_vblank_timestamp_from_timer() implements get_vblank_timestamp of struct drm_crtc_funcs for CRTCs that require a VBLANK timer. It returns the timestamp according to the timer's expiry time.”h]”hŒÝThe helper drm_crtc_helper_get_vblank_timestamp_from_timer() implements get_vblank_timestamp of struct drm_crtc_funcs for CRTCs that require a VBLANK timer. It returns the timestamp according to the timer’s expiry time.”…”�”}”(hjàWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:106: ./drivers/gpu/drm/drm_vblank_helper.c”h´Kœhj¿VubhÎ)�”}”(hŒOSee also struct :c:type:`drm_crtc_funcs.get_vblank_timestamp `.”h]”(hŒSee also struct ”…”�”}”(hjïWh²hh³Nh´Nubh)�”}”(hŒ>:c:type:`drm_crtc_funcs.get_vblank_timestamp `”h]”jˆ )�”}”(hjùWh]”hŒ#drm_crtc_funcs.get_vblank_timestamp”…”�”}”(hjûWh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj÷Wubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_crtc_funcs”uh1hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:106: ./drivers/gpu/drm/drm_vblank_helper.c”h´K¡hjïWubhŒ.”…”�”}”(hjïWh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jXh´K¡hj¿VubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj#Xh]”hŒReturn”…”�”}”(hj%Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj!Xubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:106: ./drivers/gpu/drm/drm_vblank_helper.c”h´K£hj¿VubhÎ)�”}”(hŒ$True on success, or false otherwise.”h]”hŒ$True on success, or false otherwise.”…”�”}”(hj9Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:106: ./drivers/gpu/drm/drm_vblank_helper.c”h´K¤hj¿Vubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjGh²hh³Nh´Nubeh}”(h]”j©ah ]”h"]”Œvblank helper reference”ah$]”h&]”uh1hµhj“Bh²hh³hÌh´Kbubeh}”(h]”(j¾j‹Beh ]”h"]”(Œ)atomic modeset helper functions reference”Œdrm_atomic_helper”eh$]”h&]”uh1hµhh·h²hh³hÌh´K2Œexpect_referenced_by_name”}”j[Xj�BsŒexpect_referenced_by_id”}”j‹Bj�Bsubh¶)�”}”(hhh]”(h»)�”}”(hŒ fbdev Helper Functions Reference”h]”hŒ fbdev Helper Functions Reference”…”�”}”(hjeXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÊjÑuh1hºhjbXh²hh³hÌh´KnubhÎ)�”}”(hXhThe fb helper functions are useful to provide an fbdev on top of a drm kernel mode setting driver. They can be used mostly independently from the crtc helper functions used by many drivers to implement the kernel mode setting interfaces. Drivers that use one of the shared memory managers, TTM, SHMEM, DMA, should instead use the corresponding fbdev emulation.”h]”hXhThe fb helper functions are useful to provide an fbdev on top of a drm kernel mode setting driver. They can be used mostly independently from the crtc helper functions used by many drivers to implement the kernel mode setting interfaces. Drivers that use one of the shared memory managers, TTM, SHMEM, DMA, should instead use the corresponding fbdev emulation.”…”�”}”(hjsXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:112: ./drivers/gpu/drm/drm_fb_helper.c”h´KPhjbXh²hubhÎ)�”}”(hŒ‰For suspend/resume consider using drm_mode_config_helper_suspend() and drm_mode_config_helper_resume() which takes care of fbdev as well.”h]”hŒ‰For suspend/resume consider using drm_mode_config_helper_suspend() and drm_mode_config_helper_resume() which takes care of fbdev as well.”…”�”}”(hj‚Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:112: ./drivers/gpu/drm/drm_fb_helper.c”h´KVhjbXh²hubhÎ)�”}”(hŒxAll other functions exported by the fb helper library can be used to implement the fbdev driver interface by the driver.”h]”hŒxAll other functions exported by the fb helper library can be used to implement the fbdev driver interface by the driver.”…”�”}”(hj‘Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:112: ./drivers/gpu/drm/drm_fb_helper.c”h´KYhjbXh²hubhÎ)�”}”(hX%It is possible, though perhaps somewhat tricky, to implement race-free hotplug detection using the fbdev helpers. The drm_fb_helper_prepare() helper must be called first to initialize the minimum required to make hotplug detection work. Drivers also need to make sure to properly set up the :c:type:`drm_mode_config.funcs ` member. After calling drm_kms_helper_poll_init() it is safe to enable interrupts and start processing hotplug events. At the same time, drivers should initialize all modeset objects such as CRTCs, encoders and connectors. To finish up the fbdev helper initialization, the drm_fb_helper_init() function is called. To probe for all attached displays and set up an initial configuration using the detected hardware, drivers should call drm_fb_helper_initial_config().”h]”(hX#It is possible, though perhaps somewhat tricky, to implement race-free hotplug detection using the fbdev helpers. The drm_fb_helper_prepare() helper must be called first to initialize the minimum required to make hotplug detection work. Drivers also need to make sure to properly set up the ”…”�”}”(hj Xh²hh³Nh´Nubh)�”}”(hŒ1:c:type:`drm_mode_config.funcs `”h]”jˆ )�”}”(hjªXh]”hŒdrm_mode_config.funcs”…”�”}”(hj¬Xh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj¨Xubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_mode_config”uh1hh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:112: ./drivers/gpu/drm/drm_fb_helper.c”h´K\hj XubhXÑ member. After calling drm_kms_helper_poll_init() it is safe to enable interrupts and start processing hotplug events. At the same time, drivers should initialize all modeset objects such as CRTCs, encoders and connectors. To finish up the fbdev helper initialization, the drm_fb_helper_init() function is called. To probe for all attached displays and set up an initial configuration using the detected hardware, drivers should call drm_fb_helper_initial_config().”…”�”}”(hj Xh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÇXh´K\hjbXh²hubhÎ)�”}”(hX4If :c:type:`drm_framebuffer_funcs.dirty ` is set, the drm_fb_helper_{cfb,sys}_{write,fillrect,copyarea,imageblit} functions will accumulate changes and schedule :c:type:`drm_fb_helper.dirty_work ` to run right away. This worker then calls the dirty() function ensuring that it will always run in process context since the fb_*() function could be running in atomic context. If drm_fb_helper_deferred_io() is used as the deferred_io callback it will also schedule dirty_work with the damage collected from the mmap page writes.”h]”(hŒIf ”…”�”}”(hjÒXh²hh³Nh´Nubh)�”}”(hŒ=:c:type:`drm_framebuffer_funcs.dirty `”h]”jˆ )�”}”(hjÜXh]”hŒdrm_framebuffer_funcs.dirty”…”�”}”(hjÞXh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÚXubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_framebuffer_funcs”uh1hh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:112: ./drivers/gpu/drm/drm_fb_helper.c”h´KhhjÒXubhŒx is set, the drm_fb_helper_{cfb,sys}_{write,fillrect,copyarea,imageblit} functions will accumulate changes and schedule ”…”�”}”(hjÒXh²hh³Nh´Nubh)�”}”(hŒ2:c:type:`drm_fb_helper.dirty_work `”h]”jˆ )�”}”(hjYh]”hŒdrm_fb_helper.dirty_work”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjþXubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_fb_helper”uh1hh³jùXh´KhhjÒXubhXJ to run right away. This worker then calls the dirty() function ensuring that it will always run in process context since the fb_*() function could be running in atomic context. If drm_fb_helper_deferred_io() is used as the deferred_io callback it will also schedule dirty_work with the damage collected from the mmap page writes.”…”�”}”(hjÒXh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jùXh´KhhjbXh²hubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ%drm_fb_helper_surface_size (C struct)”Œc.drm_fb_helper_surface_size”hNt”auh1j† hjbXh²hh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒdrm_fb_helper_surface_size”h]”j¤ )�”}”(hŒ!struct drm_fb_helper_surface_size”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjAYh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj=Yh²hh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´Kubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjOYh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj=Yh²hh³jNYh´KubjÍ )�”}”(hŒdrm_fb_helper_surface_size”h]”jÓ )�”}”(hj;Yh]”hŒdrm_fb_helper_surface_size”…”�”}”(hjaYh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj]Yubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj=Yh²hh³jNYh´Kubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj9Yh²hh³jNYh´Kubah}”(h]”j3Yah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jNYh´Khj6Yh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ-describes fbdev size and scanout surface size”h]”hŒ-describes fbdev size and scanout surface size”…”�”}”(hjƒYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´K)hj€Yh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj6Yh²hh³jNYh´Kubeh}”(h]”h ]”(j Œstruct”eh"]”h$]”h&]”j" j j# j›Yj$ j›Yj% ‰j& ‰j' ‰uh1j˜ h²hhjbXh³j5Yh´Nubj) )�”}”(hXµ**Definition**:: struct drm_fb_helper_surface_size { u32 fb_width; u32 fb_height; u32 surface_width; u32 surface_height; u32 surface_bpp; u32 surface_depth; }; **Members** ``fb_width`` fbdev width ``fb_height`` fbdev height ``surface_width`` scanout buffer width ``surface_height`` scanout buffer height ``surface_bpp`` scanout buffer bpp ``surface_depth`` scanout buffer depth”h]”(hÎ)�”}”(hŒ**Definition**::”h]”(j3 )�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj§Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj£YubhŒ:”…”�”}”(hj£Yh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´K-hjŸYubjN )�”}”(hŒ¦struct drm_fb_helper_surface_size { u32 fb_width; u32 fb_height; u32 surface_width; u32 surface_height; u32 surface_bpp; u32 surface_depth; };”h]”hŒ¦struct drm_fb_helper_surface_size { u32 fb_width; u32 fb_height; u32 surface_width; u32 surface_height; u32 surface_bpp; u32 surface_depth; };”…”�”}”hjÀYsbah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jM h³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´K/hjŸYubhÎ)�”}”(hŒ **Members**”h]”j3 )�”}”(hjÑYh]”hŒMembers”…”�”}”(hjÓYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÏYubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´K8hjŸYubjw )�”}”(hhh]”(j| )�”}”(hŒ``fb_width`` fbdev width ”h]”(j‚ )�”}”(hŒ ``fb_width``”h]”jˆ )�”}”(hjðYh]”hŒfb_width”…”�”}”(hjòYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjîYubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´K+hjêYubjž )�”}”(hhh]”hÎ)�”}”(hŒ fbdev width”h]”hŒ fbdev width”…”�”}”(hj Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jZh´K+hjZubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjêYubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jZh´K+hjçYubj| )�”}”(hŒ``fb_height`` fbdev height ”h]”(j‚ )�”}”(hŒ ``fb_height``”h]”jˆ )�”}”(hj)Zh]”hŒ fb_height”…”�”}”(hj+Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj'Zubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´K,hj#Zubjž )�”}”(hhh]”hÎ)�”}”(hŒ fbdev height”h]”hŒ fbdev height”…”�”}”(hjBZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j>Zh´K,hj?Zubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj#Zubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j>Zh´K,hjçYubj| )�”}”(hŒ'``surface_width`` scanout buffer width ”h]”(j‚ )�”}”(hŒ``surface_width``”h]”jˆ )�”}”(hjbZh]”hŒ surface_width”…”�”}”(hjdZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj`Zubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´K-hj\Zubjž )�”}”(hhh]”hÎ)�”}”(hŒscanout buffer width”h]”hŒscanout buffer width”…”�”}”(hj{Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jwZh´K-hjxZubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj\Zubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jwZh´K-hjçYubj| )�”}”(hŒ)``surface_height`` scanout buffer height ”h]”(j‚ )�”}”(hŒ``surface_height``”h]”jˆ )�”}”(hj›Zh]”hŒsurface_height”…”�”}”(hj�Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj™Zubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´K.hj•Zubjž )�”}”(hhh]”hÎ)�”}”(hŒscanout buffer height”h]”hŒscanout buffer height”…”�”}”(hj´Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j°Zh´K.hj±Zubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj•Zubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j°Zh´K.hjçYubj| )�”}”(hŒ#``surface_bpp`` scanout buffer bpp ”h]”(j‚ )�”}”(hŒ``surface_bpp``”h]”jˆ )�”}”(hjÔZh]”hŒ surface_bpp”…”�”}”(hjÖZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÒZubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´K/hjÎZubjž )�”}”(hhh]”hÎ)�”}”(hŒscanout buffer bpp”h]”hŒscanout buffer bpp”…”�”}”(hjíZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jéZh´K/hjêZubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÎZubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jéZh´K/hjçYubj| )�”}”(hŒ&``surface_depth`` scanout buffer depth”h]”(j‚ )�”}”(hŒ``surface_depth``”h]”jˆ )�”}”(hj [h]”hŒ surface_depth”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj [ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´K/hj[ubjž )�”}”(hhh]”hÎ)�”}”(hŒscanout buffer depth”h]”hŒscanout buffer depth”…”�”}”(hj&[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´K0hj#[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j"[h´K/hjçYubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjŸYubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjbXh²hh³j5Yh´NubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjP[h]”hŒ Description”…”�”}”(hjR[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjN[ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´K3hjbXh²hubhÎ)�”}”(hXûNote that the scanout surface width/height may be larger than the fbdev width/height. In case of multiple displays, the scanout surface is sized according to the largest width/height (so it is large enough for all CRTCs to scanout). But the fbdev width/height is sized to the minimum width/ height of all the displays. This ensures that fbcon fits on the smallest of the attached displays. fb_width/fb_height is used by drm_fb_helper_fill_info() to fill out the :c:type:`fb_info.var ` structure.”h]”(hXÑNote that the scanout surface width/height may be larger than the fbdev width/height. In case of multiple displays, the scanout surface is sized according to the largest width/height (so it is large enough for all CRTCs to scanout). But the fbdev width/height is sized to the minimum width/ height of all the displays. This ensures that fbcon fits on the smallest of the attached displays. fb_width/fb_height is used by drm_fb_helper_fill_info() to fill out the ”…”�”}”(hjf[h²hh³Nh´Nub•h)�”}”(hŒ:c:type:`fb_info.var `”h]”jˆ )�”}”(hjp[h]”hŒ fb_info.var”…”�”}”(hjr[h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjn[ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œfb_info”uh1hh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´K0hjf[ubhŒ structure.”…”�”}”(hjf[h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j�[h´K0hjbXh²hubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_fb_helper_funcs (C struct)”Œc.drm_fb_helper_funcs”hNt”auh1j† hjbXh²hh³j5Yh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒdrm_fb_helper_funcs”h]”j¤ )�”}”(hŒstruct drm_fb_helper_funcs”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj±[h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj­[h²hh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”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Œdrm_fb_helper_funcs”h]”jÓ )�”}”(hj«[h]”hŒdrm_fb_helper_funcs”…”�”}”(hjÑ[h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÍ[ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj­[h²hh³j¾[h´K;ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ0driver callbacks for the fbdev emulation library”h]”hŒ0driver callbacks for the fbdev emulation library”…”�”}”(hjó[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´KChjð[h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¦[h²hh³j¾[h´K;ubeh}”(h]”h ]”(j Œstruct”eh"]”h$]”h&]”j" j j# j \j$ j \j% ‰j& ‰j' ‰uh1j˜ h²hhjbXh³j5Yh´Nubj) )�”}”(hX€**Definition**:: struct drm_fb_helper_funcs { int (*fb_dirty)(struct drm_fb_helper *helper, struct drm_clip_rect *clip); void (*fb_restore)(struct drm_fb_helper *helper); void (*fb_set_suspend)(struct drm_fb_helper *helper, bool suspend); }; **Members** ``fb_dirty`` Driver callback to update the framebuffer memory. If set, fbdev emulation will invoke this callback in regular intervals after the framebuffer has been written. This callback is optional. Returns: 0 on success, or an error code otherwise. ``fb_restore`` Driver callback to restore internal fbdev state. If set, fbdev emulation will invoke this callback after restoring the display mode. Only for i915. Do not use in new code. TODO: Fix i915 to not require this callback. ``fb_set_suspend`` Driver callback to suspend or resume, if set, fbdev emulation will invoke this callback during suspend and resume. Driver should call fb_set_suspend() from their implementation. If not set, fbdev emulation will invoke fb_set_suspend() directly. Only for i915. Do not use in new code. TODO: Fix i915 to not require this callback.”h]”(hÎ)�”}”(hŒ**Definition**::”h]”(j3 )�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj\ubhŒ:”…”�”}”(hj\h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´KGhj\ubjN )�”}”(hŒìstruct drm_fb_helper_funcs { int (*fb_dirty)(struct drm_fb_helper *helper, struct drm_clip_rect *clip); void (*fb_restore)(struct drm_fb_helper *helper); void (*fb_set_suspend)(struct drm_fb_helper *helper, bool suspend); };”h]”hŒìstruct drm_fb_helper_funcs { int (*fb_dirty)(struct drm_fb_helper *helper, struct drm_clip_rect *clip); void (*fb_restore)(struct drm_fb_helper *helper); void (*fb_set_suspend)(struct drm_fb_helper *helper, bool suspend); };”…”�”}”hj0\sbah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jM h³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´KIhj\ubhÎ)�”}”(hŒ **Members**”h]”j3 )�”}”(hjA\h]”hŒMembers”…”�”}”(hjC\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj?\ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´KOhj\ubjw )�”}”(hhh]”(j| )�”}”(hŒþ``fb_dirty`` Driver callback to update the framebuffer memory. If set, fbdev emulation will invoke this callback in regular intervals after the framebuffer has been written. This callback is optional. Returns: 0 on success, or an error code otherwise. ”h]”(j‚ )�”}”(hŒ ``fb_dirty``”h]”jˆ )�”}”(hj`\h]”hŒfb_dirty”…”�”}”(hjb\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj^\ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´KQhjZ\ubjž )�”}”(hhh]”(hÎ)�”}”(hŒ Driver callback to update the framebuffer memory. If set, fbdev emulation will invoke this callback in regular intervals after the framebuffer has been written.”h]”hŒ Driver callback to update the framebuffer memory. If set, fbdev emulation will invoke this callback in regular intervals after the framebuffer has been written.”…”�”}”(hjy\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´KJhjv\ubhÎ)�”}”(hŒThis callback is optional.”h]”hŒThis callback is optional.”…”�”}”(hjˆ\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´KNhjv\ubhÎ)�”}”(hŒ2Returns: 0 on success, or an error code otherwise.”h]”hŒ2Returns: 0 on success, or an error code otherwise.”…”�”}”(hj—\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´KPhjv\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjZ\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³ju\h´KQhjW\ubj| )�”}”(hŒê``fb_restore`` Driver callback to restore internal fbdev state. If set, fbdev emulation will invoke this callback after restoring the display mode. Only for i915. Do not use in new code. TODO: Fix i915 to not require this callback. ”h]”(j‚ )�”}”(hŒ``fb_restore``”h]”jˆ )�”}”(hj¸\h]”hŒ fb_restore”…”�”}”(hjº\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¶\ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´K^hj²\ubjž )�”}”(hhh]”(hÎ)�”}”(hŒ„Driver callback to restore internal fbdev state. If set, fbdev emulation will invoke this callback after restoring the display mode.”h]”hŒ„Driver callback to restore internal fbdev state. If set, fbdev emulation will invoke this callback after restoring the display mode.”…”�”}”(hjÑ\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´KXhjÎ\ubhÎ)�”}”(hŒ&Only for i915. Do not use in new code.”h]”hŒ&Only for i915. Do not use in new code.”…”�”}”(hjà\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´K\hjÎ\ubhÎ)�”}”(hŒ,TODO: Fix i915 to not require this callback.”h]”hŒ,TODO: Fix i915 to not require this callback.”…”�”}”(hjï\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÍ\h´K^hjÎ\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj²\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÍ\h´K^hjW\ubj| )�”}”(hX]``fb_set_suspend`` Driver callback to suspend or resume, if set, fbdev emulation will invoke this callback during suspend and resume. Driver should call fb_set_suspend() from their implementation. If not set, fbdev emulation will invoke fb_set_suspend() directly. Only for i915. Do not use in new code. TODO: Fix i915 to not require this callback.”h]”(j‚ )�”}”(hŒ``fb_set_suspend``”h]”jˆ )�”}”(hj]h]”hŒfb_set_suspend”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj ]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´Kkhj ]ubjž )�”}”(hhh]”(hÎ)�”}”(hŒôDriver callback to suspend or resume, if set, fbdev emulation will invoke this callback during suspend and resume. Driver should call fb_set_suspend() from their implementation. If not set, fbdev emulation will invoke fb_set_suspend() directly.”h]”hŒôDriver callback to suspend or resume, if set, fbdev emulation will invoke this callback during suspend and resume. Driver should call fb_set_suspend() from their implementation. If not set, fbdev emulation will invoke fb_set_suspend() directly.”…”�”}”(hj(]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´Kehj%]ubhÎ)�”}”(hŒ&Only for i915. Do not use in new code.”h]”hŒ&Only for i915. Do not use in new code.”…”�”}”(hj7]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´Kjhj%]ubhÎ)�”}”(hŒ,TODO: Fix i915 to not require this callback.”h]”hŒ,TODO: Fix i915 to not require this callback.”…”�”}”(hjF]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´Klhj%]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj ]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j$]h´KkhjW\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj\ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjbXh²hh³j5Yh´NubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjp]h]”hŒ Description”…”�”}”(hjr]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjn]ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´KohjbXh²hubhÎ)�”}”(hŒ^h]”hŒMembers”…”�”}”(hj@^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj<^ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´KŽhj ^ubjw )�”}”(hhh]”(j| )�”}”(hŒ;``client`` DRM client used by the generic fbdev emulation. ”h]”(j‚ )�”}”(hŒ ``client``”h]”jˆ )�”}”(hj]^h]”hŒclient”…”�”}”(hj_^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj[^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´K‡hjW^ubjž )�”}”(hhh]”hÎ)�”}”(hŒ/DRM client used by the generic fbdev emulation.”h]”hŒ/DRM client used by the generic fbdev emulation.”…”�”}”(hjv^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jr^h´K‡hjs^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjW^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jr^h´K‡hjT^ubj| )�”}”(hŒ<``buffer`` Framebuffer used by the generic fbdev emulation. ”h]”(j‚ )�”}”(hŒ ``buffer``”h]”jˆ )�”}”(hj–^h]”hŒbuffer”…”�”}”(hj˜^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj”^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´KŽhj�^ubjž )�”}”(hhh]”hÎ)�”}”(hŒ0Framebuffer used by the generic fbdev emulation.”h]”hŒ0Framebuffer used by the generic fbdev emulation.”…”�”}”(hj¯^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j«^h´KŽhj¬^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj�^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j«^h´KŽhjT^ubj| )�”}”(hŒ"``fb`` Scanout framebuffer object ”h]”(j‚ )�”}”(hŒ``fb``”h]”jˆ )�”}”(hjÏ^h]”hŒfb”…”�”}”(hjÑ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÍ^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´KuhjÉ^ubjž )�”}”(hhh]”hÎ)�”}”(hŒScanout framebuffer object”h]”hŒScanout framebuffer object”…”�”}”(hjè^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jä^h´Kuhjå^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÉ^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jä^h´KuhjT^ubj| )�”}”(hŒ``dev`` DRM device ”h]”(j‚ )�”}”(hŒ``dev``”h]”jˆ )�”}”(hj_h]”hŒdev”…”�”}”(hj _h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´Kvhj_ubjž )�”}”(hhh]”hÎ)�”}”(hŒ DRM device”h]”hŒ DRM device”…”�”}”(hj!_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j_h´Kvhj_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j_h´KvhjT^ubj| )�”}”(hŒ)``funcs`` driver callbacks for fb helper ”h]”(j‚ )�”}”(hŒ ``funcs``”h]”jˆ )�”}”(hjA_h]”hŒfuncs”…”�”}”(hjC_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj?_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´Kwhj;_ubjž )�”}”(hhh]”hÎ)�”}”(hŒdriver callbacks for fb helper”h]”hŒdriver callbacks for fb helper”…”�”}”(hjZ_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jV_h´KwhjW_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj;_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jV_h´KwhjT^ubj| )�”}”(hŒ+``info`` emulated fbdev device info struct ”h]”(j‚ )�”}”(hŒ``info``”h]”jˆ )�”}”(hjz_h]”hŒinfo”…”�”}”(hj|_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjx_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´Kxhjt_ubjž )�”}”(hhh]”hÎ)�”}”(hŒ!emulated fbdev device info struct”h]”hŒ!emulated fbdev device info struct”…”�”}”(hj“_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j�_h´Kxhj�_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjt_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j�_h´KxhjT^ubj| )�”}”(hŒ-``pseudo_palette`` fake palette of 16 colors ”h]”(j‚ )�”}”(hŒ``pseudo_palette``”h]”jˆ )�”}”(hj³_h]”hŒpseudo_palette”…”�”}”(hjµ_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj±_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´Kyhj­_ubjž )�”}”(hhh]”hÎ)�”}”(hŒfake palette of 16 colors”h]”hŒfake palette of 16 colors”…”�”}”(hjÌ_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÈ_h´KyhjÉ_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj­_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÈ_h´KyhjT^ubj| )�”}”(hŒ_``damage_clip`` clip rectangle used with deferred_io to accumulate damage to the screen buffer ”h]”(j‚ )�”}”(hŒ``damage_clip``”h]”jˆ )�”}”(hjì_h]”hŒ damage_clip”…”�”}”(hjî_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjê_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´K{hjæ_ubjž )�”}”(hhh]”hÎ)�”}”(hŒNclip rectangle used with deferred_io to accumulate damage to the screen buffer”h]”hŒNclip rectangle used with deferred_io to accumulate damage to the screen buffer”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´Kzhj`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjæ_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j`h´K{hjT^ubj| )�”}”(hŒ4``damage_lock`` spinlock protecting **damage_clip** ”h]”(j‚ )�”}”(hŒ``damage_lock``”h]”jˆ )�”}”(hj&`h]”hŒ damage_lock”…”�”}”(hj(`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj$`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´K|hj `ubjž )�”}”(hhh]”hÎ)�”}”(hŒ#spinlock protecting **damage_clip**”h]”(hŒspinlock protecting ”…”�”}”(hj?`h²hh³Nh´Nubj3 )�”}”(hŒ**damage_clip**”h]”hŒ damage_clip”…”�”}”(hjG`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj?`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j;`h´K|hj<`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj `ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j;`h´K|hjT^ubj| )�”}”(hŒ5``damage_work`` worker used to flush the framebuffer ”h]”(j‚ )�”}”(hŒ``damage_work``”h]”jˆ )�”}”(hjm`h]”hŒ damage_work”…”�”}”(hjo`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjk`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´K}hjg`ubjž )�”}”(hhh]”hÎ)�”}”(hŒ$worker used to flush the framebuffer”h]”hŒ$worker used to flush the framebuffer”…”�”}”(hj†`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j‚`h´K}hjƒ`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjg`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j‚`h´K}hjT^ubj| )�”}”(hŒO``resume_work`` worker used during resume if the console lock is already taken ”h]”(j‚ )�”}”(hŒ``resume_work``”h]”jˆ )�”}”(hj¦`h]”hŒ resume_work”…”�”}”(hj¨`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¤`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´K~hj `ubjž )�”}”(hhh]”hÎ)�”}”(hŒ>worker used during resume if the console lock is already taken”h]”hŒ>worker used during resume if the console lock is already taken”…”�”}”(hj¿`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j»`h´K~hj¼`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj `ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j»`h´K~hjT^ubj| )�”}”(hX6``lock`` Top-level FBDEV helper lock. This protects all internal data structures and lists, such as **connector_info** and **crtc_info**. FIXME: fbdev emulation locking is a mess and long term we want to protect all helper internal state with this lock as well as reduce core KMS locking as much as possible. ”h]”(j‚ )�”}”(hŒ``lock``”h]”jˆ )�”}”(hjß`h]”hŒlock”…”�”}”(hjá`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÝ`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´K¤hjÙ`ubjž )�”}”(hhh]”(hÎ)�”}”(hŒ€Top-level FBDEV helper lock. This protects all internal data structures and lists, such as **connector_info** and **crtc_info**.”h]”(hŒ[Top-level FBDEV helper lock. This protects all internal data structures and lists, such as ”…”�”}”(hjø`h²hh³Nh´Nubj3 )�”}”(hŒ**connector_info**”h]”hŒconnector_info”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjø`ubhŒ and ”…”�”}”(hjø`h²hh³Nh´Nubj3 )�”}”(hŒ **crtc_info**”h]”hŒ crtc_info”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjø`ubhŒ.”…”�”}”(hjø`h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´KŸhjõ`ubhÎ)�”}”(hŒªFIXME: fbdev emulation locking is a mess and long term we want to protect all helper internal state with this lock as well as reduce core KMS locking as much as possible.”h]”hŒªFIXME: fbdev emulation locking is a mess and long term we want to protect all helper internal state with this lock as well as reduce core KMS locking as much as possible.”…”�”}”(hj+ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´K¢hjõ`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÙ`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jô`h´K¤hjT^ubj| )�”}”(hŒÍ``delayed_hotplug`` A hotplug was received while fbdev wasn't in control of the DRM device, i.e. another KMS master was active. The output configuration needs to be reprobe when fbdev is in control again. ”h]”(j‚ )�”}”(hŒ``delayed_hotplug``”h]”jˆ )�”}”(hjLah]”hŒdelayed_hotplug”…”�”}”(hjNah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjJaubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´K­hjFaubjž )�”}”(hhh]”hÎ)�”}”(hŒ¸A hotplug was received while fbdev wasn't in control of the DRM device, i.e. another KMS master was active. The output configuration needs to be reprobe when fbdev is in control again.”h]”hŒºA hotplug was received while fbdev wasn’t in control of the DRM device, i.e. another KMS master was active. The output configuration needs to be reprobe when fbdev is in control again.”…”�”}”(hjeah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´K«hjbaubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjFaubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jaah´K­hjT^ubj| )�”}”(hX(``deferred_setup`` If no outputs are connected (disconnected or unknown) the FB helper code will defer setup until at least one of the outputs shows up. This field keeps track of the status so that setup can be retried at every hotplug event until it succeeds eventually. Protected by **lock**. ”h]”(j‚ )�”}”(hŒ``deferred_setup``”h]”jˆ )�”}”(hj†ah]”hŒdeferred_setup”…”�”}”(hjˆah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj„aubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´K¹hj€aubjž )�”}”(hhh]”(hÎ)�”}”(hŒüIf no outputs are connected (disconnected or unknown) the FB helper code will defer setup until at least one of the outputs shows up. This field keeps track of the status so that setup can be retried at every hotplug event until it succeeds eventually.”h]”hŒüIf no outputs are connected (disconnected or unknown) the FB helper code will defer setup until at least one of the outputs shows up. This field keeps track of the status so that setup can be retried at every hotplug event until it succeeds eventually.”…”�”}”(hjŸah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´K´hjœaubhÎ)�”}”(hŒProtected by **lock**.”h]”(hŒ Protected by ”…”�”}”(hj®ah²hh³Nh´Nubj3 )�”}”(hŒ**lock**”h]”hŒlock”…”�”}”(hj¶ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj®aubhŒ.”…”�”}”(hj®ah²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j›ah´K¹hjœaubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj€aubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j›ah´K¹hjT^ubj| )�”}”(hŒÙ``preferred_bpp`` Temporary storage for the driver's preferred BPP setting passed to FB helper initialization. This needs to be tracked so that deferred FB helper setup can pass this on. See also: **deferred_setup** ”h]”(j‚ )�”}”(hŒ``preferred_bpp``”h]”jˆ )�”}”(hjàah]”hŒ preferred_bpp”…”�”}”(hjâah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÞaubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´KÄhjÚaubjž )�”}”(hhh]”(hÎ)�”}”(hŒ¨Temporary storage for the driver's preferred BPP setting passed to FB helper initialization. This needs to be tracked so that deferred FB helper setup can pass this on.”h]”hŒªTemporary storage for the driver’s preferred BPP setting passed to FB helper initialization. This needs to be tracked so that deferred FB helper setup can pass this on.”…”�”}”(hjùah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´KÀhjöaubhÎ)�”}”(hŒSee also: **deferred_setup**”h]”(hŒ See also: ”…”�”}”(hjbh²hh³Nh´Nubj3 )�”}”(hŒ**deferred_setup**”h]”hŒdeferred_setup”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjbubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jõah´KÄhjöaubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÚaubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jõah´KÄhjT^ubj| )�”}”(hŒå``fbdefio`` Temporary storage for the driver's FB deferred I/O handler. If the driver uses the DRM fbdev emulation layer, this is set by the core to a generic deferred I/O handler if a driver is preferring to use a shadow buffer.”h]”(j‚ )�”}”(hŒ ``fbdefio``”h]”jˆ )�”}”(hj6bh]”hŒfbdefio”…”�”}”(hj8bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj4bubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´KÎhj0bubjž )�”}”(hhh]”hÎ)�”}”(hŒÙTemporary storage for the driver's FB deferred I/O handler. If the driver uses the DRM fbdev emulation layer, this is set by the core to a generic deferred I/O handler if a driver is preferring to use a shadow buffer.”h]”hŒÛTemporary storage for the driver’s FB deferred I/O handler. If the driver uses the DRM fbdev emulation layer, this is set by the core to a generic deferred I/O handler if a driver is preferring to use a shadow buffer.”…”�”}”(hjObh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´KÌhjLbubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj0bubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jKbh´KÎhjT^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj ^ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjbXh²hh³j5Yh´NubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjybh]”hŒ Description”…”�”}”(hj{bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjwbubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´KÒhjbXh²hubhÎ)�”}”(hXThis is the main structure used by the fbdev helpers. Drivers supporting fbdev emulation should embedded this into their overall driver structure. Drivers must also fill out a :c:type:`struct drm_fb_helper_funcs ` with a few operations.”h]”(hŒ°This is the main structure used by the fbdev helpers. Drivers supporting fbdev emulation should embedded this into their overall driver structure. Drivers must also fill out a ”…”�”}”(hj�bh²hh³Nh´Nubh)�”}”(hŒ::c:type:`struct drm_fb_helper_funcs `”h]”jˆ )�”}”(hj™bh]”hŒstruct drm_fb_helper_funcs”…”�”}”(hj›bh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj—bubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_fb_helper_funcs”uh1hh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´K~hj�bubhŒ with a few operations.”…”�”}”(hj�bh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¶bh´K~hjbXh²hubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ#DRM_FB_HELPER_DEFAULT_OPS (C macro)”Œc.DRM_FB_HELPER_DEFAULT_OPS”hNt”auh1j† hjbXh²hh³j5Yh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒDRM_FB_HELPER_DEFAULT_OPS”h]”j¤ )�”}”(hŒDRM_FB_HELPER_DEFAULT_OPS”h]”jÍ )�”}”(hŒDRM_FB_HELPER_DEFAULT_OPS”h]”jÓ )�”}”(hjÔbh]”hŒDRM_FB_HELPER_DEFAULT_OPS”…”�”}”(hjÞbh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÚbubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÖbh²hh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´KÝubah}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjÒbh²hh³jñbh´KÝubah}”(h]”jÍbah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jñbh´KÝhjÏbh²hubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j hjÏbh²hh³jñbh´KÝubeh}”(h]”h ]”(j Œmacro”eh"]”h$]”h&]”j" j j# j cj$ j cj% ‰j& ‰j' ‰uh1j˜ h²hhjbXh³j5Yh´NubhÎ)�”}”(hŒ``DRM_FB_HELPER_DEFAULT_OPS``”h]”jˆ )�”}”(hjch]”hŒDRM_FB_HELPER_DEFAULT_OPS”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjcubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´KßhjbXh²hubj^E)�”}”(hŒ¬ helper define for drm drivers **Description** Helper define to register default implementations of drm_fb_helper functions. To be used in struct fb_ops of drm drivers. ”h]”(j^E)�”}”(hŒhelper define for drm drivers ”h]”hÎ)�”}”(hŒhelper define for drm drivers”h]”hŒhelper define for drm drivers”…”�”}”(hj.ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:115: ./include/drm/drm_fb_helper.h”h´KÝhj*cubah}”(h]”h ]”h"]”h$]”h&]”uh1j]Eh³j` callback. It ensures that the user isn't greeted with a black screen when the userspace compositor releases the display device. **Return** 0 on success, or a negative errno code otherwise.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjŸdh]”hŒ Parameters”…”�”}”(hj¡dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj�dubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´K hj™dubjw )�”}”(hhh]”(j| )�”}”(hŒO``struct drm_fb_helper *fb_helper`` driver-allocated fbdev helper, can be NULL ”h]”(j‚ )�”}”(hŒ#``struct drm_fb_helper *fb_helper``”h]”jˆ )�”}”(hj¾dh]”hŒstruct drm_fb_helper *fb_helper”…”�”}”(hjÀdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¼dubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´K�hj¸dubjž )�”}”(hhh]”hÎ)�”}”(hŒ*driver-allocated fbdev helper, can be NULL”h]”hŒ*driver-allocated fbdev helper, can be NULL”…”�”}”(hj×dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÓdh´K�hjÔdubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¸dubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÓdh´K�hjµdubj| )�”}”(hŒ)``bool force`` ignore present DRM master ”h]”(j‚ )�”}”(hŒ``bool force``”h]”jˆ )�”}”(hj÷dh]”hŒ bool force”…”�”}”(hjùdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjõdubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´Kžhjñdubjž )�”}”(hhh]”hÎ)�”}”(hŒignore present DRM master”h]”hŒignore present DRM master”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j eh´Kžhj eubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjñdubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j eh´Kžhjµdubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj™dubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj2eh]”hŒ Description”…”�”}”(hj4eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj0eubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´K hj™dubhÎ)�”}”(hŒéThis helper should be called from fbdev emulation's :c:type:`drm_client_funcs.restore ` callback. It ensures that the user isn't greeted with a black screen when the userspace compositor releases the display device.”h]”(hŒ6This helper should be called from fbdev emulation’s ”…”�”}”(hjHeh²hh³Nh´Nubh)�”}”(hŒ5:c:type:`drm_client_funcs.restore `”h]”jˆ )�”}”(hjReh]”hŒdrm_client_funcs.restore”…”�”}”(hjTeh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjPeubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_client_funcs”uh1hh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´KŸhjHeubhŒ‚ callback. It ensures that the user isn’t greeted with a black screen when the userspace compositor releases the display device.”…”�”}”(hjHeh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³joeh´KŸhj™dubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj|eh]”hŒReturn”…”�”}”(hj~eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjzeubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´K£hj™dubhÎ)�”}”(hŒ10 on success, or a negative errno code otherwise.”h]”hŒ10 on success, or a negative errno code otherwise.”…”�”}”(hj’eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´K¤hj™dubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjbXh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ drm_fb_helper_blank (C function)”Œc.drm_fb_helper_blank”hNt”auh1j† hjbXh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ9int drm_fb_helper_blank (int blank, struct fb_info *info)”h]”j¤ )�”}”(hŒ8int drm_fb_helper_blank(int blank, struct fb_info *info)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjÁeh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj½eh²hh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´K·ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐeh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj½eh²hh³jÏeh´K·ubjÍ )�”}”(hŒdrm_fb_helper_blank”h]”jÓ )�”}”(hŒdrm_fb_helper_blank”h]”hŒdrm_fb_helper_blank”…”�”}”(hjâeh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÞeubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj½eh²hh³jÏeh´K·ubjÞ)�”}”(hŒ!(int blank, struct fb_info *info)”h]”(jä)�”}”(hŒ int blank”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjþeh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjúeubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj fh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjúeubjÓ )�”}”(hŒblank”h]”hŒblank”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjúeubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjöeubjä)�”}”(hŒstruct fb_info *info”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj3fh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj/fubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@fh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj/fubh)�”}”(hhh]”jÓ )�”}”(hŒfb_info”h]”hŒfb_info”…”�”}”(hjQfh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjNfubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jSfŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjäesbŒc.drm_fb_helper_blank”†”asbuh1hhj/fubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjqfh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj/fubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj/fubjÓ )�”}”(hŒinfo”h]”hŒinfo”…”�”}”(hjŒfh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj/fubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjöeubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj½eh²hh³jÏeh´K·ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj¹eh²hh³jÏeh´K·ubah}”(h]”j´eah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jÏeh´K·hj¶eh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ5implementation for :c:type:`fb_ops.fb_blank `”h]”(hŒimplementation for ”…”�”}”(hj¶fh²hh³Nh´Nubh)�”}”(hŒ":c:type:`fb_ops.fb_blank `”h]”jˆ )�”}”(hjÀfh]”hŒfb_ops.fb_blank”…”�”}”(hjÂfh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj¾fubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jì )�”}”jï ]”jmfŒc.drm_fb_helper_blank”†”asbjñ Œfb_ops”uh1hh³j—ch´Kœhj¶fubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´K·hj³fh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¶eh²hh³jÏeh´K·ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jòfj$ jòfj% ‰j& ‰j' ‰uh1j˜ h²hhjbXh³Nh´Nubj) )�”}”(hŒq**Parameters** ``int blank`` desired blanking state ``struct fb_info *info`` fbdev registered by the helper”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjüfh]”hŒ Parameters”…”�”}”(hjþfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjúfubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´K»hjöfubjw )�”}”(hhh]”(j| )�”}”(hŒ%``int blank`` desired blanking state ”h]”(j‚ )�”}”(hŒ ``int blank``”h]”jˆ )�”}”(hjgh]”hŒ int blank”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjgubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´K¸hjgubjž )�”}”(hhh]”hÎ)�”}”(hŒdesired blanking state”h]”hŒdesired blanking state”…”�”}”(hj4gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j0gh´K¸hj1gubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjgubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j0gh´K¸hjgubj| )�”}”(hŒ7``struct fb_info *info`` fbdev registered by the helper”h]”(j‚ )�”}”(hŒ``struct fb_info *info``”h]”jˆ )�”}”(hjTgh]”hŒstruct fb_info *info”…”�”}”(hjVgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjRgubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´KºhjNgubjž )�”}”(hhh]”hÎ)�”}”(hŒfbdev registered by the helper”h]”hŒfbdev registered by the helper”…”�”}”(hjmgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´K¹hjjgubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjNgubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jigh´Kºhjgubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjöfubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjbXh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ"drm_fb_helper_prepare (C function)”Œc.drm_fb_helper_prepare”hNt”auh1j† hjbXh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ–void drm_fb_helper_prepare (struct drm_device *dev, struct drm_fb_helper *helper, unsigned int preferred_bpp, const struct drm_fb_helper_funcs *funcs)”h]”j¤ )�”}”(hŒ•void drm_fb_helper_prepare(struct drm_device *dev, struct drm_fb_helper *helper, unsigned int preferred_bpp, const struct drm_fb_helper_funcs *funcs)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj®gh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjªgh²hh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´Mqubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½gh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjªgh²hh³j¼gh´MqubjÍ )�”}”(hŒdrm_fb_helper_prepare”h]”jÓ )�”}”(hŒdrm_fb_helper_prepare”h]”hŒdrm_fb_helper_prepare”…”�”}”(hjÏgh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjËgubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjªgh²hh³j¼gh´MqubjÞ)�”}”(hŒ{(struct drm_device *dev, struct drm_fb_helper *helper, unsigned int preferred_bpp, const struct drm_fb_helper_funcs *funcs)”h]”(jä)�”}”(hŒstruct drm_device *dev”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjëgh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjçgubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjøgh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjçgubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_device”h]”hŒ drm_device”…”�”}”(hj hh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjhubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j hŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjÑgsbŒc.drm_fb_helper_prepare”†”asbuh1hhjçgubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)hh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjçgubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj7hh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjçgubjÓ )�”}”(hŒdev”h]”hŒdev”…”�”}”(hjDhh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjçgubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjãgubjä)�”}”(hŒstruct drm_fb_helper *helper”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj]hh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjYhubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjjhh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjYhubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_fb_helper”h]”hŒ drm_fb_helper”…”�”}”(hj{hh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjxhubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j}hŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%hŒc.drm_fb_helper_prepare”†”asbuh1hhjYhubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™hh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjYhubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj§hh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjYhubjÓ )�”}”(hŒhelper”h]”hŒhelper”…”�”}”(hj´hh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjYhubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjãgubjä)�”}”(hŒunsigned int preferred_bpp”h]”(j¦)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÍhh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjÉhubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛhh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÉhubj¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjéhh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjÉhubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷hh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÉhubjÓ )�”}”(hŒ preferred_bpp”h]”hŒ preferred_bpp”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÉhubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjãgubjä)�”}”(hŒ'const struct drm_fb_helper_funcs *funcs”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjiubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+ih²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjiubjª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj9ih²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjiubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFih²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjiubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_fb_helper_funcs”h]”hŒdrm_fb_helper_funcs”…”�”}”(hjWih²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjTiubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jYiŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%hŒc.drm_fb_helper_prepare”†”asbuh1hhjiubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjuih²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjiubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjƒih²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjiubjÓ )�”}”(hŒfuncs”h]”hŒfuncs”…”�”}”(hj�ih²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjiubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjãgubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjªgh²hh³j¼gh´Mqubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj¦gh²hh³j¼gh´Mqubah}”(h]”j¡gah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j¼gh´Mqhj£gh²hubj )�”}”(hhh]”hÎ)�”}”(hŒsetup a drm_fb_helper structure”h]”hŒsetup a drm_fb_helper structure”…”�”}”(hjºih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´Mqhj·ih²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj£gh²hh³j¼gh´Mqubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jÒij$ jÒij% ‰j& ‰j' ‰uh1j˜ h²hhjbXh³Nh´Nubj) )�”}”(hXã**Parameters** ``struct drm_device *dev`` DRM device ``struct drm_fb_helper *helper`` driver-allocated fbdev helper structure to set up ``unsigned int preferred_bpp`` Preferred bits per pixel for the device. ``const struct drm_fb_helper_funcs *funcs`` pointer to structure of functions associate with this helper **Description** Sets up the bare minimum to make the framebuffer helper usable. This is useful to implement race-free initialization of the polling helpers.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjÜih]”hŒ Parameters”…”�”}”(hjÞih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÚiubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´MuhjÖiubjw )�”}”(hhh]”(j| )�”}”(hŒ&``struct drm_device *dev`` DRM device ”h]”(j‚ )�”}”(hŒ``struct drm_device *dev``”h]”jˆ )�”}”(hjûih]”hŒstruct drm_device *dev”…”�”}”(hjýih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjùiubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´Mrhjõiubjž )�”}”(hhh]”hÎ)�”}”(hŒ DRM device”h]”hŒ DRM device”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jjh´Mrhjjubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjõiubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jjh´Mrhjòiubj| )�”}”(hŒS``struct drm_fb_helper *helper`` driver-allocated fbdev helper structure to set up ”h]”(j‚ )�”}”(hŒ ``struct drm_fb_helper *helper``”h]”jˆ )�”}”(hj4jh]”hŒstruct drm_fb_helper *helper”…”�”}”(hj6jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj2jubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´Mshj.jubjž )�”}”(hhh]”hÎ)�”}”(hŒ1driver-allocated fbdev helper structure to set up”h]”hŒ1driver-allocated fbdev helper structure to set up”…”�”}”(hjMjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jIjh´MshjJjubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj.jubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jIjh´Mshjòiubj| )�”}”(hŒH``unsigned int preferred_bpp`` Preferred bits per pixel for the device. ”h]”(j‚ )�”}”(hŒ``unsigned int preferred_bpp``”h]”jˆ )�”}”(hjmjh]”hŒunsigned int preferred_bpp”…”�”}”(hjojh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjkjubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´Mthjgjubjž )�”}”(hhh]”hÎ)�”}”(hŒ(Preferred bits per pixel for the device.”h]”hŒ(Preferred bits per pixel for the device.”…”�”}”(hj†jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j‚jh´Mthjƒjubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjgjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j‚jh´Mthjòiubj| )�”}”(hŒi``const struct drm_fb_helper_funcs *funcs`` pointer to structure of functions associate with this helper ”h]”(j‚ )�”}”(hŒ+``const struct drm_fb_helper_funcs *funcs``”h]”jˆ )�”}”(hj¦jh]”hŒ'const struct drm_fb_helper_funcs *funcs”…”�”}”(hj¨jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¤jubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´Muhj jubjž )�”}”(hhh]”hÎ)�”}”(hŒvoid drm_fb_helper_unprepare (struct drm_fb_helper *fb_helper)”h]”j¤ )�”}”(hŒ=void drm_fb_helper_unprepare(struct drm_fb_helper *fb_helper)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj&kh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj"kh²hh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´M˜ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5kh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj"kh²hh³j4kh´M˜ubjÍ )�”}”(hŒdrm_fb_helper_unprepare”h]”jÓ )�”}”(hŒdrm_fb_helper_unprepare”h]”hŒdrm_fb_helper_unprepare”…”�”}”(hjGkh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjCkubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj"kh²hh³j4kh´M˜ubjÞ)�”}”(hŒ!(struct drm_fb_helper *fb_helper)”h]”jä)�”}”(hŒstruct drm_fb_helper *fb_helper”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjckh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj_kubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjpkh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj_kubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_fb_helper”h]”hŒ drm_fb_helper”…”�”}”(hj�kh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj~kubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jƒkŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjIksbŒc.drm_fb_helper_unprepare”†”asbuh1hhj_kubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡kh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj_kubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj¯kh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj_kubjÓ )�”}”(hŒ fb_helper”h]”hŒ fb_helper”…”�”}”(hj¼kh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj_kubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj[kubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj"kh²hh³j4kh´M˜ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjkh²hh³j4kh´M˜ubah}”(h]”jkah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j4kh´M˜hjkh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ"clean up a drm_fb_helper structure”h]”hŒ"clean up a drm_fb_helper structure”…”�”}”(hjækh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´M˜hjãkh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjkh²hh³j4kh´M˜ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jþkj$ jþkj% ‰j& ‰j' ‰uh1j˜ h²hhjbXh³Nh´Nubj) )�”}”(hŒ¿**Parameters** ``struct drm_fb_helper *fb_helper`` driver-allocated fbdev helper structure to set up **Description** Cleans up the framebuffer helper. Inverse of drm_fb_helper_prepare().”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjlh]”hŒ Parameters”…”�”}”(hj lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjlubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´Mœhjlubjw )�”}”(hhh]”j| )�”}”(hŒV``struct drm_fb_helper *fb_helper`` driver-allocated fbdev helper structure to set up ”h]”(j‚ )�”}”(hŒ#``struct drm_fb_helper *fb_helper``”h]”jˆ )�”}”(hj'lh]”hŒstruct drm_fb_helper *fb_helper”…”�”}”(hj)lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj%lubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´M™hj!lubjž )�”}”(hhh]”hÎ)�”}”(hŒ1driver-allocated fbdev helper structure to set up”h]”hŒ1driver-allocated fbdev helper structure to set up”…”�”}”(hj@lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j`”h]”(hŒ initialize a ”…”�”}”(hj×mh²hh³Nh´Nubh)�”}”(hŒ.:c:type:`struct drm_fb_helper `”h]”jˆ )�”}”(hjámh]”hŒstruct drm_fb_helper”…”�”}”(hjãmh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjßmubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jì )�”}”jï ]”jmŒc.drm_fb_helper_init”†”asbjñ Œ drm_fb_helper”uh1hh³j—ch´Kœhj×mubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´M¤hjÔmh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjœlh²hh³jµlh´M¤ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jnj$ jnj% ‰j& ‰j' ‰uh1j˜ h²hhjbXh³Nh´Nubj) )�”}”(hXO**Parameters** ``struct drm_device *dev`` drm device ``struct drm_fb_helper *fb_helper`` driver-allocated fbdev helper structure to initialize **Description** This allocates the structures for the fbdev helper with the given limits. Note that this won't yet touch the hardware (through the driver interfaces) nor register the fbdev. This is only done in drm_fb_helper_initial_config() to allow driver writes more control over the exact init sequence. Drivers must call drm_fb_helper_prepare() before calling this function. **Return** Zero if everything went ok, nonzero otherwise.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjnh]”hŒ Parameters”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjnubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´M¨hjnubjw )�”}”(hhh]”(j| )�”}”(hŒ&``struct drm_device *dev`` drm device ”h]”(j‚ )�”}”(hŒ``struct drm_device *dev``”h]”jˆ )�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj:nubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´M¥hj6nubjž )�”}”(hhh]”hÎ)�”}”(hŒ drm device”h]”hŒ drm device”…”�”}”(hjUnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jQnh´M¥hjRnubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj6nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jQnh´M¥hj3nubj| )�”}”(hŒZ``struct drm_fb_helper *fb_helper`` driver-allocated fbdev helper structure to initialize ”h]”(j‚ )�”}”(hŒ#``struct drm_fb_helper *fb_helper``”h]”jˆ )�”}”(hjunh]”hŒstruct drm_fb_helper *fb_helper”…”�”}”(hjwnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjsnubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´M¦hjonubjž )�”}”(hhh]”hÎ)�”}”(hŒ5driver-allocated fbdev helper structure to initialize”h]”hŒ5driver-allocated fbdev helper structure to initialize”…”�”}”(hjŽnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jŠnh´M¦hj‹nubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjonubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jŠnh´M¦hj3nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjnubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj°nh]”hŒ Description”…”�”}”(hj²nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj®nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´M¨hjnubhÎ)�”}”(hX#This allocates the structures for the fbdev helper with the given limits. Note that this won't yet touch the hardware (through the driver interfaces) nor register the fbdev. This is only done in drm_fb_helper_initial_config() to allow driver writes more control over the exact init sequence.”h]”hX%This allocates the structures for the fbdev helper with the given limits. Note that this won’t yet touch the hardware (through the driver interfaces) nor register the fbdev. This is only done in drm_fb_helper_initial_config() to allow driver writes more control over the exact init sequence.”…”�”}”(hjÆnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´M§hjnubhÎ)�”}”(hŒGDrivers must call drm_fb_helper_prepare() before calling this function.”h]”hŒGDrivers must call drm_fb_helper_prepare() before calling this function.”…”�”}”(hjÕnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´M¬hjnubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjænh]”hŒReturn”…”�”}”(hjènh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjänubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´M®hjnubhÎ)�”}”(hŒ.Zero if everything went ok, nonzero otherwise.”h]”hŒ.Zero if everything went ok, nonzero otherwise.”…”�”}”(hjünh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´M¯hjnubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjbXh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ*drm_fb_helper_unregister_info (C function)”Œc.drm_fb_helper_unregister_info”hNt”auh1j† hjbXh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒDvoid drm_fb_helper_unregister_info (struct drm_fb_helper *fb_helper)”h]”j¤ )�”}”(hŒCvoid drm_fb_helper_unregister_info(struct drm_fb_helper *fb_helper)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj+oh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj'oh²hh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´Mæubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:oh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj'oh²hh³j9oh´MæubjÍ )�”}”(hŒdrm_fb_helper_unregister_info”h]”jÓ )�”}”(hŒdrm_fb_helper_unregister_info”h]”hŒdrm_fb_helper_unregister_info”…”�”}”(hjLoh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjHoubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj'oh²hh³j9oh´MæubjÞ)�”}”(hŒ!(struct drm_fb_helper *fb_helper)”h]”jä)�”}”(hŒstruct drm_fb_helper *fb_helper”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjhoh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjdoubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjuoh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjdoubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_fb_helper”h]”hŒ drm_fb_helper”…”�”}”(hj†oh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjƒoubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jˆoŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjNosbŒc.drm_fb_helper_unregister_info”†”asbuh1hhjdoubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦oh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjdoubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj´oh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjdoubjÓ )�”}”(hŒ fb_helper”h]”hŒ fb_helper”…”�”}”(hjÁoh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjdoubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj`oubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj'oh²hh³j9oh´Mæubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj#oh²hh³j9oh´Mæubah}”(h]”joah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j9oh´Mæhj oh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ%unregister fb_info framebuffer device”h]”hŒ%unregister fb_info framebuffer device”…”�”}”(hjëoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´Mæhjèoh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj oh²hh³j9oh´Mæubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jpj$ jpj% ‰j& ‰j' ‰uh1j˜ h²hhjbXh³Nh´Nubj) )�”}”(hX1**Parameters** ``struct drm_fb_helper *fb_helper`` driver-allocated fbdev helper, must not be NULL **Description** A wrapper around unregister_framebuffer, to release the fb_info framebuffer device. This must be called before releasing all resources for **fb_helper** by calling drm_fb_helper_fini().”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj ph]”hŒ Parameters”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj pubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´Mêhjpubjw )�”}”(hhh]”j| )�”}”(hŒT``struct drm_fb_helper *fb_helper`` driver-allocated fbdev helper, must not be NULL ”h]”(j‚ )�”}”(hŒ#``struct drm_fb_helper *fb_helper``”h]”jˆ )�”}”(hj,ph]”hŒstruct drm_fb_helper *fb_helper”…”�”}”(hj.ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj*pubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´Mçhj&pubjž )�”}”(hhh]”hÎ)�”}”(hŒ/driver-allocated fbdev helper, must not be NULL”h]”hŒ/driver-allocated fbdev helper, must not be NULL”…”�”}”(hjEph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jAph´MçhjBpubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj&pubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jAph´Mçhj#pubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjpubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjgph]”hŒ Description”…”�”}”(hjiph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjepubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´MéhjpubhÎ)�”}”(hŒ¹A wrapper around unregister_framebuffer, to release the fb_info framebuffer device. This must be called before releasing all resources for **fb_helper** by calling drm_fb_helper_fini().”h]”(hŒ‹A wrapper around unregister_framebuffer, to release the fb_info framebuffer device. This must be called before releasing all resources for ”…”�”}”(hj}ph²hh³Nh´Nubj3 )�”}”(hŒ **fb_helper**”h]”hŒ fb_helper”…”�”}”(hj…ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj}pubhŒ! by calling drm_fb_helper_fini().”…”�”}”(hj}ph²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´Mèhjpubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjbXh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_fb_helper_fini (C function)”Œc.drm_fb_helper_fini”hNt”auh1j† hjbXh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ9void drm_fb_helper_fini (struct drm_fb_helper *fb_helper)”h]”j¤ )�”}”(hŒ8void drm_fb_helper_fini(struct drm_fb_helper *fb_helper)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¾ph²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjºph²hh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´Môubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍph²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjºph²hh³jÌph´MôubjÍ )�”}”(hŒdrm_fb_helper_fini”h]”jÓ )�”}”(hŒdrm_fb_helper_fini”h]”hŒdrm_fb_helper_fini”…”�”}”(hjßph²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÛpubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjºph²hh³jÌph´MôubjÞ)�”}”(hŒ!(struct drm_fb_helper *fb_helper)”h]”jä)�”}”(hŒstruct drm_fb_helper *fb_helper”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjûph²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj÷pubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj÷pubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_fb_helper”h]”hŒ drm_fb_helper”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjqubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jqŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjápsbŒc.drm_fb_helper_fini”†”asbuh1hhj÷pubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9qh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj÷pubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjGqh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj÷pubjÓ )�”}”(hŒ fb_helper”h]”hŒ fb_helper”…”�”}”(hjTqh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj÷pubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjópubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjºph²hh³jÌph´Môubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj¶ph²hh³jÌph´Môubah}”(h]”j±pah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jÌph´Môhj³ph²hubj )�”}”(hhh]”hÎ)�”}”(hŒ:finialize a :c:type:`struct drm_fb_helper `”h]”(hŒ finialize a ”…”�”}”(hj~qh²hh³Nh´Nubh)�”}”(hŒ.:c:type:`struct drm_fb_helper `”h]”jˆ )�”}”(hjˆqh]”hŒstruct drm_fb_helper”…”�”}”(hjŠqh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj†qubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jì )�”}”jï ]”j5qŒc.drm_fb_helper_fini”†”asbjñ Œ drm_fb_helper”uh1hh³j—ch´Kœhj~qubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´Môhj{qh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj³ph²hh³jÌph´Môubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jºqj$ jºqj% ‰j& ‰j' ‰uh1j˜ h²hhjbXh³Nh´Nubj) )�”}”(hŒ¸**Parameters** ``struct drm_fb_helper *fb_helper`` driver-allocated fbdev helper, can be NULL **Description** This cleans up all remaining resources associated with **fb_helper**.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjÄqh]”hŒ Parameters”…”�”}”(hjÆqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÂqubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´Møhj¾qubjw )�”}”(hhh]”j| )�”}”(hŒO``struct drm_fb_helper *fb_helper`` driver-allocated fbdev helper, can be NULL ”h]”(j‚ )�”}”(hŒ#``struct drm_fb_helper *fb_helper``”h]”jˆ )�”}”(hjãqh]”hŒstruct drm_fb_helper *fb_helper”…”�”}”(hjåqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjáqubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´MõhjÝqubjž )�”}”(hhh]”hÎ)�”}”(hŒ*driver-allocated fbdev helper, can be NULL”h]”hŒ*driver-allocated fbdev helper, can be NULL”…”�”}”(hjüqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jøqh´Mõhjùqubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÝqubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jøqh´MõhjÚqubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj¾qubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjrh]”hŒ Description”…”�”}”(hj rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjrubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´M÷hj¾qubhÎ)�”}”(hŒEThis cleans up all remaining resources associated with **fb_helper**.”h]”(hŒ7This cleans up all remaining resources associated with ”…”�”}”(hj4rh²hh³Nh´Nubj3 )�”}”(hŒ **fb_helper**”h]”hŒ fb_helper”…”�”}”(hj` callback function for flushing the fbdev mmap writes.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjÇsh]”hŒ Parameters”…”�”}”(hjÉsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÅsubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´MlhjÁsubjw )�”}”(hhh]”(j| )�”}”(hŒ0``struct fb_info *info`` fb_info struct pointer ”h]”(j‚ )�”}”(hŒ``struct fb_info *info``”h]”jˆ )�”}”(hjæsh]”hŒstruct fb_info *info”…”�”}”(hjèsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjäsubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´Mihjàsubjž )�”}”(hhh]”hÎ)�”}”(hŒfb_info struct pointer”h]”hŒfb_info struct pointer”…”�”}”(hjÿsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jûsh´Mihjüsubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjàsubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jûsh´MihjÝsubj| )�”}”(hŒY``struct list_head *pagereflist`` list of mmap framebuffer pages that have to be flushed ”h]”(j‚ )�”}”(hŒ!``struct list_head *pagereflist``”h]”jˆ )�”}”(hjth]”hŒstruct list_head *pagereflist”…”�”}”(hj!th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjtubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´Mjhjtubjž )�”}”(hhh]”hÎ)�”}”(hŒ6list of mmap framebuffer pages that have to be flushed”h]”hŒ6list of mmap framebuffer pages that have to be flushed”…”�”}”(hj8th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j4th´Mjhj5tubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjtubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j4th´MjhjÝsubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÁsubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjZth]”hŒ Description”…”�”}”(hj\th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjXtubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´MlhjÁsubhÎ)�”}”(hŒˆThis function is used as the :c:type:`fb_deferred_io.deferred_io ` callback function for flushing the fbdev mmap writes.”h]”(hŒThis function is used as the ”…”�”}”(hjpth²hh³Nh´Nubh)�”}”(hŒ5:c:type:`fb_deferred_io.deferred_io `”h]”jˆ )�”}”(hjzth]”hŒfb_deferred_io.deferred_io”…”�”}”(hj|th²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjxtubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œfb_deferred_io”uh1hh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´MkhjptubhŒ6 callback function for flushing the fbdev mmap writes.”…”�”}”(hjpth²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j—th´MkhjÁsubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjbXh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ&drm_fb_helper_set_suspend (C function)”Œc.drm_fb_helper_set_suspend”hNt”auh1j† hjbXh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒNvoid drm_fb_helper_set_suspend (struct drm_fb_helper *fb_helper, bool suspend)”h]”j¤ )�”}”(hŒMvoid drm_fb_helper_set_suspend(struct drm_fb_helper *fb_helper, bool suspend)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÂth²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj¾th²hh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´M•ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑth²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¾th²hh³jÐth´M•ubjÍ )�”}”(hŒdrm_fb_helper_set_suspend”h]”jÓ )�”}”(hŒdrm_fb_helper_set_suspend”h]”hŒdrm_fb_helper_set_suspend”…”�”}”(hjãth²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjßtubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj¾th²hh³jÐth´M•ubjÞ)�”}”(hŒ/(struct drm_fb_helper *fb_helper, bool suspend)”h]”(jä)�”}”(hŒstruct drm_fb_helper *fb_helper”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjÿth²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjûtubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj uh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjûtubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_fb_helper”h]”hŒ drm_fb_helper”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjuubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”juŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjåtsbŒc.drm_fb_helper_set_suspend”†”asbuh1hhjûtubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=uh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjûtubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjKuh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjûtubjÓ )�”}”(hŒ fb_helper”h]”hŒ fb_helper”…”�”}”(hjXuh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjûtubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj÷tubjä)�”}”(hŒ bool suspend”h]”(j¦)�”}”(hj£Ih]”hŒbool”…”�”}”(hjquh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjmuubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~uh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjmuubjÓ )�”}”(hŒsuspend”h]”hŒsuspend”…”�”}”(hjŒuh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjmuubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj÷tubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj¾th²hh³jÐth´M•ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjºth²hh³jÐth´M•ubah}”(h]”jµtah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jÐth´M•hj·th²hubj )�”}”(hhh]”hÎ)�”}”(hŒwrapper around fb_set_suspend”h]”hŒwrapper around fb_set_suspend”…”�”}”(hj¶uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´M•hj³uh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj·th²hh³jÐth´M•ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jÎuj$ jÎuj% ‰j& ‰j' ‰uh1j˜ h²hhjbXh³Nh´Nubj) )�”}”(hX3**Parameters** ``struct drm_fb_helper *fb_helper`` driver-allocated fbdev helper, can be NULL ``bool suspend`` whether to suspend or resume **Description** A wrapper around fb_set_suspend implemented by fbdev core. Use drm_fb_helper_set_suspend_unlocked() if you don't need to take the lock yourself”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjØuh]”hŒ Parameters”…”�”}”(hjÚuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÖuubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´M™hjÒuubjw )�”}”(hhh]”(j| )�”}”(hŒO``struct drm_fb_helper *fb_helper`` driver-allocated fbdev helper, can be NULL ”h]”(j‚ )�”}”(hŒ#``struct drm_fb_helper *fb_helper``”h]”jˆ )�”}”(hj÷uh]”hŒstruct drm_fb_helper *fb_helper”…”�”}”(hjùuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjõuubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´M–hjñuubjž )�”}”(hhh]”hÎ)�”}”(hŒ*driver-allocated fbdev helper, can be NULL”h]”hŒ*driver-allocated fbdev helper, can be NULL”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j vh´M–hj vubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjñuubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j vh´M–hjîuubj| )�”}”(hŒ.``bool suspend`` whether to suspend or resume ”h]”(j‚ )�”}”(hŒ``bool suspend``”h]”jˆ )�”}”(hj0vh]”hŒ bool suspend”…”�”}”(hj2vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj.vubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´M—hj*vubjž )�”}”(hhh]”hÎ)�”}”(hŒwhether to suspend or resume”h]”hŒwhether to suspend or resume”…”�”}”(hjIvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jEvh´M—hjFvubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj*vubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jEvh´M—hjîuubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÒuubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjkvh]”hŒ Description”…”�”}”(hjmvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjivubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´M™hjÒuubhÎ)�”}”(hŒ�A wrapper around fb_set_suspend implemented by fbdev core. Use drm_fb_helper_set_suspend_unlocked() if you don't need to take the lock yourself”h]”hŒ‘A wrapper around fb_set_suspend implemented by fbdev core. Use drm_fb_helper_set_suspend_unlocked() if you don’t need to take the lock yourself”…”�”}”(hj�vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´M˜hjÒuubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjbXh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ/drm_fb_helper_set_suspend_unlocked (C function)”Œ$c.drm_fb_helper_set_suspend_unlocked”hNt”auh1j† hjbXh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒWvoid drm_fb_helper_set_suspend_unlocked (struct drm_fb_helper *fb_helper, bool suspend)”h]”j¤ )�”}”(hŒVvoid drm_fb_helper_set_suspend_unlocked(struct drm_fb_helper *fb_helper, bool suspend)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj°vh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj¬vh²hh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´Mªubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿vh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¬vh²hh³j¾vh´MªubjÍ )�”}”(hŒ"drm_fb_helper_set_suspend_unlocked”h]”jÓ )�”}”(hŒ"drm_fb_helper_set_suspend_unlocked”h]”hŒ"drm_fb_helper_set_suspend_unlocked”…”�”}”(hjÑvh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÍvubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj¬vh²hh³j¾vh´MªubjÞ)�”}”(hŒ/(struct drm_fb_helper *fb_helper, bool suspend)”h]”(jä)�”}”(hŒstruct drm_fb_helper *fb_helper”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjívh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjévubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjúvh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjévubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_fb_helper”h]”hŒ drm_fb_helper”…”�”}”(hj wh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjwubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j wŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjÓvsbŒ$c.drm_fb_helper_set_suspend_unlocked”†”asbuh1hhjévubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+wh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjévubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj9wh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjévubjÓ )�”}”(hŒ fb_helper”h]”hŒ fb_helper”…”�”}”(hjFwh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjévubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjåvubjä)�”}”(hŒ bool suspend”h]”(j¦)�”}”(hj£Ih]”hŒbool”…”�”}”(hj_wh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj[wubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjlwh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj[wubjÓ )�”}”(hŒsuspend”h]”hŒsuspend”…”�”}”(hjzwh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj[wubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjåvubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj¬vh²hh³j¾vh´Mªubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj¨vh²hh³j¾vh´Mªubah}”(h]”j£vah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j¾vh´Mªhj¥vh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ>wrapper around fb_set_suspend that also takes the console lock”h]”hŒ>wrapper around fb_set_suspend that also takes the console lock”…”�”}”(hj¤wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´Mªhj¡wh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¥vh²hh³j¾vh´Mªubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j¼wj$ j¼wj% ‰j& ‰j' ‰uh1j˜ h²hhjbXh³Nh´Nubj) )�”}”(hX‹**Parameters** ``struct drm_fb_helper *fb_helper`` driver-allocated fbdev helper, can be NULL ``bool suspend`` whether to suspend or resume **Description** A wrapper around fb_set_suspend() that takes the console lock. If the lock isn't available on resume, a worker is tasked with waiting for the lock to become available. The console lock can be pretty contented on resume due to all the printk activity. This function can be called multiple times with the same state since :c:type:`fb_info.state ` is checked to see if fbdev is running or not before locking. Use drm_fb_helper_set_suspend() if you need to take the lock yourself.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjÆwh]”hŒ Parameters”…”�”}”(hjÈwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÄwubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´M®hjÀwubjw )�”}”(hhh]”(j| )�”}”(hŒO``struct drm_fb_helper *fb_helper`` driver-allocated fbdev helper, can be NULL ”h]”(j‚ )�”}”(hŒ#``struct drm_fb_helper *fb_helper``”h]”jˆ )�”}”(hjåwh]”hŒstruct drm_fb_helper *fb_helper”…”�”}”(hjçwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjãwubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´M¬hjßwubjž )�”}”(hhh]”hÎ)�”}”(hŒ*driver-allocated fbdev helper, can be NULL”h]”hŒ*driver-allocated fbdev helper, can be NULL”…”�”}”(hjþwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³júwh´M¬hjûwubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjßwubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³júwh´M¬hjÜwubj| )�”}”(hŒ.``bool suspend`` whether to suspend or resume ”h]”(j‚ )�”}”(hŒ``bool suspend``”h]”jˆ )�”}”(hjxh]”hŒ bool suspend”…”�”}”(hj xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjxubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´M­hjxubjž )�”}”(hhh]”hÎ)�”}”(hŒwhether to suspend or resume”h]”hŒwhether to suspend or resume”…”�”}”(hj7xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j3xh´M­hj4xubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjxubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j3xh´M­hjÜwubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÀwubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjYxh]”hŒ Description”…”�”}”(hj[xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjWxubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´M¯hjÀwubhÎ)�”}”(hŒúA wrapper around fb_set_suspend() that takes the console lock. If the lock isn't available on resume, a worker is tasked with waiting for the lock to become available. The console lock can be pretty contented on resume due to all the printk activity.”h]”hŒüA wrapper around fb_set_suspend() that takes the console lock. If the lock isn’t available on resume, a worker is tasked with waiting for the lock to become available. The console lock can be pretty contented on resume due to all the printk activity.”…”�”}”(hjoxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´M®hjÀwubhÎ)�”}”(hŒ£This function can be called multiple times with the same state since :c:type:`fb_info.state ` is checked to see if fbdev is running or not before locking.”h]”(hŒEThis function can be called multiple times with the same state since ”…”�”}”(hj~xh²hh³Nh´Nubh)�”}”(hŒ!:c:type:`fb_info.state `”h]”jˆ )�”}”(hjˆxh]”hŒ fb_info.state”…”�”}”(hjŠxh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj†xubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œfb_info”uh1hh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´M³hj~xubhŒ= is checked to see if fbdev is running or not before locking.”…”�”}”(hj~xh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¥xh´M³hjÀwubhÎ)�”}”(hŒFUse drm_fb_helper_set_suspend() if you need to take the lock yourself.”h]”hŒFUse drm_fb_helper_set_suspend() if you need to take the lock yourself.”…”�”}”(hj°xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´M¶hjÀwubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjbXh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ"drm_fb_helper_setcmap (C function)”Œc.drm_fb_helper_setcmap”hNt”auh1j† hjbXh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒFint drm_fb_helper_setcmap (struct fb_cmap *cmap, struct fb_info *info)”h]”j¤ )�”}”(hŒEint drm_fb_helper_setcmap(struct fb_cmap *cmap, struct fb_info *info)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjßxh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjÛxh²hh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´Mªubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîxh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÛxh²hh³jíxh´MªubjÍ )�”}”(hŒdrm_fb_helper_setcmap”h]”jÓ )�”}”(hŒdrm_fb_helper_setcmap”h]”hŒdrm_fb_helper_setcmap”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjüxubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÛxh²hh³jíxh´MªubjÞ)�”}”(hŒ,(struct fb_cmap *cmap, struct fb_info *info)”h]”(jä)�”}”(hŒstruct fb_cmap *cmap”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjyubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)yh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjyubh)�”}”(hhh]”jÓ )�”}”(hŒfb_cmap”h]”hŒfb_cmap”…”�”}”(hj:yh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj7yubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j`”h]”(hŒimplementation for ”…”�”}”(hjzh²hh³Nh´Nubh)�”}”(hŒ$:c:type:`fb_ops.fb_setcmap `”h]”jˆ )�”}”(hjzh]”hŒfb_ops.fb_setcmap”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjzubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jì )�”}”jï ]”jVyŒc.drm_fb_helper_setcmap”†”asbjñ Œfb_ops”uh1hh³j—ch´Kœhjzubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´Mªhj zh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÔxh²hh³jíxh´Mªubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jKzj$ jKzj% ‰j& ‰j' ‰uh1j˜ h²hhjbXh³Nh´Nubj) )�”}”(hŒq**Parameters** ``struct fb_cmap *cmap`` cmap to set ``struct fb_info *info`` fbdev registered by the helper”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjUzh]”hŒ Parameters”…”�”}”(hjWzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjSzubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´M®hjOzubjw )�”}”(hhh]”(j| )�”}”(hŒ%``struct fb_cmap *cmap`` cmap to set ”h]”(j‚ )�”}”(hŒ``struct fb_cmap *cmap``”h]”jˆ )�”}”(hjtzh]”hŒstruct fb_cmap *cmap”…”�”}”(hjvzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjrzubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´M«hjnzubjž )�”}”(hhh]”hÎ)�”}”(hŒ cmap to set”h]”hŒ cmap to set”…”�”}”(hj�zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j‰zh´M«hjŠzubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjnzubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j‰zh´M«hjkzubj| )�”}”(hŒ7``struct fb_info *info`` fbdev registered by the helper”h]”(j‚ )�”}”(hŒ``struct fb_info *info``”h]”jˆ )�”}”(hj­zh]”hŒstruct fb_info *info”…”�”}”(hj¯zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj«zubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´M­hj§zubjž )�”}”(hhh]”hÎ)�”}”(hŒfbdev registered by the helper”h]”hŒfbdev registered by the helper”…”�”}”(hjÆzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´M¬hjÃzubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj§zubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÂzh´M­hjkzubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjOzubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjbXh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ drm_fb_helper_ioctl (C function)”Œc.drm_fb_helper_ioctl”hNt”auh1j† hjbXh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒSint drm_fb_helper_ioctl (struct fb_info *info, unsigned int cmd, unsigned long arg)”h]”j¤ )�”}”(hŒRint drm_fb_helper_ioctl(struct fb_info *info, unsigned int cmd, unsigned long arg)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj{h²hh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.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Œdrm_fb_helper_ioctl”h]”jÓ )�”}”(hŒdrm_fb_helper_ioctl”h]”hŒdrm_fb_helper_ioctl”…”�”}”(hj({h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj${ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj{h²hh³j{h´MÐubjÞ)�”}”(hŒ;(struct fb_info *info, unsigned int cmd, unsigned long arg)”h]”(jä)�”}”(hŒstruct fb_info *info”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjD{h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj@{ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQ{h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj@{ubh)�”}”(hhh]”jÓ )�”}”(hŒfb_info”h]”hŒfb_info”…”�”}”(hjb{h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj_{ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jd{Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj*{sbŒc.drm_fb_helper_ioctl”†”asbuh1hhj@{ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚{h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj@{ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj�{h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj@{ubjÓ )�”}”(hŒinfo”h]”hŒinfo”…”�”}”(hj�{h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj@{ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj<{ubjä)�”}”(hŒunsigned int cmd”h]”(j¦)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(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Œint”h]”hŒint”…”�”}”(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Œcmd”h]”hŒcmd”…”�”}”(hjî{h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj²{ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj<{ubjä)�”}”(hŒunsigned long arg”h]”(j¦)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(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”h]”hŒlong”…”�”}”(hj#|h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj|ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1|h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj|ubjÓ )�”}”(hŒarg”h]”hŒarg”…”�”}”(hj?|h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj|ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj<{ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj{h²hh³j{h´MÐubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjÿzh²hh³j{h´MÐubah}”(h]”júzah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j{h´MÐhjüzh²hubj )�”}”(hhh]”hÎ)�”}”(hŒlegacy ioctl implementation”h]”hŒlegacy ioctl implementation”…”�”}”(hji|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´MÐhjf|h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjüzh²hh³j{h´MÐubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j�|j$ j�|j% ‰j& ‰j' ‰uh1j˜ h²hhjbXh³Nh´Nubj) )�”}”(hX**Parameters** ``struct fb_info *info`` fbdev registered by the helper ``unsigned int cmd`` ioctl command ``unsigned long arg`` ioctl argument **Description** A helper to implement the standard fbdev ioctl. Only FBIO_WAITFORVSYNC is implemented for now.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj‹|h]”hŒ Parameters”…”�”}”(hj�|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj‰|ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´MÔhj…|ubjw )�”}”(hhh]”(j| )�”}”(hŒ8``struct fb_info *info`` fbdev registered by the helper ”h]”(j‚ )�”}”(hŒ``struct fb_info *info``”h]”jˆ )�”}”(hjª|h]”hŒstruct fb_info *info”…”�”}”(hj¬|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¨|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´MÑhj¤|ubjž )�”}”(hhh]”hÎ)�”}”(hŒfbdev registered by the helper”h]”hŒfbdev registered by the helper”…”�”}”(hjÃ|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¿|h´MÑhjÀ|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¤|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¿|h´MÑhj¡|ubj| )�”}”(hŒ#``unsigned int cmd`` ioctl command ”h]”(j‚ )�”}”(hŒ``unsigned int cmd``”h]”jˆ )�”}”(hjã|h]”hŒunsigned int cmd”…”�”}”(hjå|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjá|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´MÒhjÝ|ubjž )�”}”(hhh]”hÎ)�”}”(hŒ ioctl command”h]”hŒ ioctl command”…”�”}”(hjü|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jø|h´MÒhjù|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÝ|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jø|h´MÒhj¡|ubj| )�”}”(hŒ%``unsigned long arg`` ioctl argument ”h]”(j‚ )�”}”(hŒ``unsigned long arg``”h]”jˆ )�”}”(hj}h]”hŒunsigned long arg”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´MÓhj}ubjž )�”}”(hhh]”hÎ)�”}”(hŒioctl argument”h]”hŒioctl argument”…”�”}”(hj5}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j1}h´MÓhj2}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j1}h´MÓhj¡|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj…|ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjW}h]”hŒ Description”…”�”}”(hjY}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjU}ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´MÕhj…|ubhÎ)�”}”(hŒ^A helper to implement the standard fbdev ioctl. Only FBIO_WAITFORVSYNC is implemented for now.”h]”hŒ^A helper to implement the standard fbdev ioctl. Only FBIO_WAITFORVSYNC is implemented for now.”…”�”}”(hjm}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´MÔhj…|ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjbXh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ$drm_fb_helper_check_var (C function)”Œc.drm_fb_helper_check_var”hNt”auh1j† hjbXh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒQint drm_fb_helper_check_var (struct fb_var_screeninfo *var, struct fb_info *info)”h]”j¤ )�”}”(hŒPint drm_fb_helper_check_var(struct fb_var_screeninfo *var, struct fb_info *info)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjœ}h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj˜}h²hh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´Meubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«}h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj˜}h²hh³jª}h´MeubjÍ )�”}”(hŒdrm_fb_helper_check_var”h]”jÓ )�”}”(hŒdrm_fb_helper_check_var”h]”hŒdrm_fb_helper_check_var”…”�”}”(hj½}h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¹}ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj˜}h²hh³jª}h´MeubjÞ)�”}”(hŒ5(struct fb_var_screeninfo *var, struct fb_info *info)”h]”(jä)�”}”(hŒstruct fb_var_screeninfo *var”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Œfb_var_screeninfo”h]”hŒfb_var_screeninfo”…”�”}”(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%)�”}”jj¿}sbŒc.drm_fb_helper_check_var”†”asbuh1hhjÕ}ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÕ}ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj%~h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÕ}ubjÓ )�”}”(hŒvar”h]”hŒvar”…”�”}”(hj2~h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÕ}ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÑ}ubjä)�”}”(hŒstruct fb_info *info”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjK~h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjG~ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjX~h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjG~ubh)�”}”(hhh]”jÓ )�”}”(hŒfb_info”h]”hŒfb_info”…”�”}”(hji~h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjf~ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jk~Œmodname”NŒ classname”Njé jì )�”}”jï ]”j~Œc.drm_fb_helper_check_var”†”asbuh1hhjG~ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡~h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjG~ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj•~h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjG~ubjÓ )�”}”(hŒinfo”h]”hŒinfo”…”�”}”(hj¢~h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjG~ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÑ}ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj˜}h²hh³jª}h´Meubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj”}h²hh³jª}h´Meubah}”(h]”j�}ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jª}h´Mehj‘}h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ9implementation for :c:type:`fb_ops.fb_check_var `”h]”(hŒimplementation for ”…”�”}”(hjÌ~h²hh³Nh´Nubh)�”}”(hŒ&:c:type:`fb_ops.fb_check_var `”h]”jˆ )�”}”(hjÖ~h]”hŒfb_ops.fb_check_var”…”�”}”(hjØ~h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÔ~ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jì )�”}”jï ]”j~Œc.drm_fb_helper_check_var”†”asbjñ Œfb_ops”uh1hh³j—ch´KœhjÌ~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´MehjÉ~h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj‘}h²hh³jª}h´Meubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jj$ jj% ‰j& ‰j' ‰uh1j˜ h²hhjbXh³Nh´Nubj) )�”}”(hŒ‚**Parameters** ``struct fb_var_screeninfo *var`` screeninfo to check ``struct fb_info *info`` fbdev registered by the helper”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´Mihj ubjw )�”}”(hhh]”(j| )�”}”(hŒ6``struct fb_var_screeninfo *var`` screeninfo to check ”h]”(j‚ )�”}”(hŒ!``struct fb_var_screeninfo *var``”h]”jˆ )�”}”(hj1h]”hŒstruct fb_var_screeninfo *var”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´Mfhj+ubjž )�”}”(hhh]”hÎ)�”}”(hŒscreeninfo to check”h]”hŒscreeninfo to check”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jFh´MfhjGubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jFh´Mfhj(ubj| )�”}”(hŒ7``struct fb_info *info`` fbdev registered by the helper”h]”(j‚ )�”}”(hŒ``struct fb_info *info``”h]”jˆ )�”}”(hjjh]”hŒstruct fb_info *info”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjhubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´Mhhjdubjž )�”}”(hhh]”hÎ)�”}”(hŒfbdev registered by the helper”h]”hŒfbdev registered by the helper”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´Mghj€ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjdubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jh´Mhhj(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjbXh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ"drm_fb_helper_set_par (C function)”Œc.drm_fb_helper_set_par”hNt”auh1j† hjbXh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ0int drm_fb_helper_set_par (struct fb_info *info)”h]”j¤ )�”}”(hŒ/int drm_fb_helper_set_par(struct fb_info *info)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjÀh²hh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.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Œdrm_fb_helper_set_par”h]”jÓ )�”}”(hŒdrm_fb_helper_set_par”h]”hŒdrm_fb_helper_set_par”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjáubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÀh²hh³jÒh´MÅubjÞ)�”}”(hŒ(struct fb_info *info)”h]”jä)�”}”(hŒstruct fb_info *info”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Œfb_info”h]”hŒfb_info”…”�”}”(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%)�”}”jjçsbŒc.drm_fb_helper_set_par”†”asbuh1hhjýubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?€h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjýubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjM€h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjýubjÓ )�”}”(hŒinfo”h]”hŒinfo”…”�”}”(hjZ€h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjýubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjùubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjÀh²hh³jÒh´MÅubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ7implementation for :c:type:`fb_ops.fb_set_par `”h]”(hŒimplementation for ”…”�”}”(hj„€h²hh³Nh´Nubh)�”}”(hŒ$:c:type:`fb_ops.fb_set_par `”h]”jˆ )�”}”(hjŽ€h]”hŒfb_ops.fb_set_par”…”�”}”(hj�€h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjŒ€ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jì )�”}”jï ]”j;€Œc.drm_fb_helper_set_par”†”asbjñ Œfb_ops”uh1hh³j—ch´Kœhj„€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.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²hhjbXh³Nh´Nubj) )�”}”(hŒÿ**Parameters** ``struct fb_info *info`` fbdev registered by the helper **Description** This will let fbcon do the mode init and is called at initialization time by the fbdev core when registering the driver, and later on through the hotplug callback.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjÊ€h]”hŒ Parameters”…”�”}”(hjÌ€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÈ€ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´MÉhjÄ€ubjw )�”}”(hhh]”j| )�”}”(hŒ8``struct fb_info *info`` fbdev registered by the helper ”h]”(j‚ )�”}”(hŒ``struct fb_info *info``”h]”jˆ )�”}”(hjé€h]”hŒstruct fb_info *info”…”�”}”(hjë€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjç€ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´MÆhjã€ubjž )�”}”(hhh]”hÎ)�”}”(hŒfbdev registered by the helper”h]”hŒfbdev registered by the helper”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jþ€h´MÆhjÿ€ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjã€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jþ€h´MÆhjà€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÄ€ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj$�h]”hŒ Description”…”�”}”(hj&�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj"�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´MÈhjÄ€ubhÎ)�”}”(hŒ£This will let fbcon do the mode init and is called at initialization time by the fbdev core when registering the driver, and later on through the hotplug callback.”h]”hŒ£This will let fbcon do the mode init and is called at initialization time by the fbdev core when registering the driver, and later on through the hotplug callback.”…”�”}”(hj:�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´MÇhjÄ€ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjbXh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ&drm_fb_helper_pan_display (C function)”Œc.drm_fb_helper_pan_display”hNt”auh1j† hjbXh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒSint drm_fb_helper_pan_display (struct fb_var_screeninfo *var, struct fb_info *info)”h]”j¤ )�”}”(hŒRint drm_fb_helper_pan_display(struct fb_var_screeninfo *var, struct fb_info *info)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hji�h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hje�h²hh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´M*ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjx�h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hje�h²hh³jw�h´M*ubjÍ )�”}”(hŒdrm_fb_helper_pan_display”h]”jÓ )�”}”(hŒdrm_fb_helper_pan_display”h]”hŒdrm_fb_helper_pan_display”…”�”}”(hjŠ�h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj†�ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hje�h²hh³jw�h´M*ubjÞ)�”}”(hŒ5(struct fb_var_screeninfo *var, struct fb_info *info)”h]”(jä)�”}”(hŒstruct fb_var_screeninfo *var”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Œfb_var_screeninfo”h]”hŒfb_var_screeninfo”…”�”}”(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%)�”}”jjŒ�sbŒc.drm_fb_helper_pan_display”†”asbuh1hhj¢�ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjä�h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¢�ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjò�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¢�ubjÓ )�”}”(hŒvar”h]”hŒvar”…”�”}”(hjÿ�h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¢�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjž�ubjä)�”}”(hŒstruct fb_info *info”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Œfb_info”h]”hŒfb_info”…”�”}”(hj6‚h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj3‚ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j8‚Œmodname”NŒ classname”Njé jì )�”}”jï ]”jà�Œc.drm_fb_helper_pan_display”†”asbuh1hhj‚ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjT‚h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj‚ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjb‚h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‚ubjÓ )�”}”(hŒinfo”h]”hŒinfo”…”�”}”(hjo‚h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj‚ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjž�ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhje�h²hh³jw�h´M*ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hja�h²hh³jw�h´M*ubah}”(h]”j\�ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jw�h´M*hj^�h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ;implementation for :c:type:`fb_ops.fb_pan_display `”h]”(hŒimplementation for ”…”�”•}”(hj™‚h²hh³Nh´Nubh)�”}”(hŒ(:c:type:`fb_ops.fb_pan_display `”h]”jˆ )�”}”(hj£‚h]”hŒfb_ops.fb_pan_display”…”�”}”(hj¥‚h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj¡‚ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jì )�”}”jï ]”jà�Œc.drm_fb_helper_pan_display”†”asbjñ Œfb_ops”uh1hh³j—ch´Kœhj™‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´M*hj–‚h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj^�h²hh³jw�h´M*ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jÕ‚j$ jÕ‚j% ‰j& ‰j' ‰uh1j˜ h²hhjbXh³Nh´Nubj) )�”}”(hŒ‰**Parameters** ``struct fb_var_screeninfo *var`` updated screen information ``struct fb_info *info`` fbdev registered by the helper”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjß‚h]”hŒ Parameters”…”�”}”(hjá‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÝ‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´M.hjÙ‚ubjw )�”}”(hhh]”(j| )�”}”(hŒ=``struct fb_var_screeninfo *var`` updated screen information ”h]”(j‚ )�”}”(hŒ!``struct fb_var_screeninfo *var``”h]”jˆ )�”}”(hjþ‚h]”hŒstruct fb_var_screeninfo *var”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjü‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´M+hjø‚ubjž )�”}”(hhh]”hÎ)�”}”(hŒupdated screen information”h]”hŒupdated screen information”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jƒh´M+hjƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjø‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jƒh´M+hjõ‚ubj| )�”}”(hŒ7``struct fb_info *info`` fbdev registered by the helper”h]”(j‚ )�”}”(hŒ``struct fb_info *info``”h]”jˆ )�”}”(hj7ƒh]”hŒstruct fb_info *info”…”�”}”(hj9ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj5ƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´M-hj1ƒubjž )�”}”(hhh]”hÎ)�”}”(hŒfbdev registered by the helper”h]”hŒfbdev registered by the helper”…”�”}”(hjPƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´M,hjMƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj1ƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jLƒh´M-hjõ‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÙ‚ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjbXh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ$drm_fb_helper_fill_info (C function)”Œc.drm_fb_helper_fill_info”hNt”auh1j† hjbXh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ~void drm_fb_helper_fill_info (struct fb_info *info, struct drm_fb_helper *fb_helper, struct drm_fb_helper_surface_size *sizes)”h]”j¤ )�”}”(hŒ}void drm_fb_helper_fill_info(struct fb_info *info, struct drm_fb_helper *fb_helper, struct drm_fb_helper_surface_size *sizes)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj‘ƒh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj�ƒh²hh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´MCubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ƒh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj�ƒh²hh³jŸƒh´MCubjÍ )�”}”(hŒdrm_fb_helper_fill_info”h]”jÓ )�”}”(hŒdrm_fb_helper_fill_info”h]”hŒdrm_fb_helper_fill_info”…”�”}”(hj²ƒh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj®ƒubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj�ƒh²hh³jŸƒh´MCubjÞ)�”}”(hŒa(struct fb_info *info, struct drm_fb_helper *fb_helper, struct drm_fb_helper_surface_size *sizes)”h]”(jä)�”}”(hŒstruct fb_info *info”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Œfb_info”h]”hŒfb_info”…”�”}”(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%)�”}”jj´ƒsbŒc.drm_fb_helper_fill_info”†”asbuh1hhjʃubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj „h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjʃubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjʃubjÓ )�”}”(hŒinfo”h]”hŒinfo”…”�”}”(hj'„h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjʃubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjƃubjä)�”}”(hŒstruct drm_fb_helper *fb_helper”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj@„h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj<„ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjM„h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj<„ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_fb_helper”h]”hŒ drm_fb_helper”…”�”}”(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.drm_fb_helper_fill_info”†”asbuh1hhj<„ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|„h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj<„ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjŠ„h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj<„ubjÓ )�”}”(hŒ fb_helper”h]”hŒ fb_helper”…”�”}”(hj—„h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj<„ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjƃubjä)�”}”(hŒ(struct drm_fb_helper_surface_size *sizes”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Œdrm_fb_helper_surface_size”h]”hŒdrm_fb_helper_surface_size”…”�”}”(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.drm_fb_helper_fill_info”†”asbuh1hhj¬„ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjì„h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¬„ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjú„h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¬„ubjÓ )�”}”(hŒsizes”h]”hŒsizes”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¬„ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjƃubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj�ƒh²hh³jŸƒh´MCubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj‰ƒh²hh³jŸƒh´MCubah}”(h]”j„ƒah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jŸƒh´MChj†ƒh²hubj )�”}”(hhh]”hÎ)�”}”(hŒinitializes fbdev information”h]”hŒinitializes fbdev information”…”�”}”(hj1…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´MChj.…h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj†ƒh²hh³jŸƒh´MCubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jI…j$ jI…j% ‰j& ‰j' ‰uh1j˜ h²hhjbXh³Nh´Nubj) )�”}”(hXc**Parameters** ``struct fb_info *info`` fbdev instance to set up ``struct drm_fb_helper *fb_helper`` fb helper instance to use as template ``struct drm_fb_helper_surface_size *sizes`` describes fbdev size and scanout surface size **Description** Sets up the variable and fixed fbdev metainformation from the given fb helper instance and the drm framebuffer allocated in :c:type:`drm_fb_helper.fb `. Drivers should call this (or their equivalent setup code) from their :c:type:`drm_driver.fbdev_probe ` callback after having allocated the fbdev backing storage framebuffer.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjS…h]”hŒ Parameters”…”�”}”(hjU…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjQ…ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´MGhjM…ubjw )�”}”(hhh]”(j| )�”}”(hŒ2``struct fb_info *info`` fbdev instance to set up ”h]”(j‚ )�”}”(hŒ``struct fb_info *info``”h]”jˆ )�”}”(hjr…h]”hŒstruct fb_info *info”…”�”}”(hjt…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjp…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´MDhjl…ubjž )�”}”(hhh]”hÎ)�”}”(hŒfbdev instance to set up”h]”hŒfbdev instance to set up”…”�”}”(hj‹…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j‡…h´MDhjˆ…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjl…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j‡…h´MDhji…ubj| )�”}”(hŒJ``struct drm_fb_helper *fb_helper`` fb helper instance to use as template ”h]”(j‚ )�”}”(hŒ#``struct drm_fb_helper *fb_helper``”h]”jˆ )�”}”(hj«…h]”hŒstruct drm_fb_helper *fb_helper”…”�”}”(hj­…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj©…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´MEhj¥…ubjž )�”}”(hhh]”hÎ)�”}”(hŒ%fb helper instance to use as template”h]”hŒ%fb helper instance to use as template”…”�”}”(hjÄ…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÀ…h´MEhjÁ…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¥…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÀ…h´MEhji…ubj| )�”}”(hŒ[``struct drm_fb_helper_surface_size *sizes`` describes fbdev size and scanout surface size ”h]”(j‚ )�”}”(hŒ,``struct drm_fb_helper_surface_size *sizes``”h]”jˆ )�”}”(hjä…h]”hŒ(struct drm_fb_helper_surface_size *sizes”…”�”}”(hjæ…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjâ…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´MFhjÞ…ubjž )�”}”(hhh]”hÎ)�”}”(hŒ-describes fbdev size and scanout surface size”h]”hŒ-describes fbdev size and scanout surface size”…”�”}”(hjý…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jù…h´MFhjú…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÞ…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jù…h´MFhji…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjM…ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj†h]”hŒ Description”…”�”}”(hj!†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´MHhjM…ubhÎ)�”}”(hŒ§Sets up the variable and fixed fbdev metainformation from the given fb helper instance and the drm framebuffer allocated in :c:type:`drm_fb_helper.fb `.”h]”(hŒ|Sets up the variable and fixed fbdev metainformation from the given fb helper instance and the drm framebuffer allocated in ”…”�”}”(hj5†h²hh³Nh´Nubh)�”}”(hŒ*:c:type:`drm_fb_helper.fb `”h]”jˆ )�”}”(hj?†h]”hŒdrm_fb_helper.fb”…”�”}”(hjA†h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj=†ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_fb_helper”uh1hh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´MGhj5†ubhŒ.”…”�”}”(hj5†h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j\†h´MGhjM…ubhÎ)�”}”(hŒ¹Drivers should call this (or their equivalent setup code) from their :c:type:`drm_driver.fbdev_probe ` callback after having allocated the fbdev backing storage framebuffer.”h]”(hŒEDrivers should call this (or their equivalent setup code) from their ”…”�”}”(hjg†h²hh³Nh´Nubh)�”}”(hŒ-:c:type:`drm_driver.fbdev_probe `”h]”jˆ )�”}”(hjq†h]”hŒdrm_driver.fbdev_probe”…”�”}”(hjs†h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjo†ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_driver”uh1hh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´MJhjg†ubhŒG callback after having allocated the fbdev backing storage framebuffer.”…”�”}”(hjg†h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jކh´MJhjM…ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjbXh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ)drm_fb_helper_initial_config (C function)”Œc.drm_fb_helper_initial_config”hNt”auh1j† hjbXh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒBint drm_fb_helper_initial_config (struct drm_fb_helper *fb_helper)”h]”j¤ )�”}”(hŒAint drm_fb_helper_initial_config(struct drm_fb_helper *fb_helper)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj¹†h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjµ†h²hh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´Máubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjȆh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjµ†h²hh³jdžh´MáubjÍ )�”}”(hŒdrm_fb_helper_initial_config”h]”jÓ )�”}”(hŒdrm_fb_helper_initial_config”h]”hŒdrm_fb_helper_initial_config”…”�”}”(hjÚ†h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÖ†ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjµ†h²hh³jdžh´MáubjÞ)�”}”(hŒ!(struct drm_fb_helper *fb_helper)”h]”jä)�”}”(hŒstruct drm_fb_helper *fb_helper”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Œ drm_fb_helper”h]”hŒ drm_fb_helper”…”�”}”(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%)�”}”jj܆sbŒc.drm_fb_helper_initial_config”†”asbuh1hhjò†ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4‡h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjò†ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjB‡h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjò†ubjÓ )�”}”(hŒ fb_helper”h]”hŒ fb_helper”…”�”}”(hjO‡h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjò†ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjî†ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjµ†h²hh³jdžh´Máubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj±†h²hh³jdžh´Máubah}”(h]”j¬†ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jdžh´Máhj®†h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ,setup a sane initial connector configuration”h]”hŒ,setup a sane initial connector configuration”…”�”}”(hjy‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´Máhjv‡h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj®†h²hh³jdžh´Máubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j‘‡j$ j‘‡j% ‰j& ‰j' ‰uh1j˜ h²hhjbXh³Nh´Nubj) )�”}”(hXV**Parameters** ``struct drm_fb_helper *fb_helper`` fb_helper device struct **Description** Scans the CRTCs and connectors and tries to put together an initial setup. At the moment, this is a cloned configuration across all heads with a new framebuffer object as the backing store. Note that this also registers the fbdev and so allows userspace to call into the driver through the fbdev interfaces. This function will call down into the :c:type:`drm_driver.fbdev_probe ` callback to let the driver allocate and initialize the fbdev info structure and the drm framebuffer used to back the fbdev. drm_fb_helper_fill_info() is provided as a helper to setup simple default values for the fbdev info structure. HANG DEBUGGING: When you have fbcon support built-in or already loaded, this function will do a full modeset to setup the fbdev console. Due to locking misdesign in the VT/fbdev subsystem that entire modeset sequence has to be done while holding console_lock. Until console_unlock is called no dmesg lines will be sent out to consoles, not even serial console. This means when your driver crashes, you will see absolutely nothing else but a system stuck in this function, with no further output. Any kind of printk() you place within your own driver or in the drm core modeset code will also never show up. Standard debug practice is to run the fbcon setup without taking the console_lock as a hack, to be able to see backtraces and crashes on the serial line. This can be done by setting the fb.lockless_register_fb=1 kernel cmdline option. The other option is to just disable fbdev emulation since very likely the first modeset from userspace will crash in the same way, and is even easier to debug. This can be done by setting the drm_kms_helper.fbdev_emulation=0 kernel cmdline option. **Return** Zero if everything went ok, nonzero otherwise.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj›‡h]”hŒ Parameters”…”�”}”(hj�‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj™‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´Måhj•‡ubjw )�”}”(hhh]”j| )�”}”(hŒ<``struct drm_fb_helper *fb_helper`` fb_helper device struct ”h]”(j‚ )�”}”(hŒ#``struct drm_fb_helper *fb_helper``”h]”jˆ )�”}”(hjº‡h]”hŒstruct drm_fb_helper *fb_helper”…”�”}”(hj¼‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¸‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´Mâhj´‡ubjž )�”}”(hhh]”hÎ)�”}”(hŒfb_helper device struct”h]”hŒfb_helper device struct”…”�”}”(hjÓ‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jχh´MâhjЇubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj´‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jχh´Mâhj±‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj•‡ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjõ‡h]”hŒ Description”…”�”}”(hj÷‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjó‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´Mähj•‡ubhÎ)�”}”(hŒ½Scans the CRTCs and connectors and tries to put together an initial setup. At the moment, this is a cloned configuration across all heads with a new framebuffer object as the backing store.”h]”hŒ½Scans the CRTCs and connectors and tries to put together an initial setup. At the moment, this is a cloned configuration across all heads with a new framebuffer object as the backing store.”…”�”}”(hj ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´Mãhj•‡ubhÎ)�”}”(hŒuNote that this also registers the fbdev and so allows userspace to call into the driver through the fbdev interfaces.”h]”hŒuNote that this also registers the fbdev and so allows userspace to call into the driver through the fbdev interfaces.”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´Mçhj•‡ubhÎ)�”}”(hX>This function will call down into the :c:type:`drm_driver.fbdev_probe ` callback to let the driver allocate and initialize the fbdev info structure and the drm framebuffer used to back the fbdev. drm_fb_helper_fill_info() is provided as a helper to setup simple default values for the fbdev info structure.”h]”(hŒ&This function will call down into the ”…”�”}”(hj)ˆh²hh³Nh´Nubh)�”}”(hŒ-:c:type:`drm_driver.fbdev_probe `”h]”jˆ )�”}”(hj3ˆh]”hŒdrm_driver.fbdev_probe”…”�”}”(hj5ˆh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj1ˆubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_driver”uh1hh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´Mêhj)ˆubhŒë callback to let the driver allocate and initialize the fbdev info structure and the drm framebuffer used to back the fbdev. drm_fb_helper_fill_info() is provided as a helper to setup simple default values for the fbdev info structure.”…”�”}”(hj)ˆh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jPˆh´Mêhj•‡ubhÎ)�”}”(hŒHANG DEBUGGING:”h]”hŒHANG DEBUGGING:”…”�”}”(hj[ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´Mïhj•‡ubhÎ)�”}”(hXNWhen you have fbcon support built-in or already loaded, this function will do a full modeset to setup the fbdev console. Due to locking misdesign in the VT/fbdev subsystem that entire modeset sequence has to be done while holding console_lock. Until console_unlock is called no dmesg lines will be sent out to consoles, not even serial console. This means when your driver crashes, you will see absolutely nothing else but a system stuck in this function, with no further output. Any kind of printk() you place within your own driver or in the drm core modeset code will also never show up.”h]”hXNWhen you have fbcon support built-in or already loaded, this function will do a full modeset to setup the fbdev console. Due to locking misdesign in the VT/fbdev subsystem that entire modeset sequence has to be done while holding console_lock. Until console_unlock is called no dmesg lines will be sent out to consoles, not even serial console. This means when your driver crashes, you will see absolutely nothing else but a system stuck in this function, with no further output. Any kind of printk() you place within your own driver or in the drm core modeset code will also never show up.”…”�”}”(hjjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´Mñhj•‡ubhÎ)�”}”(hŒêStandard debug practice is to run the fbcon setup without taking the console_lock as a hack, to be able to see backtraces and crashes on the serial line. This can be done by setting the fb.lockless_register_fb=1 kernel cmdline option.”h]”hŒêStandard debug practice is to run the fbcon setup without taking the console_lock as a hack, to be able to see backtraces and crashes on the serial line. This can be done by setting the fb.lockless_register_fb=1 kernel cmdline option.”…”�”}”(hjyˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´Múhj•‡ubhÎ)�”}”(hŒ÷The other option is to just disable fbdev emulation since very likely the first modeset from userspace will crash in the same way, and is even easier to debug. This can be done by setting the drm_kms_helper.fbdev_emulation=0 kernel cmdline option.”h]”hŒ÷The other option is to just disable fbdev emulation since very likely the first modeset from userspace will crash in the same way, and is even easier to debug. This can be done by setting the drm_kms_helper.fbdev_emulation=0 kernel cmdline option.”…”�”}”(hjˆˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´Mÿhj•‡ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj™ˆh]”hŒReturn”…”�”}”(hj›ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj—ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´Mhj•‡ubhÎ)�”}”(hŒ.Zero if everything went ok, nonzero otherwise.”h]”hŒ.Zero if everything went ok, nonzero otherwise.”…”�”}”(hj¯ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´Mhj•‡ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjbXh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ(drm_fb_helper_hotplug_event (C function)”Œc.drm_fb_helper_hotplug_event”hNt”auh1j† hjbXh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒAint drm_fb_helper_hotplug_event (struct drm_fb_helper *fb_helper)”h]”j¤ )�”}”(hŒ@int drm_fb_helper_hotplug_event(struct drm_fb_helper *fb_helper)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjÞˆh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjÚˆh²hh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjíˆh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÚˆh²hh³jìˆh´MubjÍ )�”}”(hŒdrm_fb_helper_hotplug_event”h]”jÓ )�”}”(hŒdrm_fb_helper_hotplug_event”h]”hŒdrm_fb_helper_hotplug_event”…”�”}”(hjÿˆh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjûˆubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÚˆh²hh³jìˆh´MubjÞ)�”}”(hŒ!(struct drm_fb_helper *fb_helper)”h]”jä)�”}”(hŒstruct drm_fb_helper *fb_helper”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Œ drm_fb_helper”h]”hŒ drm_fb_helper”…”�”}”(hj9‰h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj6‰ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j;‰Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj‰sbŒc.drm_fb_helper_hotplug_event”†”asbuh1hhj‰ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjY‰h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj‰ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjg‰h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‰ubjÓ )�”}”(hŒ fb_helper”h]”hŒ fb_helper”…”�”}”(hjt‰h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj‰ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj‰ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjÚˆh²hh³jìˆh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjÖˆh²hh³jìˆh´Mubah}”(h]”jшah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jìˆh´MhjÓˆh²hubj )�”}”(hhh]”hÎ)�”}”(hŒOrespond to a hotplug notification by probing all the outputs attached to the fb”h]”hŒOrespond to a hotplug notification by probing all the outputs attached to the fb”…”�”}”(hjž‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´Mhj›‰h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÓˆh²hh³jìˆh´Mubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j¶‰j$ j¶‰j% ‰j& ‰j' ‰uh1j˜ h²hhjbXh³Nh´Nubj) )�”}”(hX**Parameters** ``struct drm_fb_helper *fb_helper`` driver-allocated fbdev helper, can be NULL **Description** Scan the connectors attached to the fb_helper and try to put together a setup after notification of a change in output configuration. Called at runtime, takes the mode config locks to be able to check/change the modeset configuration. Must be run from process context (which usually means either the output polling work or a work item launched from the driver's hotplug interrupt). Note that drivers may call this even before calling drm_fb_helper_initial_config but only after drm_fb_helper_init. This allows for a race-free fbcon setup and will make sure that the fbdev emulation will not miss any hotplug events. **Return** 0 on success and a non-zero error code otherwise.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjÀ‰h]”hŒ Parameters”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¾‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´Mhjº‰ubjw )�”}”(hhh]”j| )�”}”(hŒO``struct drm_fb_helper *fb_helper`` driver-allocated fbdev helper, can be NULL ”h]”(j‚ )�”}”(hŒ#``struct drm_fb_helper *fb_helper``”h]”jˆ )�”}”(hj߉h]”hŒstruct drm_fb_helper *fb_helper”…”�”}”(hjá‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj݉ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´MhjÙ‰ubjž )�”}”(hhh]”hÎ)�”}”(hŒ*driver-allocated fbdev helper, can be NULL”h]”hŒ*driver-allocated fbdev helper, can be NULL”…”�”}”(hjø‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jô‰h´Mhjõ‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÙ‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jô‰h´MhjÖ‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjº‰ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjŠh]”hŒ Description”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjŠubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´Mhjº‰ubhÎ)�”}”(hŒ…Scan the connectors attached to the fb_helper and try to put together a setup after notification of a change in output configuration.”h]”hŒ…Scan the connectors attached to the fb_helper and try to put together a setup after notification of a change in output configuration.”…”�”}”(hj0Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´Mhjº‰ubhÎ)�”}”(hŒ÷Called at runtime, takes the mode config locks to be able to check/change the modeset configuration. Must be run from process context (which usually means either the output polling work or a work item launched from the driver's hotplug interrupt).”h]”hŒùCalled at runtime, takes the mode config locks to be able to check/change the modeset configuration. Must be run from process context (which usually means either the output polling work or a work item launched from the driver’s hotplug interrupt).”…”�”}”(hj?Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´Mhjº‰ubhÎ)�”}”(hŒéNote that drivers may call this even before calling drm_fb_helper_initial_config but only after drm_fb_helper_init. This allows for a race-free fbcon setup and will make sure that the fbdev emulation will not miss any hotplug events.”h]”hŒéNote that drivers may call this even before calling drm_fb_helper_initial_config but only after drm_fb_helper_init. This allows for a race-free fbcon setup and will make sure that the fbdev emulation will not miss any hotplug events.”…”�”}”(hjNŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´M"hjº‰ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj_Šh]”hŒReturn”…”�”}”(hjaŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj]Šubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´M'hjº‰ubhÎ)�”}”(hŒ10 on success and a non-zero error code otherwise.”h]”hŒ10 on success and a non-zero error code otherwise.”…”�”}”(hjuŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´M(hjº‰ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjbXh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ$drm_fb_helper_gem_is_fb (C function)”Œc.drm_fb_helper_gem_is_fb”hNt”auh1j† hjbXh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒfbool drm_fb_helper_gem_is_fb (const struct drm_fb_helper *fb_helper, const struct drm_gem_object *obj)”h]”j¤ )�”}”(hŒebool drm_fb_helper_gem_is_fb(const struct drm_fb_helper *fb_helper, const struct drm_gem_object *obj)”h]”(j¦)�”}”(hj£Ih]”hŒbool”…”�”}”(hj¤Šh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj Šh²hh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´MIubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²Šh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj Šh²hh³j±Šh´MIubjÍ )�”}”(hŒdrm_fb_helper_gem_is_fb”h]”jÓ )�”}”(hŒdrm_fb_helper_gem_is_fb”h]”hŒdrm_fb_helper_gem_is_fb”…”�”}”(hjÄŠh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÀŠubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj Šh²hh³j±Šh´MIubjÞ)�”}”(hŒI(const struct drm_fb_helper *fb_helper, const struct drm_gem_object *obj)”h]”(jä)�”}”(hŒ%const struct drm_fb_helper *fb_helper”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(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Œ drm_fb_helper”h]”hŒ drm_fb_helper”…”�”}”(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%)�”}”jjÆŠsbŒc.drm_fb_helper_gem_is_fb”†”asbuh1hhjÜŠubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9‹h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÜŠubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjG‹h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÜŠubjÓ )�”}”(hŒ fb_helper”h]”hŒ fb_helper”…”�”}”(hjT‹h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÜŠubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjØŠubjä)�”}”(hŒ const struct drm_gem_object *obj”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hjm‹h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hji‹ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjz‹h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hji‹ubjª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjˆ‹h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hji‹ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•‹h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hji‹ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_gem_object”h]”hŒdrm_gem_object”…”�”}”(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ï ]”j5‹Œc.drm_fb_helper_gem_is_fb”†”asbuh1hhji‹ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄ‹h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hji‹ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÒ‹h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hji‹ubjÓ )�”}”(hŒobj”h]”hŒobj”…”�”}”(hjß‹h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hji‹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjØŠubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj Šh²hh³j±Šh´MIubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjœŠh²hh³j±Šh´MIubah}”(h]”j—Šah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j±Šh´MIhj™Šh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ"Tests if GEM object is framebuffer”h]”hŒ"Tests if GEM object is framebuffer”…”�”}”(hj Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´MIhjŒh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj™Šh²hh³j±Šh´MIubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j!Œj$ j!Œj% ‰j& ‰j' ‰uh1j˜ h²hhjbXh³Nh´Nubj) )�”}”(hX¿**Parameters** ``const struct drm_fb_helper *fb_helper`` fb_helper instance, can be NULL ``const struct drm_gem_object *obj`` The GEM object to test, can be NULL **Description** Call drm_fb_helper_gem_is_fb to test is a DRM device's fbdev emulation uses the specified GEM object for its framebuffer. The result is always false if either poiner is NULL. **Return** True if fbdev emulation uses the provided GEM object, or false otherwise.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj+Œh]”hŒ Parameters”…”�”}”(hj-Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj)Œubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´MMhj%Œubjw )�”}”(hhh]”(j| )�”}”(hŒJ``const struct drm_fb_helper *fb_helper`` fb_helper instance, can be NULL ”h]”(j‚ )�”}”(hŒ)``const struct drm_fb_helper *fb_helper``”h]”jˆ )�”}”(hjJŒh]”hŒ%const struct drm_fb_helper *fb_helper”…”�”}”(hjLŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjHŒubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´MJhjDŒubjž )�”}”(hhh]”hÎ)�”}”(hŒfb_helper instance, can be NULL”h]”hŒfb_helper instance, can be NULL”…”�”}”(hjcŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j_Œh´MJhj`Œubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjDŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j_Œh´MJhjAŒubj| )�”}”(hŒI``const struct drm_gem_object *obj`` The GEM object to test, can be NULL ”h]”(j‚ )�”}”(hŒ$``const struct drm_gem_object *obj``”h]”jˆ )�”}”(hjƒŒh]”hŒ const struct drm_gem_object *obj”…”�”}”(hj…Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj�Œubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´MKhj}Œubjž )�”}”(hhh]”hÎ)�”}”(hŒ#The GEM object to test, can be NULL”h]”hŒ#The GEM object to test, can be NULL”…”�”}”(hjœŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j˜Œh´MKhj™Œubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj}Œubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j˜Œh´MKhjAŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj%ŒubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj¾Œh]”hŒ Description”…”�”}”(hjÀŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¼Œubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´MMhj%ŒubhÎ)�”}”(hŒ®Call drm_fb_helper_gem_is_fb to test is a DRM device's fbdev emulation uses the specified GEM object for its framebuffer. The result is always false if either poiner is NULL.”h]”hŒ°Call drm_fb_helper_gem_is_fb to test is a DRM device’s fbdev emulation uses the specified GEM object for its framebuffer. The result is always false if either poiner is NULL.”…”�”}”(hjÔŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´MLhj%ŒubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjåŒh]”hŒReturn”…”�”}”(hjçŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjãŒubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´MPhj%ŒubhÎ)�”}”(hŒITrue if fbdev emulation uses the provided GEM object, or false otherwise.”h]”hŒITrue if fbdev emulation uses the provided GEM object, or false otherwise.”…”�”}”(hjûŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œd/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:118: ./drivers/gpu/drm/drm_fb_helper.c”h´MQhj%Œubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjbXh²hh³Nh´Nubeh}”(h]”j×ah ]”h"]”Œ fbdev helper functions reference”ah$]”h&]”uh1hµhh·h²hh³hÌh´Knubh¶)�”}”(hhh]”(h»)�”}”(hŒ!format Helper Functions Reference”h]”hŒ!format Helper Functions Reference”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÊjóuh1hºhj�h²hh³hÌh´Kzubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ'drm_format_conv_state_init (C function)”Œc.drm_format_conv_state_init”hNt”auh1j† hj�h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒEvoid drm_format_conv_state_init (struct drm_format_conv_state *state)”h]”j¤ )�”}”(hŒDvoid drm_format_conv_state_init(struct drm_format_conv_state *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjB�h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj>�h²hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Kubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQ�h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj>�h²hh³jP�h´KubjÍ )�”}”(hŒdrm_format_conv_state_init”h]”jÓ )�”}”(hŒdrm_format_conv_state_init”h]”hŒdrm_format_conv_state_init”…”�”}”(hjc�h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj_�ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj>�h²hh³jP�h´KubjÞ)�”}”(hŒ%(struct drm_format_conv_state *state)”h]”jä)�”}”(hŒ#struct drm_format_conv_state *state”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Œdrm_format_conv_state”h]”hŒdrm_format_conv_state”…”�”}”(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%)�”}”jje�sbŒc.drm_format_conv_state_init”†”asbuh1hhj{�ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½�h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj{�ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjË�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj{�ubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hjØ�h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj{�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjw�ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj>�h²hh³jP�h´Kubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj:�h²hh³jP�h´Kubah}”(h]”j5�ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jP�h´Khj7�h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ"Initialize format-conversion state”h]”hŒ"Initialize format-conversion state”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Khjÿ�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj7�h²hh³jP�h´Kubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jŽj$ jŽj% ‰j& ‰j' ‰uh1j˜ h²hhj�h³Nh´Nubj) )�”}”(hŒÎ**Parameters** ``struct drm_format_conv_state *state`` The state to initialize **Description** Clears all fields in struct drm_format_conv_state. The state will be empty with no preallocated resources.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj$Žh]”hŒ Parameters”…”�”}”(hj&Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj"Žubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´KhjŽubjw )�”}”(hhh]”j| )�”}”(hŒ@``struct drm_format_conv_state *state`` The state to initialize ”h]”(j‚ )�”}”(hŒ'``struct drm_format_conv_state *state``”h]”jˆ )�”}”(hjCŽh]”hŒ#struct drm_format_conv_state *state”…”�”}”(hjEŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjAŽubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Khj=Žubjž )�”}”(hhh]”hÎ)�”}”(hŒThe state to initialize”h]”hŒThe state to initialize”…”�”}”(hj\Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jXŽh´KhjYŽubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj=Žubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jXŽh´Khj:Žubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjŽubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj~Žh]”hŒ Description”…”�”}”(hj€Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj|Žubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´KhjŽubhÎ)�”}”(hŒjClears all fields in struct drm_format_conv_state. The state will be empty with no preallocated resources.”h]”hŒjClears all fields in struct drm_format_conv_state. The state will be empty with no preallocated resources.”…”�”}”(hj”Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´KhjŽubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj�h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ'drm_format_conv_state_copy (C function)”Œc.drm_format_conv_state_copy”hNt”auh1j† hj�h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒtvoid drm_format_conv_state_copy (struct drm_format_conv_state *state, const struct drm_format_conv_state *old_state)”h]”j¤ )�”}”(hŒsvoid drm_format_conv_state_copy(struct drm_format_conv_state *state, const struct drm_format_conv_state *old_state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÃŽh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj¿Žh²hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.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Œdrm_format_conv_state_copy”h]”jÓ )�”}”(hŒdrm_format_conv_state_copy”h]”hŒdrm_format_conv_state_copy”…”�”}”(hjäŽh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjàŽubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj¿Žh²hh³jÑŽh´K*ubjÞ)�”}”(hŒT(struct drm_format_conv_state *state, const struct drm_format_conv_state *old_state)”h]”(jä)�”}”(hŒ#struct drm_format_conv_state *state”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Œdrm_format_conv_state”h]”hŒdrm_format_conv_state”…”�”}”(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%)�”}”jjæŽsbŒc.drm_format_conv_state_copy”†”asbuh1hhjüŽubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>�h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjüŽubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjL�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjüŽubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hjY�h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjüŽubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjøŽubjä)�”}”(hŒ-const struct drm_format_conv_state *old_state”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hjr�h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjn�ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjn�ubjª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj��h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjn�ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjš�h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjn�ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_format_conv_state”h]”hŒdrm_format_conv_state”…”�”}”(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.drm_format_conv_state_copy”†”asbuh1hhjn�ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉ�h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjn�ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj×�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjn�ubjÓ )�”}”(hŒ old_state”h]”hŒ old_state”…”�”}”(hjä�h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjn�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjøŽubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj¿Žh²hh³jÑŽh´K*ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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ŒCopy format-conversion state”h]”hŒCopy format-conversion state”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.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²hhj�h³Nh´Nubj) )�”}”(hŒý**Parameters** ``struct drm_format_conv_state *state`` Destination state ``const struct drm_format_conv_state *old_state`` Source state **Description** Copies format-conversion state from **old_state** to **state**; except for temporary storage.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj0�h]”hŒ Parameters”…”�”}”(hj2�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj.�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´K.hj*�ubjw )�”}”(hhh]”(j| )�”}”(hŒ:``struct drm_format_conv_state *state`` Destination state ”h]”(j‚ )�”}”(hŒ'``struct drm_format_conv_state *state``”h]”jˆ )�”}”(hjO�h]”hŒ#struct drm_format_conv_state *state”…”�”}”(hjQ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjM�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´K+hjI�ubjž )�”}”(hhh]”hÎ)�”}”(hŒDestination state”h]”hŒDestination state”…”�”}”(hjh�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jd�h´K+hje�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjI�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jd�h´K+hjF�ubj| )�”}”(hŒ?``const struct drm_format_conv_state *old_state`` Source state ”h]”(j‚ )�”}”(hŒ1``const struct drm_format_conv_state *old_state``”h]”jˆ )�”}”(hjˆ�h]”hŒ-const struct drm_format_conv_state *old_state”…”�”}”(hjŠ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj†�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´K,hj‚�ubjž )�”}”(hhh]”hÎ)�”}”(hŒ Source state”h]”hŒ Source state”…”�”}”(hj¡�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j��h´K,hjž�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj‚�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j��h´K,hjF�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj*�ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjÃ�h]”hŒ Description”…”�”}”(hjÅ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÁ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´K.hj*�ubhÎ)�”}”(hŒ]Copies format-conversion state from **old_state** to **state**; except for temporary storage.”h]”(hŒ$Copies format-conversion state from ”…”�”}”(hjÙ�h²hh³Nh´Nubj3 )�”}”(hŒ **old_state**”h]”hŒ old_state”…”�”}”(hjá�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÙ�ubhŒ to ”…”�”}”(hjÙ�h²hh³Nh´Nubj3 )�”}”(hŒ **state**”h]”hŒstate”…”�”}”(hjó�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÙ�ubhŒ; except for temporary storage.”…”�”}”(hjÙ�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´K-hj*�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj�h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ*drm_format_conv_state_reserve (C function)”Œc.drm_format_conv_state_reserve”hNt”auh1j† hj�h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒhvoid * drm_format_conv_state_reserve (struct drm_format_conv_state *state, size_t new_size, gfp_t flags)”h]”j¤ )�”}”(hŒfvoid *drm_format_conv_state_reserve(struct drm_format_conv_state *state, size_t new_size, gfp_t flags)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj,‘h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj(‘h²hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.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?ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjI‘h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj(‘h²hh³j:‘h´K?ubjÍ )�”}”(hŒdrm_format_conv_state_reserve”h]”jÓ )�”}”(hŒdrm_format_conv_state_reserve”h]”hŒdrm_format_conv_state_reserve”…”�”}”(hjZ‘h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjV‘ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj(‘h²hh³j:‘h´K?ubjÞ)�”}”(hŒC(struct drm_format_conv_state *state, size_t new_size, gfp_t flags)”h]”(jä)�”}”(hŒ#struct drm_format_conv_state *state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjv‘h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjr‘ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒ‘h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjr‘ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_format_conv_state”h]”hŒdrm_format_conv_state”…”�”}”(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%)�”}”jj\‘sbŒc.drm_format_conv_state_reserve”†”asbuh1hhjr‘ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´‘h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjr‘ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjr‘ubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hjÏ‘h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjr‘ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjn‘ubjä)�”}”(hŒsize_t new_size”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(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.drm_format_conv_state_reserve”†”asbuh1hhjä‘ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ’h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjä‘ubjÓ )�”}”(hŒnew_size”h]”hŒnew_size”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjä‘ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjn‘ubjä)�”}”(hŒ gfp_t flags”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hj3’h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj0’ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j5’Œmodname”NŒ classname”Njé jì )�”}”jï ]”j°‘Œc.drm_format_conv_state_reserve”†”asbuh1hhj,’ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQ’h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj,’ubjÓ )�”}”(hŒflags”h]”hŒflags”…”�”}”(hj_’h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj,’ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjn‘ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj(‘h²hh³j:‘h´K?ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ'Allocates storage for format conversion”h]”hŒ'Allocates storage for format conversion”…”�”}”(hj‰’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.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²hhj�h³Nh´Nubj) )�”}”(hX**Parameters** ``struct drm_format_conv_state *state`` The format-conversion state ``size_t new_size`` The minimum allocation size ``gfp_t flags`` Flags for kmalloc() **Description** Allocates at least **new_size** bytes and returns a pointer to the memory range. After calling this function, previously returned memory blocks are invalid. It's best to collect all memory requirements of a format conversion and call this function once to allocate the range. **Return** A pointer to the allocated memory range, or NULL otherwise.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj«’h]”hŒ Parameters”…”�”}”(hj­’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj©’ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´KChj¥’ubjw )�”}”(hhh]”(j| )�”}”(hŒD``struct drm_format_conv_state *state`` The format-conversion state ”h]”(j‚ )�”}”(hŒ'``struct drm_format_conv_state *state``”h]”jˆ )�”}”(hjÊ’h]”hŒ#struct drm_format_conv_state *state”…”�”}”(hjÌ’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÈ’ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´K@hjÄ’ubjž )�”}”(hhh]”hÎ)�”}”(hŒThe format-conversion state”h]”hŒThe format-conversion state”…”�”}”(hjã’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jß’h´K@hjà’ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÄ’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jß’h´K@hjÁ’ubj| )�”}”(hŒ0``size_t new_size`` The minimum allocation size ”h]”(j‚ )�”}”(hŒ``size_t new_size``”h]”jˆ )�”}”(hj“h]”hŒsize_t new_size”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´KAhjý’ubjž )�”}”(hhh]”hÎ)�”}”(hŒThe minimum allocation size”h]”hŒThe minimum allocation size”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j“h´KAhj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjý’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j“h´KAhjÁ’ubj| )�”}”(hŒ$``gfp_t flags`` Flags for kmalloc() ”h]”(j‚ )�”}”(hŒ``gfp_t flags``”h]”jˆ )�”}”(hj<“h]”hŒ gfp_t flags”…”�”}”(hj>“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj:“ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´KBhj6“ubjž )�”}”(hhh]”hÎ)�”}”(hŒFlags for kmalloc()”h]”hŒFlags for kmalloc()”…”�”}”(hjU“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jQ“h´KBhjR“ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj6“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jQ“h´KBhjÁ’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj¥’ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjw“h]”hŒ Description”…”�”}”(hjy“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hju“ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´KDhj¥’ubhÎ)�”}”(hXAllocates at least **new_size** bytes and returns a pointer to the memory range. After calling this function, previously returned memory blocks are invalid. It's best to collect all memory requirements of a format conversion and call this function once to allocate the range.”h]”(hŒAllocates at least ”…”�”}”(hj�“h²hh³Nh´Nubj3 )�”}”(hŒ **new_size**”h]”hŒnew_size”…”�”}”(hj•“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj�“ubhŒö bytes and returns a pointer to the memory range. After calling this function, previously returned memory blocks are invalid. It’s best to collect all memory requirements of a format conversion and call this function once to allocate the range.”…”�”}”(hj�“h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´KChj¥’ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj°“h]”hŒReturn”…”�”}”(hj²“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj®“ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´KHhj¥’ubhÎ)�”}”(hŒ;A pointer to the allocated memory range, or NULL otherwise.”h]”hŒ;A pointer to the allocated memory range, or NULL otherwise.”…”�”}”(hjÆ“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´KIhj¥’ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj�h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ*drm_format_conv_state_release (C function)”Œc.drm_format_conv_state_release”hNt”auh1j† hj�h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒHvoid drm_format_conv_state_release (struct drm_format_conv_state *state)”h]”j¤ )�”}”(hŒGvoid drm_format_conv_state_release(struct drm_format_conv_state *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjõ“h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjñ“h²hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Kcubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjñ“h²hh³j”h´KcubjÍ )�”}”(hŒdrm_format_conv_state_release”h]”jÓ )�”}”(hŒdrm_format_conv_state_release”h]”hŒdrm_format_conv_state_release”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj”ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjñ“h²hh³j”h´KcubjÞ)�”}”(hŒ%(struct drm_format_conv_state *state)”h]”jä)�”}”(hŒ#struct drm_format_conv_state *state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj2”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Œdrm_format_conv_state”h]”hŒdrm_format_conv_state”…”�”}”(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%)�”}”jj”sbŒc.drm_format_conv_state_release”†”asbuh1hhj.”ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjp”h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj.”ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj~”h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj.”ubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hj‹”h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj.”ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj*”ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjñ“h²hh³j”h´Kcubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjí“h²hh³j”h´Kcubah}”(h]”jè“ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j”h´Kchjê“h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ%Releases an format-conversion storage”h]”hŒ%Releases an format-conversion storage”…”�”}”(hjµ”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Kchj²”h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjê“h²hh³j”h´Kcubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jÍ”j$ jÍ”j% ‰j& ‰j' ‰uh1j˜ h²hhj�h³Nh´Nubj) )�”}”(hX1**Parameters** ``struct drm_format_conv_state *state`` The format-conversion state **Description** Releases the memory range references by the format-conversion state. After this call, all pointers to the memory are invalid. Prefer drm_format_conv_state_init() for cleaning up and unloading a driver.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj×”h]”hŒ Parameters”…”�”}”(hjÙ”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÕ”ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´KghjÑ”ubjw )�”}”(hhh]”j| )�”}”(hŒD``struct drm_format_conv_state *state`` The format-conversion state ”h]”(j‚ )�”}”(hŒ'``struct drm_format_conv_state *state``”h]”jˆ )�”}”(hjö”h]”hŒ#struct drm_format_conv_state *state”…”�”}”(hjø”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjô”ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Kdhjð”ubjž )�”}”(hhh]”hÎ)�”}”(hŒThe format-conversion state”h]”hŒThe format-conversion state”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j •h´Kdhj •ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjð”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j •h´Kdhjí”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÑ”ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj1•h]”hŒ Description”…”�”}”(hj3•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj/•uba•h}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´KfhjÑ”ubhÎ)�”}”(hŒÉReleases the memory range references by the format-conversion state. After this call, all pointers to the memory are invalid. Prefer drm_format_conv_state_init() for cleaning up and unloading a driver.”h]”hŒÉReleases the memory range references by the format-conversion state. After this call, all pointers to the memory are invalid. Prefer drm_format_conv_state_init() for cleaning up and unloading a driver.”…”�”}”(hjG•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´KehjÑ”ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj�h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_fb_clip_offset (C function)”Œc.drm_fb_clip_offset”hNt”auh1j† hj�h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒwunsigned int drm_fb_clip_offset (unsigned int pitch, const struct drm_format_info *format, const struct drm_rect *clip)”h]”j¤ )�”}”(hŒvunsigned int drm_fb_clip_offset(unsigned int pitch, const struct drm_format_info *format, const struct drm_rect *clip)”h]”(j¦)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjv•h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjr•h²hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´K{ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…•h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjr•h²hh³j„•h´K{ubj¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj“•h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjr•h²hh³j„•h´K{ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡•h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjr•h²hh³j„•h´K{ubjÍ )�”}”(hŒdrm_fb_clip_offset”h]”jÓ )�”}”(hŒdrm_fb_clip_offset”h]”hŒdrm_fb_clip_offset”…”�”}”(hj³•h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¯•ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjr•h²hh³j„•h´K{ubjÞ)�”}”(hŒW(unsigned int pitch, const struct drm_format_info *format, const struct drm_rect *clip)”h]”(jä)�”}”(hŒunsigned int pitch”h]”(j¦)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(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Œint”h]”hŒint”…”�”}”(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Œpitch”h]”hŒpitch”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjË•ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÇ•ubjä)�”}”(hŒ$const struct drm_format_info *format”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj;–h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj–ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjH–h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj–ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_format_info”h]”hŒdrm_format_info”…”�”}”(hjY–h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjV–ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j[–Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjµ•sbŒc.drm_fb_clip_offset”†”asbuh1hhj–ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjy–h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj–ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj‡–h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj–ubjÓ )�”}”(hŒformat”h]”hŒformat”…”�”}”(hj”–h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj–ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÇ•ubjä)�”}”(hŒconst struct drm_rect *clip”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(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Œdrm_rect”h]”hŒdrm_rect”…”�”}”(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ï ]”ju–Œc.drm_fb_clip_offset”†”asbuh1hhj©–ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj©–ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj©–ubjÓ )�”}”(hŒclip”h]”hŒclip”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj©–ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÇ•ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjr•h²hh³j„•h´K{ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjn•h²hh³j„•h´K{ubah}”(h]”ji•ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j„•h´K{hjk•h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj6�ubhŒ2 (i.e. the destination is at the top-left corner).”…”�”}”(hj6�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Mšhjr›ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj�h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_fb_swab (C function)”Œ c.drm_fb_swab”hNt”auh1j† hj�h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒÕvoid drm_fb_swab (struct iosys_map *dst, const unsigned int *dst_pitch, const struct iosys_map *src, const struct drm_framebuffer *fb, const struct drm_rect *clip, bool cached, struct drm_format_conv_state *state)”h]”j¤ )�”}”(hŒÔvoid drm_fb_swab(struct iosys_map *dst, const unsigned int *dst_pitch, const struct iosys_map *src, const struct drm_framebuffer *fb, const struct drm_rect *clip, bool cached, struct drm_format_conv_state *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjw�h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjs�h²hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M×ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†�h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjs�h²hh³j…�h´M×ubjÍ )�”}”(hŒ drm_fb_swab”h]”jÓ )�”}”(hŒ drm_fb_swab”h]”hŒ drm_fb_swab”…”�”}”(hj˜�h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj”�ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjs�h²hh³j…�h´M×ubjÞ)�”}”(hŒÄ(struct iosys_map *dst, const unsigned int *dst_pitch, const struct iosys_map *src, const struct drm_framebuffer *fb, const struct drm_rect *clip, bool cached, struct drm_format_conv_state *state)”h]”(jä)�”}”(hŒstruct iosys_map *dst”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Œ iosys_map”h]”hŒ iosys_map”…”�”}”(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%)�”}”jjš�sbŒ c.drm_fb_swab”†”asbuh1hhj°�ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjò�h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj°�ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj°�ubjÓ )�”}”(hŒdst”h]”hŒdst”…”�”}”(hj žh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj°�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¬�ubjä)�”}”(hŒconst unsigned int *dst_pitch”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hj&žh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj"žubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3žh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj"žubj¦)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjAžh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj"žubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjOžh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj"žubj¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj]žh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj"žubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjkžh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj"žubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjyžh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj"žubjÓ )�”}”(hŒ dst_pitch”h]”hŒ dst_pitch”…”�”}”(hj†žh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj"žubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¬�ubjä)�”}”(hŒconst struct iosys_map *src”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(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Œ iosys_map”h]”hŒ iosys_map”…”�”}”(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.drm_fb_swab”†”asbuh1hhj›žubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjöžh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj›žubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj›žubjÓ )�”}”(hŒsrc”h]”hŒsrc”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj›žubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¬�ubjä)�”}”(hŒ const struct drm_framebuffer *fb”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hj*Ÿh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj&Ÿubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7Ÿh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj&Ÿubjª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjEŸh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj&Ÿubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjRŸh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj&Ÿubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_framebuffer”h]”hŒdrm_framebuffer”…”�”}”(hjcŸh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj`Ÿubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jeŸŒmodname”NŒ classname”Njé jì )�”}”jï ]”jî�Œ c.drm_fb_swab”†”asbuh1hhj&Ÿubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Ÿh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj&Ÿubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj�Ÿh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj&ŸubjÓ )�”}”(hŒfb”h]”hŒfb”…”�”}”(hjœŸh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj&Ÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¬�ubjä)�”}”(hŒconst struct drm_rect *clip”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(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Œdrm_rect”h]”hŒdrm_rect”…”�”}”(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.drm_fb_swab”†”asbuh1hhj±Ÿubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj  h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj±Ÿubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj±ŸubjÓ )�”}”(hŒclip”h]”hŒclip”…”�”}”(hj' h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj±Ÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¬�ubjä)�”}”(hŒ bool cached”h]”(j¦)�”}”(hj£Ih]”hŒbool”…”�”}”(hj@ h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj< ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjM h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj< ubjÓ )�”}”(hŒcached”h]”hŒcached”…”�”}”(hj[ h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj< ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¬�ubjä)�”}”(hŒ#struct drm_format_conv_state *state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjt h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjp ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjp ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_format_conv_state”h]”hŒdrm_format_conv_state”…”�”}”(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.drm_fb_swab”†”asbuh1hhjp ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj° h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjp ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj¾ h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjp ubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hjË h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjp ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¬�ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjs�h²hh³j…�h´M×ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjo�h²hh³j…�h´M×ubah}”(h]”jj�ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j…�h´M×hjl�h²hubj )�”}”(hhh]”hÎ)�”}”(hŒSwap bytes into clip buffer”h]”hŒSwap bytes into clip buffer”…”�”}”(hjõ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M×hjò h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjl�h²hh³j…�h´M×ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j ¡j$ j ¡j% ‰j& ‰j' ‰uh1j˜ h²hhj�h³Nh´Nubj) )�”}”(hX¾**Parameters** ``struct iosys_map *dst`` Array of destination buffers ``const unsigned int *dst_pitch`` Array of numbers of bytes between the start of two consecutive scanlines within **dst**; can be NULL if scanlines are stored next to each other. ``const struct iosys_map *src`` Array of source buffers ``const struct drm_framebuffer *fb`` DRM framebuffer ``const struct drm_rect *clip`` Clip rectangle area to copy ``bool cached`` Source buffer is mapped cached (eg. not write-combined) ``struct drm_format_conv_state *state`` Transform and conversion state **Description** This function copies parts of a framebuffer to display memory and swaps per-pixel bytes during the process. Destination and framebuffer formats must match. The parameters **dst**, **dst_pitch** and **src** refer to arrays. Each array must have at least as many entries as there are planes in **fb**'s format. Each entry stores the value for the format's respective color plane at the same index. If **cached** is false a temporary buffer is used to cache one pixel line at a time to speed up slow uncached reads. This function does not apply clipping on **dst** (i.e. the destination is at the top-left corner).”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj¡h]”hŒ Parameters”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MÛhj¡ubjw )�”}”(hhh]”(j| )�”}”(hŒ7``struct iosys_map *dst`` Array of destination buffers ”h]”(j‚ )�”}”(hŒ``struct iosys_map *dst``”h]”jˆ )�”}”(hj6¡h]”hŒstruct iosys_map *dst”…”�”}”(hj8¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj4¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MØhj0¡ubjž )�”}”(hhh]”hÎ)�”}”(hŒArray of destination buffers”h]”hŒArray of destination buffers”…”�”}”(hjO¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jK¡h´MØhjL¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj0¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jK¡h´MØhj-¡ubj| )�”}”(hŒ³``const unsigned int *dst_pitch`` Array of numbers of bytes between the start of two consecutive scanlines within **dst**; can be NULL if scanlines are stored next to each other. ”h]”(j‚ )�”}”(hŒ!``const unsigned int *dst_pitch``”h]”jˆ )�”}”(hjo¡h]”hŒconst unsigned int *dst_pitch”…”�”}”(hjq¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjm¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MÚhji¡ubjž )�”}”(hhh]”hÎ)�”}”(hŒ�Array of numbers of bytes between the start of two consecutive scanlines within **dst**; can be NULL if scanlines are stored next to each other.”h]”(hŒPArray of numbers of bytes between the start of two consecutive scanlines within ”…”�”}”(hjˆ¡h²hh³Nh´Nubj3 )�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hj�¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjˆ¡ubhŒ9; can be NULL if scanlines are stored next to each other.”…”�”}”(hjˆ¡h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MÙhj…¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hji¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j„¡h´MÚhj-¡ubj| )�”}”(hŒ8``const struct iosys_map *src`` Array of source buffers ”h]”(j‚ )�”}”(hŒ``const struct iosys_map *src``”h]”jˆ )�”}”(hj»¡h]”hŒconst struct iosys_map *src”…”�”}”(hj½¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¹¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MÛhjµ¡ubjž )�”}”(hhh]”hÎ)�”}”(hŒArray of source buffers”h]”hŒArray of source buffers”…”�”}”(hjÔ¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jСh´MÛhjÑ¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjµ¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jСh´MÛhj-¡ubj| )�”}”(hŒ5``const struct drm_framebuffer *fb`` DRM framebuffer ”h]”(j‚ )�”}”(hŒ$``const struct drm_framebuffer *fb``”h]”jˆ )�”}”(hjô¡h]”hŒ const struct drm_framebuffer *fb”…”�”}”(hjö¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjò¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MÜhjî¡ubjž )�”}”(hhh]”hÎ)�”}”(hŒDRM framebuffer”h]”hŒDRM framebuffer”…”�”}”(hj ¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j ¢h´MÜhj ¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjî¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j ¢h´MÜhj-¡ubj| )�”}”(hŒ<``const struct drm_rect *clip`` Clip rectangle area to copy ”h]”(j‚ )�”}”(hŒ``const struct drm_rect *clip``”h]”jˆ )�”}”(hj-¢h]”hŒconst struct drm_rect *clip”…”�”}”(hj/¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj+¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MÝhj'¢ubjž )�”}”(hhh]”hÎ)�”}”(hŒClip rectangle area to copy”h]”hŒClip rectangle area to copy”…”�”}”(hjF¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jB¢h´MÝhjC¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj'¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jB¢h´MÝhj-¡ubj| )�”}”(hŒH``bool cached`` Source buffer is mapped cached (eg. not write-combined) ”h]”(j‚ )�”}”(hŒ``bool cached``”h]”jˆ )�”}”(hjf¢h]”hŒ bool cached”…”�”}”(hjh¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjd¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MÞhj`¢ubjž )�”}”(hhh]”hÎ)�”}”(hŒ7Source buffer is mapped cached (eg. not write-combined)”h]”hŒ7Source buffer is mapped cached (eg. not write-combined)”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j{¢h´MÞhj|¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj`¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j{¢h´MÞhj-¡ubj| )�”}”(hŒG``struct drm_format_conv_state *state`` Transform and conversion state ”h]”(j‚ )�”}”(hŒ'``struct drm_format_conv_state *state``”h]”jˆ )�”}”(hjŸ¢h]”hŒ#struct drm_format_conv_state *state”…”�”}”(hj¡¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj�¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Mßhj™¢ubjž )�”}”(hhh]”hÎ)�”}”(hŒTransform and conversion state”h]”hŒTransform and conversion state”…”�”}”(hj¸¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j´¢h´Mßhjµ¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj™¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j´¢h´Mßhj-¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj¡ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjÚ¢h]”hŒ Description”…”�”}”(hjÜ¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjØ¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Máhj¡ubhÎ)�”}”(hXThis function copies parts of a framebuffer to display memory and swaps per-pixel bytes during the process. Destination and framebuffer formats must match. The parameters **dst**, **dst_pitch** and **src** refer to arrays. Each array must have at least as many entries as there are planes in **fb**'s format. Each entry stores the value for the format's respective color plane at the same index. If **cached** is false a temporary buffer is used to cache one pixel line at a time to speed up slow uncached reads.”h]”(hŒ«This function copies parts of a framebuffer to display memory and swaps per-pixel bytes during the process. Destination and framebuffer formats must match. The parameters ”…”�”}”(hjð¢h²hh³Nh´Nubj3 )�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hjø¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjð¢ubhŒ, ”…”�”}”(hjð¢h²hh³Nh´Nubj3 )�”}”(hŒ **dst_pitch**”h]”hŒ dst_pitch”…”�”}”(hj £h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjð¢ubhŒ and ”…”�”}”(hjð¢h²hh³Nh´Nubj3 )�”}”(hŒ**src**”h]”hŒsrc”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjð¢ubhŒW refer to arrays. Each array must have at least as many entries as there are planes in ”…”�”}”(hjð¢h²hh³Nh´Nubj3 )�”}”(hŒ**fb**”h]”hŒfb”…”�”}”(hj.£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjð¢ubhŒi’s format. Each entry stores the value for the format’s respective color plane at the same index. If ”…”�”}”(hjð¢h²hh³Nh´Nubj3 )�”}”(hŒ **cached**”h]”hŒcached”…”�”}”(hj@£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjð¢ubhŒg is false a temporary buffer is used to cache one pixel line at a time to speed up slow uncached reads.”…”�”}”(hjð¢h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Màhj¡ubhÎ)�”}”(hŒbThis function does not apply clipping on **dst** (i.e. the destination is at the top-left corner).”h]”(hŒ)This function does not apply clipping on ”…”�”}”(hjY£h²hh³Nh´Nubj3 )�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hja£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjY£ubhŒ2 (i.e. the destination is at the top-left corner).”…”�”}”(hjY£h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Mèhj¡ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj�h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ&drm_fb_xrgb8888_to_rgb332 (C function)”Œc.drm_fb_xrgb8888_to_rgb332”hNt”auh1j† hj�h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒÖvoid drm_fb_xrgb8888_to_rgb332 (struct iosys_map *dst, const unsigned int *dst_pitch, const struct iosys_map *src, const struct drm_framebuffer *fb, const struct drm_rect *clip, struct drm_format_conv_state *state)”h]”j¤ )�”}”(hŒÕvoid drm_fb_xrgb8888_to_rgb332(struct iosys_map *dst, const unsigned int *dst_pitch, const struct iosys_map *src, const struct drm_framebuffer *fb, const struct drm_rect *clip, struct drm_format_conv_state *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjš£h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj–£h²hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.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Œdrm_fb_xrgb8888_to_rgb332”h]”jÓ )�”}”(hŒdrm_fb_xrgb8888_to_rgb332”h]”hŒdrm_fb_xrgb8888_to_rgb332”…”�”}”(hj»£h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj·£ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj–£h²hh³j¨£h´M ubjÞ)�”}”(hŒ·(struct iosys_map *dst, const unsigned int *dst_pitch, const struct iosys_map *src, const struct drm_framebuffer *fb, const struct drm_rect *clip, struct drm_format_conv_state *state)”h]”(jä)�”}”(hŒstruct iosys_map *dst”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Œ iosys_map”h]”hŒ iosys_map”…”�”}”(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%)�”}”jj½£sbŒc.drm_fb_xrgb8888_to_rgb332”†”asbuh1hhjÓ£ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÓ£ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj#¤h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÓ£ubjÓ )�”}”(hŒdst”h]”hŒdst”…”�”}”(hj0¤h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÓ£ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÏ£ubjä)�”}”(hŒconst unsigned int *dst_pitch”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hjI¤h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjE¤ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjV¤h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjE¤ubj¦)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjd¤h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjE¤ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjr¤h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjE¤ubj¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj€¤h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjE¤ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjޤh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjE¤ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjœ¤h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjE¤ubjÓ )�”}”(hŒ dst_pitch”h]”hŒ dst_pitch”…”�”}”(hj©¤h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjE¤ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÏ£ubjä)�”}”(hŒconst struct iosys_map *src”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(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Œ iosys_map”h]”hŒ iosys_map”…”�”}”(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.drm_fb_xrgb8888_to_rgb332”†”asbuh1hhj¾¤ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¾¤ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj'¥h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¾¤ubjÓ )�”}”(hŒsrc”h]”hŒsrc”…”�”}”(hj4¥h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¾¤ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÏ£ubjä)�”}”(hŒ const struct drm_framebuffer *fb”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hjM¥h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjI¥ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZ¥h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjI¥ubjª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjh¥h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjI¥ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hju¥h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjI¥ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_framebuffer”h]”hŒdrm_framebuffer”…”�”}”(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.drm_fb_xrgb8888_to_rgb332”†”asbuh1hhjI¥ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤¥h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjI¥ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj²¥h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjI¥ubjÓ )�”}”(hŒfb”h]”hŒfb”…”�”}”(hj¿¥h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjI¥ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÏ£ubjä)�”}”(hŒconst struct drm_rect *clip”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(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Œdrm_rect”h]”hŒdrm_rect”…”�”}”(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.drm_fb_xrgb8888_to_rgb332”†”asbuh1hhjÔ¥ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/¦h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÔ¥ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj=¦h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÔ¥ubjÓ )�”}”(hŒclip”h]”hŒclip”…”�”}”(hjJ¦h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÔ¥ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÏ£ubjä)�”}”(hŒ#struct drm_format_conv_state *state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjc¦h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj_¦ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjp¦h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj_¦ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_format_conv_state”h]”hŒdrm_format_conv_state”…”�”}”(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.drm_fb_xrgb8888_to_rgb332”†”asbuh1hhj_¦ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸ¦h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj_¦ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj­¦h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj_¦ubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hjº¦h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj_¦ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÏ£ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj–£h²hh³j¨£h´M ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ&Convert XRGB8888 to RGB332 clip buffer”h]”hŒ&Convert XRGB8888 to RGB332 clip buffer”…”�”}”(hjä¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.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²hhj�h³Nh´Nubj) )�”}”(hXj**Parameters** ``struct iosys_map *dst`` Array of RGB332 destination buffers ``const unsigned int *dst_pitch`` Array of numbers of bytes between the start of two consecutive scanlines within **dst**; can be NULL if scanlines are stored next to each other. ``const struct iosys_map *src`` Array of XRGB8888 source buffers ``const struct drm_framebuffer *fb`` DRM framebuffer ``const struct drm_rect *clip`` Clip rectangle area to copy ``struct drm_format_conv_state *state`` Transform and conversion state **Description** This function copies parts of a framebuffer to display memory and converts the color format during the process. Destination and framebuffer formats must match. The parameters **dst**, **dst_pitch** and **src** refer to arrays. Each array must have at least as many entries as there are planes in **fb**'s format. Each entry stores the value for the format's respective color plane at the same index. This function does not apply clipping on **dst** (i.e. the destination is at the top-left corner). Drivers can use this function for RGB332 devices that don't support XRGB8888 natively.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj§h]”hŒ Parameters”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj§ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Mhj§ubjw )�”}”(hhh]”(j| )�”}”(hŒ>``struct iosys_map *dst`` Array of RGB332 destination buffers ”h]”(j‚ )�”}”(hŒ``struct iosys_map *dst``”h]”jˆ )�”}”(hj%§h]”hŒstruct iosys_map *dst”…”�”}”(hj'§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj#§ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M hj§ubjž )�”}”(hhh]”hÎ)�”}”(hŒ#Array of RGB332 destination buffers”h]”hŒ#Array of RGB332 destination buffers”…”�”}”(hj>§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j:§h´M hj;§ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j:§h´M hj§ubj| )�”}”(hŒ³``const unsigned int *dst_pitch`` Array of numbers of bytes between the start of two consecutive scanlines within **dst**; can be NULL if scanlines are stored next to each other. ”h]”(j‚ )�”}”(hŒ!``const unsigned int *dst_pitch``”h]”jˆ )�”}”(hj^§h]”hŒconst unsigned int *dst_pitch”…”�”}”(hj`§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj\§ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MhjX§ubjž )�”}”(hhh]”hÎ)�”}”(hŒ�Array of numbers of bytes between the start of two consecutive scanlines within **dst**; can be NULL if scanlines are stored next to each other.”h]”(hŒPArray of numbers of bytes between the start of two consecutive scanlines within ”…”�”}”(hjw§h²hh³Nh´Nubj3 )�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjw§ubhŒ9; can be NULL if scanlines are stored next to each other.”…”�”}”(hjw§h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Mhjt§ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjX§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³js§h´Mhj§ubj| )�”}”(hŒA``const struct iosys_map *src`` Array of XRGB8888 source buffers ”h]”(j‚ )�”}”(hŒ``const struct iosys_map *src``”h]”jˆ )�”}”(hjª§h]”hŒconst struct iosys_map *src”…”�”}”(hj¬§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¨§ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Mhj¤§ubjž )�”}”(hhh]”hÎ)�”}”(hŒ Array of XRGB8888 source buffers”h]”hŒ Array of XRGB8888 source buffers”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¿§h´MhjÀ§ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¤§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¿§h´Mhj§ubj| )�”}”(hŒ5``const struct drm_framebuffer *fb`` DRM framebuffer ”h]”(j‚ )�”}”(hŒ$``const struct drm_framebuffer *fb``”h]”jˆ )�”}”(hjã§h]”hŒ const struct drm_framebuffer *fb”…”�”}”(hjå§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjá§ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Mhjݧubjž )�”}”(hhh]”hÎ)�”}”(hŒDRM framebuffer”h]”hŒDRM framebuffer”…”�”}”(hjü§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jø§h´Mhjù§ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjݧubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jø§h´Mhj§ubj| )�”}”(hŒ<``const struct drm_rect *clip`` Clip rectangle area to copy ”h]”(j‚ )�”}”(hŒ``const struct drm_rect *clip``”h]”jˆ )�”}”(hj¨h]”hŒconst struct drm_rect *clip”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Mhj¨ubjž )�”}”(hhh]”hÎ)�”}”(hŒClip rectangle area to copy”h]”hŒClip rectangle area to copy”…”�”}”(hj5¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j1¨h´Mhj2¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j1¨h´Mhj§ubj| )�”}”(hŒG``struct drm_format_conv_state *state`` Transform and conversion state ”h]”(j‚ )�”}”(hŒ'``struct drm_format_conv_state *state``”h]”jˆ )�”}”(hjU¨h]”hŒ#struct drm_format_conv_state *state”…”�”}”(hjW¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjS¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MhjO¨ubjž )�”}”(hhh]”hÎ)�”}”(hŒTransform and conversion state”h]”hŒTransform and conversion state”…”�”}”(hjn¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jj¨h´Mhjk¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjO¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jj¨h´Mhj§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj§ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj�¨h]”hŒ Description”…”�”}”(hj’¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjލubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Mhj§ubhÎ)�”}”(hX�This function copies parts of a framebuffer to display memory and converts the color format during the process. Destination and framebuffer formats must match. The parameters **dst**, **dst_pitch** and **src** refer to arrays. Each array must have at least as many entries as there are planes in **fb**'s format. Each entry stores the value for the format's respective color plane at the same index.”h]”(hŒ¯This function copies parts of a framebuffer to display memory and converts the color format during the process. Destination and framebuffer formats must match. The parameters ”…”�”}”(hj¦¨h²hh³Nh´Nubj3 )�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hj®¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¦¨ubhŒ, ”…”�”}”(hj¦¨h²hh³Nh´Nubj3 )�”}”(hŒ **dst_pitch**”h]”hŒ dst_pitch”…”�”}”(hjÀ¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¦¨ubhŒ and ”…”�”}”(hj¦¨h²hh³Nh´Nubj3 )�”}”(hŒ**src**”h]”hŒsrc”…”�”}”(hjÒ¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¦¨ubhŒW refer to arrays. Each array must have at least as many entries as there are planes in ”…”�”}”(hj¦¨h²hh³Nh´Nubj3 )�”}”(hŒ**fb**”h]”hŒfb”…”�”}”(hjä¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¦¨ubhŒe’s format. Each entry stores the value for the format’s respective color plane at the same index.”…”�”}”(hj¦¨h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Mhj§ubhÎ)�”}”(hŒbThis function does not apply clipping on **dst** (i.e. the destination is at the top-left corner).”h]”(hŒ)This function does not apply clipping on ”…”�”}”(hjý¨h²hh³Nh´Nubj3 )�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjý¨ubhŒ2 (i.e. the destination is at the top-left corner).”…”�”}”(hjý¨h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Mhj§ubhÎ)�”}”(hŒVDrivers can use this function for RGB332 devices that don't support XRGB8888 natively.”h]”hŒXDrivers can use this function for RGB332 devices that don’t support XRGB8888 natively.”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Mhj§ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj�h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ&drm_fb_xrgb8888_to_rgb565 (C function)”Œc.drm_fb_xrgb8888_to_rgb565”hNt”auh1j† hj�h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒÖvoid drm_fb_xrgb8888_to_rgb565 (struct iosys_map *dst, const unsigned int *dst_pitch, const struct iosys_map *src, const struct drm_framebuffer *fb, const struct drm_rect *clip, struct drm_format_conv_state *state)”h]”j¤ )�”}”(hŒÕvoid drm_fb_xrgb8888_to_rgb565(struct iosys_map *dst, const unsigned int *dst_pitch, const struct iosys_map *src, const struct drm_framebuffer *fb, const struct drm_rect *clip, struct drm_format_conv_state *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjM©h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjI©h²hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M3ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\©h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjI©h²hh³j[©h´M3ubjÍ )�”}”(hŒdrm_fb_xrgb8888_to_rgb565”h]”jÓ )�”}”(hŒdrm_fb_xrgb8888_to_rgb565”h]”hŒdrm_fb_xrgb8888_to_rgb565”…”�”}”(hjn©h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjj©ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjI©h²hh³j[©h´M3ubjÞ)�”}”(hŒ·(struct iosys_map *dst, const unsigned int *dst_pitch, const struct iosys_map *src, const struct drm_framebuffer *fb, const struct drm_rect *clip, struct drm_format_conv_state *state)”h]”(jä)�”}”(hŒstruct iosys_map *dst”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Œ iosys_map”h]”hŒ iosys_map”…”�”}”(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%)�”}”jjp©sbŒc.drm_fb_xrgb8888_to_rgb565”†”asbuh1hhj†©ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈ©h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj†©ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÖ©h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj†©ubjÓ )�”}”(hŒdst”h]”hŒdst”…”�”}”(hjã©h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj†©ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj‚©ubjä)�”}”(hŒconst unsigned int *dst_pitch”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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Œunsigned”h]”hŒunsigned”…”�”}”(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Œint”h]”hŒint”…”�”}”(hj3ªh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjø©ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjAªh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjø©ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjOªh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjø©ubjÓ )�”}”(hŒ dst_pitch”h]”hŒ dst_pitch”…”�”}”(hj\ªh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjø©ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj‚©ubjä)�”}”(hŒconst struct iosys_map *src”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hjuªh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjqªubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚ªh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjqªubjª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj�ªh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjqªubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�ªh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjqªubh)�”}”(hhh]”jÓ )�”}”(hŒ iosys_map”h]”hŒ iosys_map”…”�”}”(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.drm_fb_xrgb8888_to_rgb565”†”asbuh1hhjqªubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj̪h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjqªubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÚªh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjqªubjÓ )�”}”(hŒsrc”h]”hŒsrc”…”�”}”(hjçªh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjqªubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj‚©ubjä)�”}”(hŒ const struct drm_framebuffer *fb”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(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Œdrm_framebuffer”h]”hŒdrm_framebuffer”…”�”}”(hj9«h²hh³Nh´•žNubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj6«ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j;«Œmodname”NŒ classname”Njé jì )�”}”jï ]”jÄ©Œc.drm_fb_xrgb8888_to_rgb565”†”asbuh1hhjüªubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjW«h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjüªubj9)�”}”(hjOh]”hŒ*”…”�”}”(hje«h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjüªubjÓ )�”}”(hŒfb”h]”hŒfb”…”�”}”(hjr«h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjüªubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj‚©ubjä)�”}”(hŒconst struct drm_rect *clip”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(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Œdrm_rect”h]”hŒdrm_rect”…”�”}”(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.drm_fb_xrgb8888_to_rgb565”†”asbuh1hhj‡«ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâ«h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj‡«ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjð«h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‡«ubjÓ )�”}”(hŒclip”h]”hŒclip”…”�”}”(hjý«h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj‡«ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj‚©ubjä)�”}”(hŒ#struct drm_format_conv_state *state”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Œdrm_format_conv_state”h]”hŒdrm_format_conv_state”…”�”}”(hj4¬h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj1¬ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j6¬Œmodname”NŒ classname”Njé jì )�”}”jï ]”jÄ©Œc.drm_fb_xrgb8888_to_rgb565”†”asbuh1hhj¬ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjR¬h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¬ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj`¬h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¬ubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hjm¬h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¬ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj‚©ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjI©h²hh³j[©h´M3ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjE©h²hh³j[©h´M3ubah}”(h]”j@©ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j[©h´M3hjB©h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ&Convert XRGB8888 to RGB565 clip buffer”h]”hŒ&Convert XRGB8888 to RGB565 clip buffer”…”�”}”(hj—¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M3hj”¬h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjB©h²hh³j[©h´M3ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j¯¬j$ j¯¬j% ‰j& ‰j' ‰uh1j˜ h²hhj�h³Nh´Nubj) )�”}”(hXi**Parameters** ``struct iosys_map *dst`` Array of RGB565 destination buffers ``const unsigned int *dst_pitch`` Array of numbers of bytes between the start of two consecutive scanlines within **dst**; can be NULL if scanlines are stored next to each other. ``const struct iosys_map *src`` Array of XRGB8888 source buffer ``const struct drm_framebuffer *fb`` DRM framebuffer ``const struct drm_rect *clip`` Clip rectangle area to copy ``struct drm_format_conv_state *state`` Transform and conversion state **Description** This function copies parts of a framebuffer to display memory and converts the color format during the process. Destination and framebuffer formats must match. The parameters **dst**, **dst_pitch** and **src** refer to arrays. Each array must have at least as many entries as there are planes in **fb**'s format. Each entry stores the value for the format's respective color plane at the same index. This function does not apply clipping on **dst** (i.e. the destination is at the top-left corner). Drivers can use this function for RGB565 devices that don't support XRGB8888 natively.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj¹¬h]”hŒ Parameters”…”�”}”(hj»¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj·¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M7hj³¬ubjw )�”}”(hhh]”(j| )�”}”(hŒ>``struct iosys_map *dst`` Array of RGB565 destination buffers ”h]”(j‚ )�”}”(hŒ``struct iosys_map *dst``”h]”jˆ )�”}”(hjجh]”hŒstruct iosys_map *dst”…”�”}”(hjÚ¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÖ¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M4hjÒ¬ubjž )�”}”(hhh]”hÎ)�”}”(hŒ#Array of RGB565 destination buffers”h]”hŒ#Array of RGB565 destination buffers”…”�”}”(hjñ¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jí¬h´M4hjî¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÒ¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jí¬h´M4hjϬubj| )�”}”(hŒ³``const unsigned int *dst_pitch`` Array of numbers of bytes between the start of two consecutive scanlines within **dst**; can be NULL if scanlines are stored next to each other. ”h]”(j‚ )�”}”(hŒ!``const unsigned int *dst_pitch``”h]”jˆ )�”}”(hj­h]”hŒconst unsigned int *dst_pitch”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj­ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M6hj ­ubjž )�”}”(hhh]”hÎ)�”}”(hŒ�Array of numbers of bytes between the start of two consecutive scanlines within **dst**; can be NULL if scanlines are stored next to each other.”h]”(hŒPArray of numbers of bytes between the start of two consecutive scanlines within ”…”�”}”(hj*­h²hh³Nh´Nubj3 )�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hj2­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj*­ubhŒ9; can be NULL if scanlines are stored next to each other.”…”�”}”(hj*­h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M5hj'­ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj ­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j&­h´M6hjϬubj| )�”}”(hŒ@``const struct iosys_map *src`` Array of XRGB8888 source buffer ”h]”(j‚ )�”}”(hŒ``const struct iosys_map *src``”h]”jˆ )�”}”(hj]­h]”hŒconst struct iosys_map *src”…”�”}”(hj_­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj[­ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M7hjW­ubjž )�”}”(hhh]”hÎ)�”}”(hŒArray of XRGB8888 source buffer”h]”hŒArray of XRGB8888 source buffer”…”�”}”(hjv­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jr­h´M7hjs­ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjW­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jr­h´M7hjϬubj| )�”}”(hŒ5``const struct drm_framebuffer *fb`` DRM framebuffer ”h]”(j‚ )�”}”(hŒ$``const struct drm_framebuffer *fb``”h]”jˆ )�”}”(hj–­h]”hŒ const struct drm_framebuffer *fb”…”�”}”(hj˜­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj”­ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M8hj�­ubjž )�”}”(hhh]”hÎ)�”}”(hŒDRM framebuffer”h]”hŒDRM framebuffer”…”�”}”(hj¯­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j«­h´M8hj¬­ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj�­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j«­h´M8hjϬubj| )�”}”(hŒ<``const struct drm_rect *clip`` Clip rectangle area to copy ”h]”(j‚ )�”}”(hŒ``const struct drm_rect *clip``”h]”jˆ )�”}”(hjÏ­h]”hŒconst struct drm_rect *clip”…”�”}”(hjÑ­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÍ­ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M9hjÉ­ubjž )�”}”(hhh]”hÎ)�”}”(hŒClip rectangle area to copy”h]”hŒClip rectangle area to copy”…”�”}”(hjè­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jä­h´M9hjå­ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÉ­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jä­h´M9hjϬubj| )�”}”(hŒG``struct drm_format_conv_state *state`` Transform and conversion state ”h]”(j‚ )�”}”(hŒ'``struct drm_format_conv_state *state``”h]”jˆ )�”}”(hj®h]”hŒ#struct drm_format_conv_state *state”…”�”}”(hj ®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj®ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M:hj®ubjž )�”}”(hhh]”hÎ)�”}”(hŒTransform and conversion state”h]”hŒTransform and conversion state”…”�”}”(hj!®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j®h´M:hj®ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j®h´M:hjϬubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj³¬ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjC®h]”hŒ Description”…”�”}”(hjE®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjA®ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M<hj³¬ubhÎ)�”}”(hX�This function copies parts of a framebuffer to display memory and converts the color format during the process. Destination and framebuffer formats must match. The parameters **dst**, **dst_pitch** and **src** refer to arrays. Each array must have at least as many entries as there are planes in **fb**'s format. Each entry stores the value for the format's respective color plane at the same index.”h]”(hŒ¯This function copies parts of a framebuffer to display memory and converts the color format during the process. Destination and framebuffer formats must match. The parameters ”…”�”}”(hjY®h²hh³Nh´Nubj3 )�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hja®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjY®ubhŒ, ”…”�”}”(hjY®h²hh³Nh´Nubj3 )�”}”(hŒ **dst_pitch**”h]”hŒ dst_pitch”…”�”}”(hjs®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjY®ubhŒ and ”…”�”}”(hjY®h²hh³Nh´Nubj3 )�”}”(hŒ**src**”h]”hŒsrc”…”�”}”(hj…®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjY®ubhŒW refer to arrays. Each array must have at least as many entries as there are planes in ”…”�”}”(hjY®h²hh³Nh´Nubj3 )�”}”(hŒ**fb**”h]”hŒfb”…”�”}”(hj—®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjY®ubhŒe’s format. Each entry stores the value for the format’s respective color plane at the same index.”…”�”}”(hjY®h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M;hj³¬ubhÎ)�”}”(hŒbThis function does not apply clipping on **dst** (i.e. the destination is at the top-left corner).”h]”(hŒ)This function does not apply clipping on ”…”�”}”(hj°®h²hh³Nh´Nubj3 )�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hj¸®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj°®ubhŒ2 (i.e. the destination is at the top-left corner).”…”�”}”(hj°®h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MAhj³¬ubhÎ)�”}”(hŒVDrivers can use this function for RGB565 devices that don't support XRGB8888 natively.”h]”hŒXDrivers can use this function for RGB565 devices that don’t support XRGB8888 natively.”…”�”}”(hjÑ®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MDhj³¬ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj�h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ(drm_fb_xrgb8888_to_rgb565be (C function)”Œc.drm_fb_xrgb8888_to_rgb565be”hNt”auh1j† hj�h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒØvoid drm_fb_xrgb8888_to_rgb565be (struct iosys_map *dst, const unsigned int *dst_pitch, const struct iosys_map *src, const struct drm_framebuffer *fb, const struct drm_rect *clip, struct drm_format_conv_state *state)”h]”j¤ )�”}”(hŒ×void drm_fb_xrgb8888_to_rgb565be(struct iosys_map *dst, const unsigned int *dst_pitch, const struct iosys_map *src, const struct drm_framebuffer *fb, const struct drm_rect *clip, struct drm_format_conv_state *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjü®h²hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.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Œdrm_fb_xrgb8888_to_rgb565be”h]”jÓ )�”}”(hŒdrm_fb_xrgb8888_to_rgb565be”h]”hŒdrm_fb_xrgb8888_to_rgb565be”…”�”}”(hj!¯h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¯ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjü®h²hh³j¯h´M[ubjÞ)�”}”(hŒ·(struct iosys_map *dst, const unsigned int *dst_pitch, const struct iosys_map *src, const struct drm_framebuffer *fb, const struct drm_rect *clip, struct drm_format_conv_state *state)”h]”(jä)�”}”(hŒstruct iosys_map *dst”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj=¯h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj9¯ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJ¯h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj9¯ubh)�”}”(hhh]”jÓ )�”}”(hŒ iosys_map”h]”hŒ iosys_map”…”�”}”(hj[¯h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjX¯ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j]¯Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj#¯sbŒc.drm_fb_xrgb8888_to_rgb565be”†”asbuh1hhj9¯ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{¯h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj9¯ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj‰¯h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj9¯ubjÓ )�”}”(hŒdst”h]”hŒdst”…”�”}”(hj–¯h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj9¯ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj5¯ubjä)�”}”(hŒconst unsigned int *dst_pitch”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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Œunsigned”h]”hŒunsigned”…”�”}”(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Œint”h]”hŒint”…”�”}”(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«¯ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj«¯ubjÓ )�”}”(hŒ dst_pitch”h]”hŒ dst_pitch”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj«¯ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj5¯ubjä)�”}”(hŒconst struct iosys_map *src”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hj(°h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj$°ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5°h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj$°ubjª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjC°h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj$°ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjP°h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj$°ubh)�”}”(hhh]”jÓ )�”}”(hŒ iosys_map”h]”hŒ iosys_map”…”�”}”(hja°h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj^°ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jc°Œmodname”NŒ classname”Njé jì )�”}”jï ]”jw¯Œc.drm_fb_xrgb8888_to_rgb565be”†”asbuh1hhj$°ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj$°ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj�°h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj$°ubjÓ )�”}”(hŒsrc”h]”hŒsrc”…”�”}”(hjš°h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj$°ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj5¯ubjä)�”}”(hŒ const struct drm_framebuffer *fb”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(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Œdrm_framebuffer”h]”hŒdrm_framebuffer”…”�”}”(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ï ]”jw¯Œc.drm_fb_xrgb8888_to_rgb565be”†”asbuh1hhj¯°ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ±h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¯°ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¯°ubjÓ )�”}”(hŒfb”h]”hŒfb”…”�”}”(hj%±h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¯°ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj5¯ubjä)�”}”(hŒconst struct drm_rect *clip”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hj>±h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj:±ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjK±h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj:±ubjª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjY±h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj:±ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjf±h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj:±ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_rect”h]”hŒdrm_rect”…”�”}”(hjw±h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjt±ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jy±Œmodname”NŒ classname”Njé jì )�”}”jï ]”jw¯Œc.drm_fb_xrgb8888_to_rgb565be”†”asbuh1hhj:±ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•±h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj:±ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj£±h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj:±ubjÓ )�”}”(hŒclip”h]”hŒclip”…”�”}”(hj°±h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj:±ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj5¯ubjä)�”}”(hŒ#struct drm_format_conv_state *state”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Œdrm_format_conv_state”h]”hŒdrm_format_conv_state”…”�”}”(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ï ]”jw¯Œc.drm_fb_xrgb8888_to_rgb565be”†”asbuh1hhjűubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjűubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjűubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hj ²h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjűubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj5¯ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjü®h²hh³j¯h´M[ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ¸h]”hŒstruct iosys_map *dst”…”�”}”(hj@¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj<¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Mƒhj8¸ubjž )�”}”(hhh]”hÎ)�”}”(hŒ%Array of XRGB1555 destination buffers”h]”hŒ%Array of XRGB1555 destination buffers”…”�”}”(hjW¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jS¸h´MƒhjT¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj8¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jS¸h´Mƒhj5¸ubj| )�”}”(hŒ³``const unsigned int *dst_pitch`` Array of numbers of bytes between the start of two consecutive scanlines within **dst**; can be NULL if scanlines are stored next to each other. ”h]”(j‚ )�”}”(hŒ!``const unsigned int *dst_pitch``”h]”jˆ )�”}”(hjw¸h]”hŒconst unsigned int *dst_pitch”…”�”}”(hjy¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hju¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M…hjq¸ubjž )�”}”(hhh]”hÎ)�”}”(hŒ�Array of numbers of bytes between the start of two consecutive scanlines within **dst**; can be NULL if scanlines are stored next to each other.”h]”(hŒPArray of numbers of bytes between the start of two consecutive scanlines within ”…”�”}”(hj�¸h²hh³Nh´Nubj3 )�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hj˜¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj�¸ubhŒ9; can be NULL if scanlines are stored next to each other.”…”�”}”(hj�¸h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M„hj�¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjq¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jŒ¸h´M…hj5¸ubj| )�”}”(hŒ@``const struct iosys_map *src`` Array of XRGB8888 source buffer ”h]”(j‚ )�”}”(hŒ``const struct iosys_map *src``”h]”jˆ )�”}”(hjøh]”hŒconst struct iosys_map *src”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÁ¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M†hj½¸ubjž )�”}”(hhh]”hÎ)�”}”(hŒArray of XRGB8888 source buffer”h]”hŒArray of XRGB8888 source buffer”…”�”}”(hjܸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jظh´M†hjÙ¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj½¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jظh´M†hj5¸ubj| )�”}”(hŒ5``const struct drm_framebuffer *fb`` DRM framebuffer ”h]”(j‚ )�”}”(hŒ$``const struct drm_framebuffer *fb``”h]”jˆ )�”}”(hjü¸h]”hŒ const struct drm_framebuffer *fb”…”�”}”(hjþ¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjú¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M‡hjö¸ubjž )�”}”(hhh]”hÎ)�”}”(hŒDRM framebuffer”h]”hŒDRM framebuffer”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¹h´M‡hj¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjö¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¹h´M‡hj5¸ubj| )�”}”(hŒ<``const struct drm_rect *clip`` Clip rectangle area to copy ”h]”(j‚ )�”}”(hŒ``const struct drm_rect *clip``”h]”jˆ )�”}”(hj5¹h]”hŒconst struct drm_rect *clip”…”�”}”(hj7¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj3¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Mˆhj/¹ubjž )�”}”(hhh]”hÎ)�”}”(hŒClip rectangle area to copy”h]”hŒClip rectangle area to copy”…”�”}”(hjN¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jJ¹h´MˆhjK¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj/¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jJ¹h´Mˆhj5¸ubj| )�”}”(hŒG``struct drm_format_conv_state *state`` Transform and conversion state ”h]”(j‚ )�”}”(hŒ'``struct drm_format_conv_state *state``”h]”jˆ )�”}”(hjn¹h]”hŒ#struct drm_format_conv_state *state”…”�”}”(hjp¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjl¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M‰hjh¹ubjž )�”}”(hhh]”hÎ)�”}”(hŒTransform and conversion state”h]”hŒTransform and conversion state”…”�”}”(hj‡¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jƒ¹h´M‰hj„¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjh¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jƒ¹h´M‰hj5¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj¸ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj©¹h]”hŒ Description”…”�”}”(hj«¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj§¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M‹hj¸ubhÎ)�”}”(hX_This function copies parts of a framebuffer to display memory and converts the color format during the process. The parameters **dst**, **dst_pitch** and **src** refer to arrays. Each array must have at least as many entries as there are planes in **fb**'s format. Each entry stores the value for the format's respective color plane at the same index.”h]”(hŒThis function copies parts of a framebuffer to display memory and converts the color format during the process. The parameters ”…”�”}”(hj¿¹h²hh³Nh´Nubj3 )�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hjǹh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¿¹ubhŒ, ”…”�”}”(hj¿¹h²hh³Nh´Nubj3 )�”}”(hŒ **dst_pitch**”h]”hŒ dst_pitch”…”�”}”(hjÙ¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¿¹ubhŒ and ”…”�”}”(hj¿¹h²hh³Nh´Nubj3 )�”}”(hŒ**src**”h]”hŒsrc”…”�”}”(hjë¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¿¹ubhŒW refer to arrays. Each array must have at least as many entries as there are planes in ”…”�”}”(hj¿¹h²hh³Nh´Nubj3 )�”}”(hŒ**fb**”h]”hŒfb”…”�”}”(hjý¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¿¹ubhŒe’s format. Each entry stores the value for the format’s respective color plane at the same index.”…”�”}”(hj¿¹h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MŠhj¸ubhÎ)�”}”(hŒbThis function does not apply clipping on **dst** (i.e. the destination is at the top-left corner).”h]”(hŒ)This function does not apply clipping on ”…”�”}”(hjºh²hh³Nh´Nubj3 )�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjºubhŒ2 (i.e. the destination is at the top-left corner).”…”�”}”(hjºh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M�hj¸ubhÎ)�”}”(hŒXDrivers can use this function for XRGB1555 devices that don't support XRGB8888 natively.”h]”hŒZDrivers can use this function for XRGB1555 devices that don’t support XRGB8888 natively.”…”�”}”(hj7ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M“hj¸ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj�h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ(drm_fb_xrgb8888_to_argb1555 (C function)”Œc.drm_fb_xrgb8888_to_argb1555”hNt”auh1j† hj�h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒØvoid drm_fb_xrgb8888_to_argb1555 (struct iosys_map *dst, const unsigned int *dst_pitch, const struct iosys_map *src, const struct drm_framebuffer *fb, const struct drm_rect *clip, struct drm_format_conv_state *state)”h]”j¤ )�”}”(hŒ×void drm_fb_xrgb8888_to_argb1555(struct iosys_map *dst, const unsigned int *dst_pitch, const struct iosys_map *src, const struct drm_framebuffer *fb, const struct drm_rect *clip, struct drm_format_conv_state *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjfºh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjbºh²hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Mªubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjuºh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjbºh²hh³jtºh´MªubjÍ )�”}”(hŒdrm_fb_xrgb8888_to_argb1555”h]”jÓ )�”}”(hŒdrm_fb_xrgb8888_to_argb1555”h]”hŒdrm_fb_xrgb8888_to_argb1555”…”�”}”(hj‡ºh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjƒºubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjbºh²hh³jtºh´MªubjÞ)�”}”(hŒ·(struct iosys_map *dst, const unsigned int *dst_pitch, const struct iosys_map *src, const struct drm_framebuffer *fb, const struct drm_rect *clip, struct drm_format_conv_state *state)”h]”(jä)�”}”(hŒstruct iosys_map *dst”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Œ iosys_map”h]”hŒ iosys_map”…”�”}”(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%)�”}”jj‰ºsbŒc.drm_fb_xrgb8888_to_argb1555”†”asbuh1hhjŸºubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjáºh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjŸºubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjïºh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŸºubjÓ )�”}”(hŒdst”h]”hŒdst”…”�”}”(hjüºh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjŸºubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj›ºubjä)�”}”(hŒconst unsigned int *dst_pitch”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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Œunsigned”h]”hŒunsigned”…”�”}”(hj0»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Œint”h]”hŒint”…”�”}”(hjL»h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj»ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZ»h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj»ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjh»h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj»ubjÓ )�”}”(hŒ dst_pitch”h]”hŒ dst_pitch”…”�”}”(hju»h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj»ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj›ºubjä)�”}”(hŒconst struct iosys_map *src”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(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Œ iosys_map”h]”hŒ iosys_map”…”�”}”(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.drm_fb_xrgb8888_to_argb1555”†”asbuh1hhjŠ»ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjå»h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjŠ»ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjó»h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŠ»ubjÓ )�”}”(hŒsrc”h]”hŒsrc”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjŠ»ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj›ºubjä)�”}”(hŒ const struct drm_framebuffer *fb”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj4¼h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj¼ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjA¼h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¼ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_framebuffer”h]”hŒdrm_framebuffer”…”�”}”(hjR¼h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjO¼ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jT¼Œmodname”NŒ classname”Njé jì )�”}”jï ]”jݺŒc.drm_fb_xrgb8888_to_argb1555”†”asbuh1hhj¼ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjp¼h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¼ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj~¼h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¼ubjÓ )�”}”(hŒfb”h]”hŒfb”…”�”}”(hj‹¼h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¼ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj›ºubjä)�”}”(hŒconst struct drm_rect *clip”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(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Œdrm_rect”h]”hŒdrm_rect”…”�”}”(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.drm_fb_xrgb8888_to_argb1555”†”asbuh1hhj ¼ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjû¼h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj ¼ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj ½h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ¼ubjÓ )�”}”(hŒclip”h]”hŒclip”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj ¼ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj›ºubjä)�”}”(hŒ#struct drm_format_conv_state *state”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Œdrm_format_conv_state”h]”hŒdrm_format_conv_state”…”�”}”(hjM½h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjJ½ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jO½Œmodname”NŒ classname”Njé jì )�”}”jï ]”jݺŒc.drm_fb_xrgb8888_to_argb1555”†”asbuh1hhj+½ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjk½h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj+½ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjy½h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj+½ubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hj†½h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj+½ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj›ºubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjbºh²hh³jtºh´Mªubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj^ºh²hh³jtºh´Mªubah}”(h]”jYºah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jtºh´Mªhj[ºh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ(Convert XRGB8888 to ARGB1555 clip buffer”h]”hŒ(Convert XRGB8888 to ARGB1555 clip buffer”…”�”}”(hj°½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Mªhj­½h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj[ºh²hh³jtºh´Mªubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jȽj$ jȽj% ‰j& ‰j' ‰uh1j˜ h²hhj�h³Nh´Nubj) )�”}”(hXx**Parameters** ``struct iosys_map *dst`` Array of ARGB1555 destination buffers ``const unsigned int *dst_pitch`` Array of numbers of bytes between the start of two consecutive scanlines within **dst**; can be NULL if scanlines are stored next to each other. ``const struct iosys_map *src`` Array of XRGB8888 source buffer ``const struct drm_framebuffer *fb`` DRM framebuffer ``const struct drm_rect *clip`` Clip rectangle area to copy ``struct drm_format_conv_state *state`` Transform and conversion state **Description** This function copies parts of a framebuffer to display memory and converts the color format during the process. The parameters **dst**, **dst_pitch** and **src** refer to arrays. Each array must have at least as many entries as there are planes in **fb**'s format. Each entry stores the value for the format's respective color plane at the same index. This function does not apply clipping on **dst** (i.e. the destination is at the top-left corner). Drivers can use this function for ARGB1555 devices that don't support XRGB8888 natively. It sets an opaque alpha channel as part of the conversion.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjÒ½h]”hŒ Parameters”…”�”}”(hjÔ½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjнubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M®hj̽ubjw )�”}”(hhh]”(j| )�”}”(hŒ@``struct iosys_map *dst`` Array of ARGB1555 destination buffers ”h]”(j‚ )�”}”(hŒ``struct iosys_map *dst``”h]”jˆ )�”}”(hjñ½h]”hŒstruct iosys_map *dst”…”�”}”(hjó½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjï½ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M«hjë½ubjž )�”}”(hhh]”hÎ)�”}”(hŒ%Array of ARGB1555 destination buffers”h]”hŒ%Array of ARGB1555 destination buffers”…”�”}”(hj ¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¾h´M«hj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjë½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¾h´M«hjè½ubj| )�”}”(hŒ³``const unsigned int *dst_pitch`` Array of numbers of bytes between the start of two consecutive scanlines within **dst**; can be NULL if scanlines are stored next to each other. ”h]”(j‚ )�”}”(hŒ!``const unsigned int *dst_pitch``”h]”jˆ )�”}”(hj*¾h]”hŒconst unsigned int *dst_pitch”…”�”}”(hj,¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj(¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M­hj$¾ubjž )�”}”(hhh]”hÎ)�”}”(hŒ�Array of numbers of bytes between the start of two consecutive scanlines within **dst**; can be NULL if scanlines are stored next to each other.”h]”(hŒPArray of numbers of bytes between the start of two consecutive scanlines within ”…”�”}”(hjC¾h²hh³Nh´Nubj3 )�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hjK¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjC¾ubhŒ9; can be NULL if scanlines are stored next to each other.”…”�”}”(hjC¾h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M¬hj@¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj$¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j?¾h´M­hjè½ubj| )�”}”(hŒ@``const struct iosys_map *src`` Array of XRGB8888 source buffer ”h]”(j‚ )�”}”(hŒ``const struct iosys_map *src``”h]”jˆ )�”}”(hjv¾h]”hŒconst struct iosys_map *src”…”�”}”(hjx¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjt¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M®hjp¾ubjž )�”}”(hhh]”hÎ)�”}”(hŒArray of XRGB8888 source buffer”h]”hŒArray of XRGB8888 source buffer”…”�”}”(hj�¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j‹¾h´M®hjŒ¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjp¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j‹¾h´M®hjè½ubj| )�”}”(hŒ5``const struct drm_framebuffer *fb`` DRM framebuffer ”h]”(j‚ )�”}”(hŒ$``const struct drm_framebuffer *fb``”h]”jˆ )�”}”(hj¯¾h]”hŒ const struct drm_framebuffer *fb”…”�”}”(hj±¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj­¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M¯hj©¾ubjž )�”}”(hhh]”hÎ)�”}”(hŒDRM framebuffer”h]”hŒDRM framebuffer”…”�”}”(hjȾh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jľh´M¯hjžubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj©¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jľh´M¯hjè½ubj| )�”}”(hŒ<``const struct drm_rect *clip`` Clip rectangle area to copy ”h]”(j‚ )�”}”(hŒ``const struct drm_rect *clip``”h]”jˆ )�”}”(hjè¾h]”hŒconst struct drm_rect *clip”…”�”}”(hjê¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjæ¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M°hjâ¾ubjž )�”}”(hhh]”hÎ)�”}”(hŒClip rectangle area to copy”h]”hŒClip rectangle area to copy”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jý¾h´M°hjþ¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjâ¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jý¾h´M°hjè½ubj| )�”}”(hŒG``struct drm_format_conv_state *state`` Transform and conversion state ”h]”(j‚ )�”}”(hŒ'``struct drm_format_conv_state *state``”h]”jˆ )�”}”(hj!¿h]”hŒ#struct drm_format_conv_state *state”…”�”}”(hj#¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M±hj¿ubjž )�”}”(hhh]”hÎ)�”}”(hŒTransform and conversion state”h]”hŒTransform and conversion state”…”�”}”(hj:¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j6¿h´M±hj7¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j6¿h´M±hjè½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj̽ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj\¿h]”hŒ Description”…”�”}”(hj^¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjZ¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M³hj̽ubhÎ)�”}”(hX_This function copies parts of a framebuffer to display memory and converts the color format during the process. The parameters **dst**, **dst_pitch** and **src** refer to arrays. Each array must have at least as many entries as there are planes in **fb**'s format. Each entry stores the value for the format's respective color plane at the same index.”h]”(hŒThis function copies parts of a framebuffer to display memory and converts the color format during the process. The parameters ”…”�”}”(hjr¿h²hh³Nh´Nubj3 )�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hjz¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjr¿ubhŒ, ”…”�”}”(hjr¿h²hh³Nh´Nubj3 )�”}”(hŒ **dst_pitch**”h]”hŒ dst_pitch”…”�”}”(hjŒ¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjr¿ubhŒ and ”…”�”}”(hjr¿h²hh³Nh´Nubj3 )�”}”(hŒ**src**”h]”hŒsrc”…”�”}”(hjž¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjr¿ubhŒW refer to arrays. Each array must have at least as many entries as there are planes in ”…”�”}”(hjr¿h²hh³Nh´Nubj3 )�”}”(hŒ**fb**”h]”hŒfb”…”�”}”(hj°¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjr¿ubhŒe’s format. Each entry stores the value for the format’s respective color plane at the same index.”…”�”}”(hjr¿h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M²hj̽ubhÎ)�”}”(hŒbThis function does not apply clipping on **dst** (i.e. the destination is at the top-left corner).”h]”(hŒ)This function does not apply clipping on ”…”�”}”(hjÉ¿h²hh³Nh´Nubj3 )�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hjÑ¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÉ¿ubhŒ2 (i.e. the destination is at the top-left corner).”…”�”}”(hjÉ¿h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M¸hj̽ubhÎ)�”}”(hŒ“Drivers can use this function for ARGB1555 devices that don't support XRGB8888 natively. It sets an opaque alpha channel as part of the conversion.”h]”hŒ•Drivers can use this function for ARGB1555 devices that don’t support XRGB8888 natively. It sets an opaque alpha channel as part of the conversion.”…”�”}”(hjê¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M»hj̽ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj�h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ(drm_fb_xrgb8888_to_rgba5551 (C function)”Œc.drm_fb_xrgb8888_to_rgba5551”hNt”auh1j† hj�h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒØvoid drm_fb_xrgb8888_to_rgba5551 (struct iosys_map *dst, const unsigned int *dst_pitch, const struct iosys_map *src, const struct drm_framebuffer *fb, const struct drm_rect *clip, struct drm_format_conv_state *state)”• h]”j¤ )�”}”(hŒ×void drm_fb_xrgb8888_to_rgba5551(struct iosys_map *dst, const unsigned int *dst_pitch, const struct iosys_map *src, const struct drm_framebuffer *fb, const struct drm_rect *clip, struct drm_format_conv_state *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjÀh²hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.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Œdrm_fb_xrgb8888_to_rgba5551”h]”jÓ )�”}”(hŒdrm_fb_xrgb8888_to_rgba5551”h]”hŒdrm_fb_xrgb8888_to_rgba5551”…”�”}”(hj:Àh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj6Àubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÀh²hh³j'Àh´MÒubjÞ)�”}”(hŒ·(struct iosys_map *dst, const unsigned int *dst_pitch, const struct iosys_map *src, const struct drm_framebuffer *fb, const struct drm_rect *clip, struct drm_format_conv_state *state)”h]”(jä)�”}”(hŒstruct iosys_map *dst”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjVÀh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjRÀubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjcÀh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjRÀubh)�”}”(hhh]”jÓ )�”}”(hŒ iosys_map”h]”hŒ iosys_map”…”�”}”(hjtÀh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjqÀubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jvÀŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj<ÀsbŒc.drm_fb_xrgb8888_to_rgba5551”†”asbuh1hhjRÀubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”Àh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjRÀubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj¢Àh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjRÀubjÓ )�”}”(hŒdst”h]”hŒdst”…”�”}”(hj¯Àh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjRÀubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjNÀubjä)�”}”(hŒconst unsigned int *dst_pitch”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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Œunsigned”h]”hŒunsigned”…”�”}”(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Œint”h]”hŒint”…”�”}”(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ÄÀubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÄÀubjÓ )�”}”(hŒ dst_pitch”h]”hŒ dst_pitch”…”�”}”(hj(Áh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÄÀubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjNÀubjä)�”}”(hŒconst struct iosys_map *src”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hjAÁh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj=Áubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNÁh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj=Áubjª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj\Áh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj=Áubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjiÁh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj=Áubh)�”}”(hhh]”jÓ )�”}”(hŒ iosys_map”h]”hŒ iosys_map”…”�”}”(hjzÁh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjwÁubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j|ÁŒmodname”NŒ classname”Njé jì )�”}”jï ]”j�ÀŒc.drm_fb_xrgb8888_to_rgba5551”†”asbuh1hhj=Áubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜Áh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj=Áubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj¦Áh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj=ÁubjÓ )�”}”(hŒsrc”h]”hŒsrc”…”�”}”(hj³Áh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj=Áubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjNÀubjä)�”}”(hŒ const struct drm_framebuffer *fb”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(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Œdrm_framebuffer”h]”hŒdrm_framebuffer”…”�”}”(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.drm_fb_xrgb8888_to_rgba5551”†”asbuh1hhjÈÁubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#Âh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÈÁubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj1Âh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÈÁubjÓ )�”}”(hŒfb”h]”hŒfb”…”�”}”(hj>Âh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÈÁubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjNÀubjä)�”}”(hŒconst struct drm_rect *clip”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hjWÂh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjSÂubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdÂh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjSÂubjª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjrÂh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjSÂubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjSÂubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_rect”h]”hŒdrm_rect”…”�”}”(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.drm_fb_xrgb8888_to_rgba5551”†”asbuh1hhjSÂubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®Âh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjSÂubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj¼Âh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjSÂubjÓ )�”}”(hŒclip”h]”hŒclip”…”�”}”(hjÉÂh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjSÂubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjNÀubjä)�”}”(hŒ#struct drm_format_conv_state *state”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Œdrm_format_conv_state”h]”hŒdrm_format_conv_state”…”�”}”(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.drm_fb_xrgb8888_to_rgba5551”†”asbuh1hhjÞÂubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÞÂubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj,Ãh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÞÂubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hj9Ãh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÞÂubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjNÀubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjÀh²hh³j'Àh´MÒubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ(Convert XRGB8888 to RGBA5551 clip buffer”h]”hŒ(Convert XRGB8888 to RGBA5551 clip buffer”…”�”}”(hjcÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.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²hhj�h³Nh´Nubj) )�”}”(hXx**Parameters** ``struct iosys_map *dst`` Array of RGBA5551 destination buffers ``const unsigned int *dst_pitch`` Array of numbers of bytes between the start of two consecutive scanlines within **dst**; can be NULL if scanlines are stored next to each other. ``const struct iosys_map *src`` Array of XRGB8888 source buffer ``const struct drm_framebuffer *fb`` DRM framebuffer ``const struct drm_rect *clip`` Clip rectangle area to copy ``struct drm_format_conv_state *state`` Transform and conversion state **Description** This function copies parts of a framebuffer to display memory and converts the color format during the process. The parameters **dst**, **dst_pitch** and **src** refer to arrays. Each array must have at least as many entries as there are planes in **fb**'s format. Each entry stores the value for the format's respective color plane at the same index. This function does not apply clipping on **dst** (i.e. the destination is at the top-left corner). Drivers can use this function for RGBA5551 devices that don't support XRGB8888 natively. It sets an opaque alpha channel as part of the conversion.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj…Ãh]”hŒ Parameters”…”�”}”(hj‡Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjƒÃubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MÖhjÃubjw )�”}”(hhh]”(j| )�”}”(hŒ@``struct iosys_map *dst`` Array of RGBA5551 destination buffers ”h]”(j‚ )�”}”(hŒ``struct iosys_map *dst``”h]”jˆ )�”}”(hj¤Ãh]”hŒstruct iosys_map *dst”…”�”}”(hj¦Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¢Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MÓhjžÃubjž )�”}”(hhh]”hÎ)�”}”(hŒ%Array of RGBA5551 destination buffers”h]”hŒ%Array of RGBA5551 destination buffers”…”�”}”(hj½Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¹Ãh´MÓhjºÃubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjžÃubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¹Ãh´MÓhj›Ãubj| )�”}”(hŒ³``const unsigned int *dst_pitch`` Array of numbers of bytes between the start of two consecutive scanlines within **dst**; can be NULL if scanlines are stored next to each other. ”h]”(j‚ )�”}”(hŒ!``const unsigned int *dst_pitch``”h]”jˆ )�”}”(hjÝÃh]”hŒconst unsigned int *dst_pitch”…”�”}”(hjßÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÛÃubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MÕhj×Ãubjž )�”}”(hhh]”hÎ)�”}”(hŒ�Array of numbers of bytes between the start of two consecutive scanlines within **dst**; can be NULL if scanlines are stored next to each other.”h]”(hŒPArray of numbers of bytes between the start of two consecutive scanlines within ”…”�”}”(hjöÃh²hh³Nh´Nubj3 )�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hjþÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjöÃubhŒ9; can be NULL if scanlines are stored next to each other.”…”�”}”(hjöÃh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MÔhjóÃubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj×Ãubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jòÃh´MÕhj›Ãubj| )�”}”(hŒ@``const struct iosys_map *src`` Array of XRGB8888 source buffer ”h]”(j‚ )�”}”(hŒ``const struct iosys_map *src``”h]”jˆ )�”}”(hj)Äh]”hŒconst struct iosys_map *src”…”�”}”(hj+Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj'Äubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MÖhj#Äubjž )�”}”(hhh]”hÎ)�”}”(hŒArray of XRGB8888 source buffer”h]”hŒArray of XRGB8888 source buffer”…”�”}”(hjBÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j>Äh´MÖhj?Äubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj#Äubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j>Äh´MÖhj›Ãubj| )�”}”(hŒ5``const struct drm_framebuffer *fb`` DRM framebuffer ”h]”(j‚ )�”}”(hŒ$``const struct drm_framebuffer *fb``”h]”jˆ )�”}”(hjbÄh]”hŒ const struct drm_framebuffer *fb”…”�”}”(hjdÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj`Äubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M×hj\Äubjž )�”}”(hhh]”hÎ)�”}”(hŒDRM framebuffer”h]”hŒDRM framebuffer”…”�”}”(hj{Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jwÄh´M×hjxÄubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj\Äubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jwÄh´M×hj›Ãubj| )�”}”(hŒ<``const struct drm_rect *clip`` Clip rectangle area to copy ”h]”(j‚ )�”}”(hŒ``const struct drm_rect *clip``”h]”jˆ )�”}”(hj›Äh]”hŒconst struct drm_rect *clip”…”�”}”(hj�Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj™Äubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MØhj•Äubjž )�”}”(hhh]”hÎ)�”}”(hŒClip rectangle area to copy”h]”hŒClip rectangle area to copy”…”�”}”(hj´Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j°Äh´MØhj±Äubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj•Äubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j°Äh´MØhj›Ãubj| )�”}”(hŒG``struct drm_format_conv_state *state`` Transform and conversion state ”h]”(j‚ )�”}”(hŒ'``struct drm_format_conv_state *state``”h]”jˆ )�”}”(hjÔÄh]”hŒ#struct drm_format_conv_state *state”…”�”}”(hjÖÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÒÄubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MÙhjÎÄubjž )�”}”(hhh]”hÎ)�”}”(hŒTransform and conversion state”h]”hŒTransform and conversion state”…”�”}”(hjíÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jéÄh´MÙhjêÄubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÎÄubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jéÄh´MÙhj›Ãubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÃubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjÅh]”hŒ Description”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj Åubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MÛhjÃubhÎ)�”}”(hX_This function copies parts of a framebuffer to display memory and converts the color format during the process. The parameters **dst**, **dst_pitch** and **src** refer to arrays. Each array must have at least as many entries as there are planes in **fb**'s format. Each entry stores the value for the format's respective color plane at the same index.”h]”(hŒThis function copies parts of a framebuffer to display memory and converts the color format during the process. The parameters ”…”�”}”(hj%Åh²hh³Nh´Nubj3 )�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hj-Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj%ÅubhŒ, ”…”�”}”(hj%Åh²hh³Nh´Nubj3 )�”}”(hŒ **dst_pitch**”h]”hŒ dst_pitch”…”�”}”(hj?Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj%ÅubhŒ and ”…”�”}”(hj%Åh²hh³Nh´Nubj3 )�”}”(hŒ**src**”h]”hŒsrc”…”�”}”(hjQÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj%ÅubhŒW refer to arrays. Each array must have at least as many entries as there are planes in ”…”�”}”(hj%Åh²hh³Nh´Nubj3 )�”}”(hŒ**fb**”h]”hŒfb”…”�”}”(hjcÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj%ÅubhŒe’s format. Each entry stores the value for the format’s respective color plane at the same index.”…”�”}”(hj%Åh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MÚhjÃubhÎ)�”}”(hŒbThis function does not apply clipping on **dst** (i.e. the destination is at the top-left corner).”h]”(hŒ)This function does not apply clipping on ”…”�”}”(hj|Åh²hh³Nh´Nubj3 )�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hj„Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj|ÅubhŒ2 (i.e. the destination is at the top-left corner).”…”�”}”(hj|Åh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MàhjÃubhÎ)�”}”(hŒ“Drivers can use this function for RGBA5551 devices that don't support XRGB8888 natively. It sets an opaque alpha channel as part of the conversion.”h]”hŒ•Drivers can use this function for RGBA5551 devices that don’t support XRGB8888 natively. It sets an opaque alpha channel as part of the conversion.”…”�”}”(hj�Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MãhjÃubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj�h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ&drm_fb_xrgb8888_to_rgb888 (C function)”Œc.drm_fb_xrgb8888_to_rgb888”hNt”auh1j† hj�h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒÖvoid drm_fb_xrgb8888_to_rgb888 (struct iosys_map *dst, const unsigned int *dst_pitch, const struct iosys_map *src, const struct drm_framebuffer *fb, const struct drm_rect *clip, struct drm_format_conv_state *state)”h]”j¤ )�”}”(hŒÕvoid drm_fb_xrgb8888_to_rgb888(struct iosys_map *dst, const unsigned int *dst_pitch, const struct iosys_map *src, const struct drm_framebuffer *fb, const struct drm_rect *clip, struct drm_format_conv_state *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÌÅh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjÈÅh²hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.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Œdrm_fb_xrgb8888_to_rgb888”h]”jÓ )�”}”(hŒdrm_fb_xrgb8888_to_rgb888”h]”hŒdrm_fb_xrgb8888_to_rgb888”…”�”}”(hjíÅh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjéÅubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÈÅh²hh³jÚÅh´MúubjÞ)�”}”(hŒ·(struct iosys_map *dst, const unsigned int *dst_pitch, const struct iosys_map *src, const struct drm_framebuffer *fb, const struct drm_rect *clip, struct drm_format_conv_state *state)”h]”(jä)�”}”(hŒstruct iosys_map *dst”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Œ iosys_map”h]”hŒ iosys_map”…”�”}”(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%)�”}”jjïÅsbŒc.drm_fb_xrgb8888_to_rgb888”†”asbuh1hhjÆubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGÆh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÆubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjUÆh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÆubjÓ )�”}”(hŒdst”h]”hŒdst”…”�”}”(hjbÆh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÆubjä)�”}”(hŒconst unsigned int *dst_pitch”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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Æubj¦)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(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Æubj¦)�”}”(hŒint”h]”hŒint”…”�”}”(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Æubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÎÆh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjwÆubjÓ )�”}”(hŒ dst_pitch”h]”hŒ dst_pitch”…”�”}”(hjÛÆh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjwÆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÆubjä)�”}”(hŒconst struct iosys_map *src”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(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Œ iosys_map”h]”hŒ iosys_map”…”�”}”(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ï ]”jCÆŒc.drm_fb_xrgb8888_to_rgb888”†”asbuh1hhjðÆubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKÇh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjðÆubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjYÇh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjðÆubjÓ )�”}”(hŒsrc”h]”hŒsrc”…”�”}”(hjfÇh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjðÆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÆubjä)�”}”(hŒ const struct drm_framebuffer *fb”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(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Œdrm_framebuffer”h]”hŒdrm_framebuffer”…”�”}”(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ï ]”jCÆŒc.drm_fb_xrgb8888_to_rgb888”†”asbuh1hhj{Çubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖÇh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj{Çubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjäÇh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj{ÇubjÓ )�”}”(hŒfb”h]”hŒfb”…”�”}”(hjñÇh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj{Çubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÆubjä)�”}”(hŒconst struct drm_rect *clip”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj%Èh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjÈubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2Èh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÈubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_rect”h]”hŒdrm_rect”…”�”}”(hjCÈh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj@Èubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jEÈŒmodname”NŒ classname”Njé jì )�”}”jï ]”jCÆŒc.drm_fb_xrgb8888_to_rgb888”†”asbuh1hhjÈubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjaÈh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÈubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjoÈh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÈubjÓ )�”}”(hŒclip”h]”hŒclip”…”�”}”(hj|Èh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÈubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÆubjä)�”}”(hŒ#struct drm_format_conv_state *state”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Œdrm_format_conv_state”h]”hŒdrm_format_conv_state”…”�”}”(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ï ]”jCÆŒc.drm_fb_xrgb8888_to_rgb888”†”asbuh1hhj‘Èubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑÈh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj‘Èubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjßÈh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‘ÈubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hjìÈh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj‘Èubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÆubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjÈÅh²hh³jÚÅh´Múubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ&Convert XRGB8888 to RGB888 clip buffer”h]”hŒ&Convert XRGB8888 to RGB888 clip buffer”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.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²hhj�h³Nh´Nubj) )�”}”(hXj**Parameters** ``struct iosys_map *dst`` Array of RGB888 destination buffers ``const unsigned int *dst_pitch`` Array of numbers of bytes between the start of two consecutive scanlines within **dst**; can be NULL if scanlines are stored next to each other. ``const struct iosys_map *src`` Array of XRGB8888 source buffers ``const struct drm_framebuffer *fb`` DRM framebuffer ``const struct drm_rect *clip`` Clip rectangle area to copy ``struct drm_format_conv_state *state`` Transform and conversion state **Description** This function copies parts of a framebuffer to display memory and converts the color format during the process. Destination and framebuffer formats must match. The parameters **dst**, **dst_pitch** and **src** refer to arrays. Each array must have at least as many entries as there are planes in **fb**'s format. Each entry stores the value for the format's respective color plane at the same index. This function does not apply clipping on **dst** (i.e. the destination is at the top-left corner). Drivers can use this function for RGB888 devices that don't natively support XRGB8888.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj8Éh]”hŒ Parameters”…”�”}”(hj:Éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj6Éubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Mþhj2Éubjw )�”}”(hhh]”(j| )�”}”(hŒ>``struct iosys_map *dst`` Array of RGB888 destination buffers ”h]”(j‚ )�”}”(hŒ``struct iosys_map *dst``”h]”jˆ )�”}”(hjWÉh]”hŒstruct iosys_map *dst”…”�”}”(hjYÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjUÉubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MûhjQÉubjž )�”}”(hhh]”hÎ)�”}”(hŒ#Array of RGB888 destination buffers”h]”hŒ#Array of RGB888 destination buffers”…”�”}”(hjpÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jlÉh´MûhjmÉubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjQÉubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jlÉh´MûhjNÉubj| )�”}”(hŒ³``const unsigned int *dst_pitch`` Array of numbers of bytes between the start of two consecutive scanlines within **dst**; can be NULL if scanlines are stored next to each other. ”h]”(j‚ )�”}”(hŒ!``const unsigned int *dst_pitch``”h]”jˆ )�”}”(hj�Éh]”hŒconst unsigned int *dst_pitch”…”�”}”(hj’Éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjŽÉubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MýhjŠÉubjž )�”}”(hhh]”hÎ)�”}”(hŒ�Array of numbers of bytes between the start of two consecutive scanlines within **dst**; can be NULL if scanlines are stored next to each other.”h]”(hŒPArray of numbers of bytes between the start of two consecutive scanlines within ”…”�”}”(hj©Éh²hh³Nh´Nubj3 )�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hj±Éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj©ÉubhŒ9; can be NULL if scanlines are stored next to each other.”…”�”}”(hj©Éh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Mühj¦Éubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjŠÉubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¥Éh´MýhjNÉubj| )�”}”(hŒA``const struct iosys_map *src`` Array of XRGB8888 source buffers ”h]”(j‚ )�”}”(hŒ``const struct iosys_map *src``”h]”jˆ )�”}”(hjÜÉh]”hŒconst struct iosys_map *src”…”�”}”(hjÞÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÚÉubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MþhjÖÉubjž )�”}”(hhh]”hÎ)�”}”(hŒ Array of XRGB8888 source buffers”h]”hŒ Array of XRGB8888 source buffers”…”�”}”(hjõÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jñÉh´MþhjòÉubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÖÉubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jñÉh´MþhjNÉubj| )�”}”(hŒ5``const struct drm_framebuffer *fb`` DRM framebuffer ”h]”(j‚ )�”}”(hŒ$``const struct drm_framebuffer *fb``”h]”jˆ )�”}”(hjÊh]”hŒ const struct drm_framebuffer *fb”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MÿhjÊubjž )�”}”(hhh]”hÎ)�”}”(hŒDRM framebuffer”h]”hŒDRM framebuffer”…”�”}”(hj.Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j*Êh´Mÿhj+Êubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÊubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j*Êh´MÿhjNÉubj| )�”}”(hŒ<``const struct drm_rect *clip`` Clip rectangle area to copy ”h]”(j‚ )�”}”(hŒ``const struct drm_rect *clip``”h]”jˆ )�”}”(hjNÊh]”hŒconst struct drm_rect *clip”…”�”}”(hjPÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjLÊubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MhjHÊubjž )�”}”(hhh]”hÎ)�”}”(hŒClip rectangle area to copy”h]”hŒClip rectangle area to copy”…”�”}”(hjgÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jcÊh´MhjdÊubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjHÊubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jcÊh´MhjNÉubj| )�”}”(hŒG``struct drm_format_conv_state *state`` Transform and conversion state ”h]”(j‚ )�”}”(hŒ'``struct drm_format_conv_state *state``”h]”jˆ )�”}”(hj‡Êh]”hŒ#struct drm_format_conv_state *state”…”�”}”(hj‰Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj…Êubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Mhj�Êubjž )�”}”(hhh]”hÎ)�”}”(hŒTransform and conversion state”h]”hŒTransform and conversion state”…”�”}”(hj Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jœÊh´Mhj�Êubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj�Êubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jœÊh´MhjNÉubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj2ÉubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjÂÊh]”hŒ Description”…”�”}”(hjÄÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÀÊubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Mhj2ÉubhÎ)�”}”(hX�This function copies parts of a framebuffer to display memory and converts the color format during the process. Destination and framebuffer formats must match. The parameters **dst**, **dst_pitch** and **src** refer to arrays. Each array must have at least as many entries as there are planes in **fb**'s format. Each entry stores the value for the format's respective color plane at the same index.”h]”(hŒ¯This function copies parts of a framebuffer to display memory and converts the color format during the process. Destination and framebuffer formats must match. The parameters ”…”�”}”(hjØÊh²hh³Nh´Nubj3 )�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hjàÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjØÊubhŒ, ”…”�”}”(hjØÊh²hh³Nh´Nubj3 )�”}”(hŒ **dst_pitch**”h]”hŒ dst_pitch”…”�”}”(hjòÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjØÊubhŒ and ”…”�”}”(hjØÊh²hh³Nh´Nubj3 )�”}”(hŒ**src**”h]”hŒsrc”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjØÊubhŒW refer to arrays. Each array must have at least as many entries as there are planes in ”…”�”}”(hjØÊh²hh³Nh´Nubj3 )�”}”(hŒ**fb**”h]”hŒfb”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjØÊubhŒe’s format. Each entry stores the value for the format’s respective color plane at the same index.”…”�”}”(hjØÊh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Mhj2ÉubhÎ)�”}”(hŒbThis function does not apply clipping on **dst** (i.e. the destination is at the top-left corner).”h]”(hŒ)This function does not apply clipping on ”…”�”}”(hj/Ëh²hh³Nh´Nubj3 )�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hj7Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj/ËubhŒ2 (i.e. the destination is at the top-left corner).”…”�”}”(hj/Ëh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Mhj2ÉubhÎ)�”}”(hŒVDrivers can use this function for RGB888 devices that don't natively support XRGB8888.”h]”hŒXDrivers can use this function for RGB888 devices that don’t natively support XRGB8888.”…”�”}”(hjPËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M hj2Éubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj�h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ&drm_fb_xrgb8888_to_bgr888 (C function)”Œc.drm_fb_xrgb8888_to_bgr888”hNt”auh1j† hj�h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒÖvoid drm_fb_xrgb8888_to_bgr888 (struct iosys_map *dst, const unsigned int *dst_pitch, const struct iosys_map *src, const struct drm_framebuffer *fb, const struct drm_rect *clip, struct drm_format_conv_state *state)”h]”j¤ )�”}”(hŒÕvoid drm_fb_xrgb8888_to_bgr888(struct iosys_map *dst, const unsigned int *dst_pitch, const struct iosys_map *src, const struct drm_framebuffer *fb, const struct drm_rect *clip, struct drm_format_conv_state *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj{Ëh²hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.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Œdrm_fb_xrgb8888_to_bgr888”h]”jÓ )�”}”(hŒdrm_fb_xrgb8888_to_bgr888”h]”hŒdrm_fb_xrgb8888_to_bgr888”…”�”}”(hj Ëh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjœËubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj{Ëh²hh³j�Ëh´M"ubjÞ)�”}”(hŒ·(struct iosys_map *dst, const unsigned int *dst_pitch, const struct iosys_map *src, const struct drm_framebuffer *fb, const struct drm_rect *clip, struct drm_format_conv_state *state)”h]”(jä)�”}”(hŒstruct iosys_map *dst”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Œ iosys_map”h]”hŒ iosys_map”…”�”}”(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%)�”}”jj¢ËsbŒc.drm_fb_xrgb8888_to_bgr888”†”asbuh1hhj¸Ëubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjúËh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¸Ëubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¸ËubjÓ )�”}”(hŒdst”h]”hŒdst”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¸Ëubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj´Ëubjä)�”}”(hŒconst unsigned int *dst_pitch”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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Œunsigned”h]”hŒunsigned”…”�”}”(hjIÌh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj*Ìubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWÌh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj*Ìubj¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjeÌh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj*Ìubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjsÌh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj*Ìubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj�Ìh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj*ÌubjÓ )�”}”(hŒ dst_pitch”h]”hŒ dst_pitch”…”�”}”(hjŽÌh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj*Ìubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj´Ëubjä)�”}”(hŒconst struct iosys_map *src”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(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Œ iosys_map”h]”hŒ iosys_map”…”�”}”(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.drm_fb_xrgb8888_to_bgr888”†”asbuh1hhj£Ìubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþÌh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj£Ìubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj Íh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj£ÌubjÓ )�”}”(hŒsrc”h]”hŒsrc”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj£Ìubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj´Ëubjä)�”}”(hŒ const struct drm_framebuffer *fb”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hj2Í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ª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjMÍh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj.Íubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZÍh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj.Íubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_framebuffer”h]”hŒdrm_framebuffer”…”�”}”(hjkÍh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjhÍubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jmÍŒmodname”NŒ classname”Njé jì )�”}”jï ]”jöËŒc.drm_fb_xrgb8888_to_bgr888”†”asbuh1hhj.Íubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰Íh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj.Íubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj—Íh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj.ÍubjÓ )�”}”(hŒfb”h]”hŒfb”…”�”}”(hj¤Íh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj.Íubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj´Ëubjä)�”}”(hŒconst struct drm_rect *clip”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(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Œdrm_rect”h]”hŒdrm_rect”…”�”}”(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.drm_fb_xrgb8888_to_bgr888”†”asbuh1hhj¹Íubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¹Íubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj"Îh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¹ÍubjÓ )�”}”(hŒclip”h]”hŒclip”…”�”}”(hj/Îh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¹Íubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj´Ëubjä)�”}”(hŒ#struct drm_format_conv_state *state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjHÎh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjDÎubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjUÎh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjDÎubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_format_conv_state”h]”hŒdrm_format_conv_state”…”�”}”(hjfÎh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjcÎubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jhÎŒmodname”NŒ classname”Njé jì )�”}”jï ]”jöËŒc.drm_fb_xrgb8888_to_bgr888”†”asbuh1hhjDÎubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„Îh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjDÎubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj’Îh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjDÎubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hjŸÎh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjDÎubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj´Ëubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj{Ëh²hh³j�Ëh´M"ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjwËh²hh³j�Ëh´M"ubah}”(h]”jrËah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j�Ëh´M"hjtËh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ&Convert XRGB8888 to BGR888 clip buffer”h]”hŒ&Convert XRGB8888 to BGR888 clip buffer”…”�”}”(hjÉÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M"hjÆÎh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjtËh²hh³j�Ëh´M"ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jáÎj$ jáÎj% ‰j& ‰j' ‰uh1j˜ h²hhj�h³Nh´Nubj) )�”}”(hXj**Parameters** ``struct iosys_map *dst`` Array of BGR888 destination buffers ``const unsigned int *dst_pitch`` Array of numbers of bytes between the start of two consecutive scanlines within **dst**; can be NULL if scanlines are stored next to each other. ``const struct iosys_map *src`` Array of XRGB8888 source buffers ``const struct drm_framebuffer *fb`` DRM framebuffer ``const struct drm_rect *clip`` Clip rectangle area to copy ``struct drm_format_conv_state *state`` Transform and conversion state **Description** This function copies parts of a framebuffer to display memory and converts the color format during the process. Destination and framebuffer formats must match. The parameters **dst**, **dst_pitch** and **src** refer to arrays. Each array must have at least as many entries as there are planes in **fb**'s format. Each entry stores the value for the format's respective color plane at the same index. This function does not apply clipping on **dst** (i.e. the destination is at the top-left corner). Drivers can use this function for BGR888 devices that don't natively support XRGB8888.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjëÎh]”hŒ Parameters”…”�”}”(hjíÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjéÎubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M&hjåÎubjw )�”}”(hhh]”(j| )�”}”(hŒ>``struct iosys_map *dst`` Array of BGR888 destination buffers ”h]”(j‚ )�”}”(hŒ``struct iosys_map *dst``”h]”jˆ )�”}”(hj Ïh]”hŒstruct iosys_map *dst”…”�”}”(hj Ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÏubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M#hjÏubjž )�”}”(hhh]”hÎ)�”}”(hŒ#Array of BGR888 destination buffers”h]”hŒ#Array of BGR888 destination buffers”…”�”}”(hj#Ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÏh´M#hj Ïubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÏubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÏh´M#hjÏubj| )�”}”(hŒ³``const unsigned int *dst_pitch`` Array of numbers of bytes between the start of two consecutive scanlines within **dst**; can be NULL if scanlines are stored next to each other. ”h]”(j‚ )�”}”(hŒ!``const unsigned int *dst_pitch``”h]”jˆ )�”}”(hjCÏh]”hŒconst unsigned int *dst_pitch”…”�”}”(hjEÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjAÏubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M%hj=Ïubjž )�”}”(hhh]”hÎ)�”}”(hŒ�Array of numbers of bytes between the start of two consecutive scanlines within **dst**; can be NULL if scanlines are stored next to each other.”h]”(hŒPArray of numbers of bytes between the start of two consecutive scanlines within ”…”�”}”(hj\Ïh²hh³Nh´Nubj3 )�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hjdÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj\ÏubhŒ9; can be NULL if scanlines are stored next to each other.”…”�”}”(hj\Ïh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M$hjYÏubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj=Ïubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jXÏh´M%hjÏubj| )�”}”(hŒA``const struct iosys_map *src`` Array of XRGB8888 source buffers ”h]”(j‚ )�”}”(hŒ``const struct iosys_map *src``”h]”jˆ )�”}”(hj�Ïh]”hŒconst struct iosys_map *src”…”�”}”(hj‘Ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj�Ïubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M&hj‰Ïubjž )�”}”(hhh]”hÎ)�”}”(hŒ Array of XRGB8888 source buffers”h]”hŒ Array of XRGB8888 source buffers”…”�”}”(hj¨Ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¤Ïh´M&hj¥Ïubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj‰Ïubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¤Ïh´M&hjÏubj| )�”}”(hŒ5``const struct drm_framebuffer *fb`` DRM framebuffer ”h]”(j‚ )�”}”(hŒ$``const struct drm_framebuffer *fb``”h]”jˆ )�”}”(hjÈÏh]”hŒ const struct drm_framebuffer *fb”…”�”}”(hjÊÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÆÏubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M'hjÂÏubjž )�”}”(hhh]”hÎ)�”}”(hŒDRM framebuffer”h]”hŒDRM framebuffer”…”�”}”(hjáÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÝÏh´M'hjÞÏubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÂÏubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÝÏh´M'hjÏubj| )�”}”(hŒ<``const struct drm_rect *clip`` Clip rectangle area to copy ”h]”(j‚ )�”}”(hŒ``const struct drm_rect *clip``”h]”jˆ )�”}”(hjÐh]”hŒconst struct drm_rect *clip”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÿÏubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M(hjûÏubjž )�”}”(hhh]”hÎ)�”}”(hŒClip rectangle area to copy”h]”hŒClip rectangle area to copy”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÐh´M(hjÐubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjûÏubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÐh´M(hjÏubj| )�”}”(hŒG``struct drm_format_conv_state *state`` Transform and conversion state ”h]”(j‚ )�”}”(hŒ'``struct drm_format_conv_state *state``”h]”jˆ )�”}”(hj:Ðh]”hŒ#struct drm_format_conv_state *state”…”�”}”(hj<Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj8Ðubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M)hj4Ðubjž )�”}”(hhh]”hÎ)�”}”(hŒTransform and conversion state”h]”hŒTransform and conversion state”…”�”}”(hjSÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jOÐh´M)hjPÐubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj4Ðubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jOÐh´M)hjÏubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjåÎubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjuÐh]”hŒ Description”…”�”}”(hjwÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjsÐubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M+hjåÎubhÎ)�”}”(hX�This function copies parts of a framebuffer to display memory and converts the color format during the process. Destination and framebuffer formats must match. The parameters **dst**, **dst_pitch** and **src** refer to arrays. Each array must have at least as many entries as there are planes in **fb**'s format. Each entry stores the value for the format's respective color plane at the same index.”h]”(hŒ¯This function copies parts of a framebuffer to display memory and converts the color format during the process. Destination and framebuffer formats must match. The parameters ”…”�”}”(hj‹Ðh²hh³Nh´Nubj3 )�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hj“Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj‹ÐubhŒ, ”…”�”}”(hj‹Ðh²hh³Nh´Nubj3 )�”}”(hŒ **dst_pitch**”h]”hŒ dst_pitch”…”�”}”(hj¥Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj‹ÐubhŒ and ”…”�”}”(hj‹Ðh²hh³Nh´Nubj3 )�”}”(hŒ**src**”h]”hŒsrc”…”�”}”(hj·Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj‹ÐubhŒW refer to arrays. Each array must have at least as many entries as there are planes in ”…”�”}”(hj‹Ðh²hh³Nh´Nubj3 )�”}”(hŒ**fb**”h]”hŒfb”…”�”}”(hjÉÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj‹ÐubhŒe’s format. Each entry stores the value for the format’s respective color plane at the same index.”…”�”}”(hj‹Ðh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M*hjåÎubhÎ)�”}”(hŒbThis function does not apply clipping on **dst** (i.e. the destination is at the top-left corner).”h]”(hŒ)This function does not apply clipping on ”…”�”}”(hjâÐh²hh³Nh´Nubj3 )�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hjêÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjâÐubhŒ2 (i.e. the destination is at the top-left corner).”…”�”}”(hjâÐh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M0hjåÎubhÎ)�”}”(hŒVDrivers can use this function for BGR888 devices that don't natively support XRGB8888.”h]”hŒXDrivers can use this function for BGR888 devices that don’t natively support XRGB8888.”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M3hjåÎubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj�h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ(drm_fb_xrgb8888_to_argb8888 (C function)”Œc.drm_fb_xrgb8888_to_argb8888”hNt”auh1j† hj�h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒØvoid drm_fb_xrgb8888_to_argb8888 (struct iosys_map *dst, const unsigned int *dst_pitch, const struct iosys_map *src, const struct drm_framebuffer *fb, const struct drm_rect *clip, struct drm_format_conv_state *state)”h]”j¤ )�”}”(hŒ×void drm_fb_xrgb8888_to_argb8888(struct iosys_map *dst, const unsigned int *dst_pitch, const struct iosys_map *src, const struct drm_framebuffer *fb, const struct drm_rect *clip, struct drm_format_conv_state *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj2Ñh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj.Ñh²hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MJubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjAÑh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj.Ñh²hh³j@Ñh´MJubjÍ )�”}”(hŒdrm_fb_xrgb8888_to_argb8888”h]”jÓ )�”}”(hŒdrm_fb_xrgb8888_to_argb8888”h]”hŒdrm_fb_xrgb8888_to_argb8888”…”�”}”(hjSÑh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjOÑubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj.Ñh²hh³j@Ñh´MJubjÞ)�”}”(hŒ·(struct iosys_map *dst, const unsigned int *dst_pitch, const struct iosys_map *src, const struct drm_framebuffer *fb, const struct drm_rect *clip, struct drm_format_conv_state *state)”h]”(jä)�”}”(hŒstruct iosys_map *dst”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjoÑh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjkÑubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|Ñh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjkÑubh)�”}”(hhh]”jÓ )�”}”(hŒ iosys_map”h]”hŒ iosys_map”…”�”}”(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%)�”}”jjUÑsbŒc.drm_fb_xrgb8888_to_argb8888”†”asbuh1hhjkÑubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­Ñh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjkÑubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj»Ñh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjkÑubjÓ )�”}”(hŒdst”h]”hŒdst”…”�”}”(hjÈÑh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjkÑubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjgÑubjä)�”}”(hŒconst unsigned int *dst_pitch”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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Œunsigned”h]”hŒunsigned”…”�”}”(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Œint”h]”hŒint”…”�”}”(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ÝÑubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj4Òh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÝÑubjÓ )�”}”(hŒ dst_pitch”h]”hŒ dst_pitch”…”�”}”(hjAÒh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÝÑubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjgÑubjä)�”}”(hŒconst struct iosys_map *src”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hjZÒh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjVÒubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjgÒh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjVÒubjª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjuÒh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjVÒubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚Òh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjVÒubh)�”}”(hhh]”jÓ )�”}”(hŒ iosys_map”h]”hŒ iosys_map”…”�”}”(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.drm_fb_xrgb8888_to_argb8888”†”asbuh1hhjVÒubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±Òh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjVÒubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj¿Òh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjVÒubjÓ )�”}”(hŒsrc”h]”hŒsrc”…”�”}”(hjÌÒh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjVÒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjgÑubjä)�”}”(hŒ const struct drm_framebuffer *fb”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(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Œdrm_framebuffer”h]”hŒdrm_framebuffer”…”�”}”(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.drm_fb_xrgb8888_to_argb8888”†”asbuh1hhjáÒubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<Óh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjáÒubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjJÓh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjáÒubjÓ )�”}”(hŒfb”h]”hŒfb”…”�”}”(hjWÓh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjáÒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjgÑubjä)�”}”(hŒconst struct drm_rect *clip”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hjpÓh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjlÓubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}Óh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjlÓubjª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj‹Óh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjlÓubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜Óh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjlÓubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_rect”h]”hŒdrm_rect”…”�”}”(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.drm_fb_xrgb8888_to_argb8888”†”asbuh1hhjlÓubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇÓh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjlÓubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÕÓh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjlÓubjÓ )�”}”(hŒclip”h]”hŒclip”…”�”}”(hjâÓh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjlÓubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjgÑubjä)�”}”(hŒ#struct drm_format_conv_state *state”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Œdrm_format_conv_state”h]”hŒdrm_format_conv_state”…”�”}”(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.drm_fb_xrgb8888_to_argb8888”†”asbuh1hhj÷Óubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7Ôh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj÷Óubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjEÔh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj÷ÓubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hjRÔh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj÷Óubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjgÑubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj.Ñh²hh³j@Ñh´MJubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj*Ñh²hh³j@Ñh´MJubah}”(h]”j%Ñah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j@Ñh´MJhj'Ñh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ(Convert XRGB8888 to ARGB8888 clip buffer”h]”hŒ(Convert XRGB8888 to ARGB8888 clip buffer”…”�”}”(hj|Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MJhjyÔh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj'Ñh²hh³j@Ñh´MJubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j”Ôj$ j”Ôj% ‰j& ‰j' ‰uh1j˜ h²hhj�h³Nh´Nubj) )�”}”(hXx**Parameters** ``struct iosys_map *dst`` Array of ARGB8888 destination buffers ``const unsigned int *dst_pitch`` Array of numbers of bytes between the start of two consecutive scanlines within **dst**; can be NULL if scanlines are stored next to each other. ``const struct iosys_map *src`` Array of XRGB8888 source buffer ``const struct drm_framebuffer *fb`` DRM framebuffer ``const struct drm_rect *clip`` Clip rectangle area to copy ``struct drm_format_conv_state *state`` Transform and conversion state **Description** This function copies parts of a framebuffer to display memory and converts the color format during the process. The parameters **dst**, **dst_pitch** and **src** refer to arrays. Each array must have at least as many entries as there are planes in **fb**'s format. Each entry stores the value for the format's respective color plane at the same index. This function does not apply clipping on **dst** (i.e. the destination is at the top-left corner). Drivers can use this function for ARGB8888 devices that don't support XRGB8888 natively. It sets an opaque alpha channel as part of the conversion.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjžÔh]”hŒ Parameters”…”�”}”(hj Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjœÔubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MNhj˜Ôubjw )�”}”(hhh]”(j| )�”}”(hŒ@``struct iosys_map *dst`` Array of ARGB8888 destination buffers ”h]”(j‚ )�”}”(hŒ``struct iosys_map *dst``”h]”jˆ )�”}”(hj½Ôh]”hŒstruct iosys_map *dst”…”�”}”(hj¿Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj»Ôubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MKhj·Ôubjž )�”}”(hhh]”hÎ)�”}”(hŒ%Array of ARGB8888 destination buffers”h]”hŒ%Array of ARGB8888 destination buffers”…”�”}”(hjÖÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÒÔh´MKhjÓÔubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj·Ôubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÒÔh´MKhj´Ôubj| )�”}”(hŒ³``const unsigned int *dst_pitch`` Array of numbers of bytes between the start of two consecutive scanlines within **dst**; can be NULL if scanlines are stored next to each other. ”h]”(j‚ )�”}”(hŒ!``const unsigned int *dst_pitch``”h]”jˆ )�”}”(hjöÔh]”hŒconst unsigned int *dst_pitch”…”�”}”(hjøÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjôÔubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MMhjðÔubjž )�”}”(hhh]”hÎ)�”}”(hŒ�Array of numbers of bytes between the start of two consecutive scanlines within **dst**; can be NULL if scanlines are stored next to each other.”h]”(hŒPArray of numbers of bytes between the start of two consecutive scanlines within ”…”�”}”(hjÕh²hh³Nh´Nubj3 )�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÕubhŒ9; can be NULL if scanlines are stored next to each other.”…”�”}”(hjÕh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MLhj Õubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjðÔubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j Õh´MMhj´Ôubj| )�”}”(hŒ@``const struct iosys_map *src`` Array of XRGB8888 source buffer ”h]”(j‚ )�”}”(hŒ``const struct iosys_map *src``”h]”jˆ )�”}”(hjBÕh]”hŒconst struct iosys_map *src”…”�”}”(hjDÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj@Õubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MNhj<Õubjž )�”}”(hhh]”hÎ)�”}”(hŒArray of XRGB8888 source buffer”h]”hŒArray of XRGB8888 source buffer”…”�”}”(hj[Õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jWÕh´MNhjXÕubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj<Õubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jWÕh´MNhj´Ôubj| )�”}”(hŒ5``const struct drm_framebuffer *fb`` DRM framebuffer ”h]”(j‚ )�”}”(hŒ$``const struct drm_framebuffer *fb``”h]”jˆ )�”}”(hj{Õh]”hŒ const struct drm_framebuffer *fb”…”�”}”(hj}Õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjyÕubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”•/h´MOhjuÕubjž )�”}”(hhh]”hÎ)�”}”(hŒDRM framebuffer”h]”hŒDRM framebuffer”…”�”}”(hj”Õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j�Õh´MOhj‘Õubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjuÕubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j�Õh´MOhj´Ôubj| )�”}”(hŒ<``const struct drm_rect *clip`` Clip rectangle area to copy ”h]”(j‚ )�”}”(hŒ``const struct drm_rect *clip``”h]”jˆ )�”}”(hj´Õh]”hŒconst struct drm_rect *clip”…”�”}”(hj¶Õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj²Õubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MPhj®Õubjž )�”}”(hhh]”hÎ)�”}”(hŒClip rectangle area to copy”h]”hŒClip rectangle area to copy”…”�”}”(hjÍÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÉÕh´MPhjÊÕubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj®Õubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÉÕh´MPhj´Ôubj| )�”}”(hŒG``struct drm_format_conv_state *state`` Transform and conversion state ”h]”(j‚ )�”}”(hŒ'``struct drm_format_conv_state *state``”h]”jˆ )�”}”(hjíÕh]”hŒ#struct drm_format_conv_state *state”…”�”}”(hjïÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjëÕubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MQhjçÕubjž )�”}”(hhh]”hÎ)�”}”(hŒTransform and conversion state”h]”hŒTransform and conversion state”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÖh´MQhjÖubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjçÕubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÖh´MQhj´Ôubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj˜ÔubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj(Öh]”hŒ Description”…”�”}”(hj*Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj&Öubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MShj˜ÔubhÎ)�”}”(hX_This function copies parts of a framebuffer to display memory and converts the color format during the process. The parameters **dst**, **dst_pitch** and **src** refer to arrays. Each array must have at least as many entries as there are planes in **fb**'s format. Each entry stores the value for the format's respective color plane at the same index.”h]”(hŒThis function copies parts of a framebuffer to display memory and converts the color format during the process. The parameters ”…”�”}”(hj>Öh²hh³Nh´Nubj3 )�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hjFÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj>ÖubhŒ, ”…”�”}”(hj>Öh²hh³Nh´Nubj3 )�”}”(hŒ **dst_pitch**”h]”hŒ dst_pitch”…”�”}”(hjXÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj>ÖubhŒ and ”…”�”}”(hj>Öh²hh³Nh´Nubj3 )�”}”(hŒ**src**”h]”hŒsrc”…”�”}”(hjjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj>ÖubhŒW refer to arrays. Each array must have at least as many entries as there are planes in ”…”�”}”(hj>Öh²hh³Nh´Nubj3 )�”}”(hŒ**fb**”h]”hŒfb”…”�”}”(hj|Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj>ÖubhŒe’s format. Each entry stores the value for the format’s respective color plane at the same index.”…”�”}”(hj>Öh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MRhj˜ÔubhÎ)�”}”(hŒbThis function does not apply clipping on **dst** (i.e. the destination is at the top-left corner).”h]”(hŒ)This function does not apply clipping on ”…”�”}”(hj•Öh²hh³Nh´Nubj3 )�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hj�Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj•ÖubhŒ2 (i.e. the destination is at the top-left corner).”…”�”}”(hj•Öh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MXhj˜ÔubhÎ)�”}”(hŒ“Drivers can use this function for ARGB8888 devices that don't support XRGB8888 natively. It sets an opaque alpha channel as part of the conversion.”h]”hŒ•Drivers can use this function for ARGB8888 devices that don’t support XRGB8888 natively. It sets an opaque alpha channel as part of the conversion.”…”�”}”(hj¶Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M[hj˜Ôubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj�h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ(drm_fb_xrgb8888_to_abgr8888 (C function)”Œc.drm_fb_xrgb8888_to_abgr8888”hNt”auh1j† hj�h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒØvoid drm_fb_xrgb8888_to_abgr8888 (struct iosys_map *dst, const unsigned int *dst_pitch, const struct iosys_map *src, const struct drm_framebuffer *fb, const struct drm_rect *clip, struct drm_format_conv_state *state)”h]”j¤ )�”}”(hŒ×void drm_fb_xrgb8888_to_abgr8888(struct iosys_map *dst, const unsigned int *dst_pitch, const struct iosys_map *src, const struct drm_framebuffer *fb, const struct drm_rect *clip, struct drm_format_conv_state *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjåÖh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjáÖh²hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.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Œdrm_fb_xrgb8888_to_abgr8888”h]”jÓ )�”}”(hŒdrm_fb_xrgb8888_to_abgr8888”h]”hŒdrm_fb_xrgb8888_to_abgr8888”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj×ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjáÖh²hh³jóÖh´MrubjÞ)�”}”(hŒ·(struct iosys_map *dst, const unsigned int *dst_pitch, const struct iosys_map *src, const struct drm_framebuffer *fb, const struct drm_rect *clip, struct drm_format_conv_state *state)”h]”(jä)�”}”(hŒstruct iosys_map *dst”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Œ iosys_map”h]”hŒ iosys_map”…”�”}”(hj@×h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj=×ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jB׌modname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj×sbŒc.drm_fb_xrgb8888_to_abgr8888”†”asbuh1hhj×ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`×h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj×ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjn×h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj×ubjÓ )�”}”(hŒdst”h]”hŒdst”…”�”}”(hj{×h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj×ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj×ubjä)�”}”(hŒconst unsigned int *dst_pitch”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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Œunsigned”h]”hŒunsigned”…”�”}”(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Œint”h]”hŒint”…”�”}”(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�×ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjç×h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�×ubjÓ )�”}”(hŒ dst_pitch”h]”hŒ dst_pitch”…”�”}”(hjô×h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj�×ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj×ubjä)�”}”(hŒconst struct iosys_map *src”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj(Øh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj Øubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5Øh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj Øubh)�”}”(hhh]”jÓ )�”}”(hŒ iosys_map”h]”hŒ iosys_map”…”�”}”(hjFØh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjCØubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jHØŒmodname”NŒ classname”Njé jì )�”}”jï ]”j\׌c.drm_fb_xrgb8888_to_abgr8888”†”asbuh1hhj Øubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdØh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj Øubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjrØh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ØubjÓ )�”}”(hŒsrc”h]”hŒsrc”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj Øubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj×ubjä)�”}”(hŒ const struct drm_framebuffer *fb”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(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Œdrm_framebuffer”h]”hŒdrm_framebuffer”…”�”}”(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.drm_fb_xrgb8888_to_abgr8888”†”asbuh1hhj”Øubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïØh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj”Øubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjýØh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj”ØubjÓ )�”}”(hŒfb”h]”hŒfb”…”�”}”(hj Ùh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj”Øubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj×ubjä)�”}”(hŒconst struct drm_rect *clip”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hj#Ùh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjÙubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0Ùh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÙubjª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj>Ùh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjÙubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKÙh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÙubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_rect”h]”hŒdrm_rect”…”�”}”(hj\Ùh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjYÙubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j^ÙŒmodname”NŒ classname”Njé jì )�”}”jï ]”j\׌c.drm_fb_xrgb8888_to_abgr8888”†”asbuh1hhjÙubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjzÙh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÙubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjˆÙh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÙubjÓ )�”}”(hŒclip”h]”hŒclip”…”�”}”(hj•Ùh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÙubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj×ubjä)�”}”(hŒ#struct drm_format_conv_state *state”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Œdrm_format_conv_state”h]”hŒdrm_format_conv_state”…”�”}”(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.drm_fb_xrgb8888_to_abgr8888”†”asbuh1hhjªÙubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjêÙh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjªÙubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjøÙh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjªÙubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjªÙubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj×ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjáÖh²hh³jóÖh´Mrubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ(Convert XRGB8888 to ABGR8888 clip buffer”h]”hŒ(Convert XRGB8888 to ABGR8888 clip buffer”…”�”}”(hj/Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.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# jGÚj$ jGÚj% ‰j& ‰j' ‰uh1j˜ h²hhj�h³Nh´Nubj) )�”}”(hXx**Parameters** ``struct iosys_map *dst`` Array of ABGR8888 destination buffers ``const unsigned int *dst_pitch`` Array of numbers of bytes between the start of two consecutive scanlines within **dst**; can be NULL if scanlines are stored next to each other. ``const struct iosys_map *src`` Array of XRGB8888 source buffer ``const struct drm_framebuffer *fb`` DRM framebuffer ``const struct drm_rect *clip`` Clip rectangle area to copy ``struct drm_format_conv_state *state`` Transform and conversion state **Description** This function copies parts of a framebuffer to display memory and converts the color format during the process. The parameters **dst**, **dst_pitch** and **src** refer to arrays. Each array must have at least as many entries as there are planes in **fb**'s format. Each entry stores the value for the format's respective color plane at the same index. This function does not apply clipping on **dst** (i.e. the destination is at the top-left corner). Drivers can use this function for ABGR8888 devices that don't support XRGB8888 natively. It sets an opaque alpha channel as part of the conversion.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjQÚh]”hŒ Parameters”…”�”}”(hjSÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjOÚubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MvhjKÚubjw )�”}”(hhh]”(j| )�”}”(hŒ@``struct iosys_map *dst`` Array of ABGR8888 destination buffers ”h]”(j‚ )�”}”(hŒ``struct iosys_map *dst``”h]”jˆ )�”}”(hjpÚh]”hŒstruct iosys_map *dst”…”�”}”(hjrÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjnÚubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MshjjÚubjž )�”}”(hhh]”hÎ)�”}”(hŒ%Array of ABGR8888 destination buffers”h]”hŒ%Array of ABGR8888 destination buffers”…”�”}”(hj‰Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j…Úh´Mshj†Úubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjjÚubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j…Úh´MshjgÚubj| )�”}”(hŒ³``const unsigned int *dst_pitch`` Array of numbers of bytes between the start of two consecutive scanlines within **dst**; can be NULL if scanlines are stored next to each other. ”h]”(j‚ )�”}”(hŒ!``const unsigned int *dst_pitch``”h]”jˆ )�”}”(hj©Úh]”hŒconst unsigned int *dst_pitch”…”�”}”(hj«Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj§Úubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Muhj£Úubjž )�”}”(hhh]”hÎ)�”}”(hŒ�Array of numbers of bytes between the start of two consecutive scanlines within **dst**; can be NULL if scanlines are stored next to each other.”h]”(hŒPArray of numbers of bytes between the start of two consecutive scanlines within ”…”�”}”(hjÂÚh²hh³Nh´Nubj3 )�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hjÊÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÂÚubhŒ9; can be NULL if scanlines are stored next to each other.”…”�”}”(hjÂÚh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Mthj¿Úubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj£Úubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¾Úh´MuhjgÚubj| )�”}”(hŒ@``const struct iosys_map *src`` Array of XRGB8888 source buffer ”h]”(j‚ )�”}”(hŒ``const struct iosys_map *src``”h]”jˆ )�”}”(hjõÚh]”hŒconst struct iosys_map *src”…”�”}”(hj÷Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjóÚubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MvhjïÚubjž )�”}”(hhh]”hÎ)�”}”(hŒArray of XRGB8888 source buffer”h]”hŒArray of XRGB8888 source buffer”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j Ûh´Mvhj Ûubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjïÚubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j Ûh´MvhjgÚubj| )�”}”(hŒ5``const struct drm_framebuffer *fb`` DRM framebuffer ”h]”(j‚ )�”}”(hŒ$``const struct drm_framebuffer *fb``”h]”jˆ )�”}”(hj.Ûh]”hŒ const struct drm_framebuffer *fb”…”�”}”(hj0Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj,Ûubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Mwhj(Ûubjž )�”}”(hhh]”hÎ)�”}”(hŒDRM framebuffer”h]”hŒDRM framebuffer”…”�”}”(hjGÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jCÛh´MwhjDÛubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj(Ûubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jCÛh´MwhjgÚubj| )�”}”(hŒ<``const struct drm_rect *clip`` Clip rectangle area to copy ”h]”(j‚ )�”}”(hŒ``const struct drm_rect *clip``”h]”jˆ )�”}”(hjgÛh]”hŒconst struct drm_rect *clip”…”�”}”(hjiÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjeÛubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MxhjaÛubjž )�”}”(hhh]”hÎ)�”}”(hŒClip rectangle area to copy”h]”hŒClip rectangle area to copy”…”�”}”(hj€Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j|Ûh´Mxhj}Ûubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjaÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j|Ûh´MxhjgÚubj| )�”}”(hŒG``struct drm_format_conv_state *state`` Transform and conversion state ”h]”(j‚ )�”}”(hŒ'``struct drm_format_conv_state *state``”h]”jˆ )�”}”(hj Ûh]”hŒ#struct drm_format_conv_state *state”…”�”}”(hj¢Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjžÛubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MyhjšÛubjž )�”}”(hhh]”hÎ)�”}”(hŒTransform and conversion state”h]”hŒTransform and conversion state”…”�”}”(hj¹Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jµÛh´Myhj¶Ûubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjšÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jµÛh´MyhjgÚubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjKÚubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjÛÛh]”hŒ Description”…”�”}”(hjÝÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÙÛubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M{hjKÚubhÎ)�”}”(hX_This function copies parts of a framebuffer to display memory and converts the color format during the process. The parameters **dst**, **dst_pitch** and **src** refer to arrays. Each array must have at least as many entries as there are planes in **fb**'s format. Each entry stores the value for the format's respective color plane at the same index.”h]”(hŒThis function copies parts of a framebuffer to display memory and converts the color format during the process. The parameters ”…”�”}”(hjñÛh²hh³Nh´Nubj3 )�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hjùÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjñÛubhŒ, ”…”�”}”(hjñÛh²hh³Nh´Nubj3 )�”}”(hŒ **dst_pitch**”h]”hŒ dst_pitch”…”�”}”(hj Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjñÛubhŒ and ”…”�”}”(hjñÛh²hh³Nh´Nubj3 )�”}”(hŒ**src**”h]”hŒsrc”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjñÛubhŒW refer to arrays. Each array must have at least as many entries as there are planes in ”…”�”}”(hjñÛh²hh³Nh´Nubj3 )�”}”(hŒ**fb**”h]”hŒfb”…”�”}”(hj/Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjñÛubhŒe’s format. Each entry stores the value for the format’s respective color plane at the same index.”…”�”}”(hjñÛh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MzhjKÚubhÎ)�”}”(hŒbThis function does not apply clipping on **dst** (i.e. the destination is at the top-left corner).”h]”(hŒ)This function does not apply clipping on ”…”�”}”(hjHÜh²hh³Nh´Nubj3 )�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hjPÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjHÜubhŒ2 (i.e. the destination is at the top-left corner).”…”�”}”(hjHÜh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M€hjKÚubhÎ)�”}”(hŒ“Drivers can use this function for ABGR8888 devices that don't support XRGB8888 natively. It sets an opaque alpha channel as part of the conversion.”h]”hŒ•Drivers can use this function for ABGR8888 devices that don’t support XRGB8888 natively. It sets an opaque alpha channel as part of the conversion.”…”�”}”(hjiÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MƒhjKÚubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj�h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ(drm_fb_xrgb8888_to_xbgr8888 (C function)”Œc.drm_fb_xrgb8888_to_xbgr8888”hNt”auh1j† hj�h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒØvoid drm_fb_xrgb8888_to_xbgr8888 (struct iosys_map *dst, const unsigned int *dst_pitch, const struct iosys_map *src, const struct drm_framebuffer *fb, const struct drm_rect *clip, struct drm_format_conv_state *state)”h]”j¤ )�”}”(hŒ×void drm_fb_xrgb8888_to_xbgr8888(struct iosys_map *dst, const unsigned int *dst_pitch, const struct iosys_map *src, const struct drm_framebuffer *fb, const struct drm_rect *clip, struct drm_format_conv_state *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj˜Üh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj”Üh²hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.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Œdrm_fb_xrgb8888_to_xbgr8888”h]”jÓ )�”}”(hŒdrm_fb_xrgb8888_to_xbgr8888”h]”hŒdrm_fb_xrgb8888_to_xbgr8888”…”�”}”(hj¹Üh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjµÜubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj”Üh²hh³j¦Üh´MœubjÞ)�”}”(hŒ·(struct iosys_map *dst, const unsigned int *dst_pitch, const struct iosys_map *src, const struct drm_framebuffer *fb, const struct drm_rect *clip, struct drm_format_conv_state *state)”h]”(jä)�”}”(hŒstruct iosys_map *dst”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Œ iosys_map”h]”hŒ iosys_map”…”�”}”(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%)�”}”jj»ÜsbŒc.drm_fb_xrgb8888_to_xbgr8888”†”asbuh1hhjÑÜubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÑÜubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj!Ýh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÑÜubjÓ )�”}”(hŒdst”h]”hŒdst”…”�”}”(hj.Ýh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÑÜubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÍÜubjä)�”}”(hŒconst unsigned int *dst_pitch”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hjGÝh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjCÝubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTÝh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjCÝubj¦)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjbÝh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjCÝubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjpÝh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjCÝubj¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj~Ýh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjCÝubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒÝh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjCÝubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjšÝh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjCÝubjÓ )�”}”(hŒ dst_pitch”h]”hŒ dst_pitch”…”�”}”(hj§Ýh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjCÝubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÍÜubjä)�”}”(hŒconst struct iosys_map *src”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(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Œ iosys_map”h]”hŒ iosys_map”…”�”}”(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.drm_fb_xrgb8888_to_xbgr8888”†”asbuh1hhj¼Ýubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¼Ýubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj%Þh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¼ÝubjÓ )�”}”(hŒsrc”h]”hŒsrc”…”�”}”(hj2Þh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¼Ýubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÍÜubjä)�”}”(hŒ const struct drm_framebuffer *fb”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hjKÞh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjGÞubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXÞh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjGÞubjª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjfÞh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjGÞubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjsÞh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjGÞubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_framebuffer”h]”hŒdrm_framebuffer”…”�”}”(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.drm_fb_xrgb8888_to_xbgr8888”†”asbuh1hhjGÞubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢Þh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjGÞubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj°Þh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjGÞubjÓ )�”}”(hŒfb”h]”hŒfb”…”�”}”(hj½Þh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjGÞubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÍÜubjä)�”}”(hŒconst struct drm_rect *clip”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(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Œdrm_rect”h]”hŒdrm_rect”…”�”}”(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.drm_fb_xrgb8888_to_xbgr8888”†”asbuh1hhjÒÞubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-ßh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÒÞubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj;ßh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÒÞubjÓ )�”}”(hŒclip”h]”hŒclip”…”�”}”(hjHßh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÒÞubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÍÜubjä)�”}”(hŒ#struct drm_format_conv_state *state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjaßh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj]ßubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnßh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj]ßubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_format_conv_state”h]”hŒdrm_format_conv_state”…”�”}”(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.drm_fb_xrgb8888_to_xbgr8888”†”asbuh1hhj]ßubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�ßh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj]ßubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj«ßh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj]ßubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hj¸ßh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj]ßubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÍÜubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj”Üh²hh³j¦Üh´Mœubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ(Convert XRGB8888 to XBGR8888 clip buffer”h]”hŒ(Convert XRGB8888 to XBGR8888 clip buffer”…”�”}”(hjâßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.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²hhj�h³Nh´Nubj) )�”}”(hX=**Parameters** ``struct iosys_map *dst`` Array of XBGR8888 destination buffers ``const unsigned int *dst_pitch`` Array of numbers of bytes between the start of two consecutive scanlines within **dst**; can be NULL if scanlines are stored next to each other. ``const struct iosys_map *src`` Array of XRGB8888 source buffer ``const struct drm_framebuffer *fb`` DRM framebuffer ``const struct drm_rect *clip`` Clip rectangle area to copy ``struct drm_format_conv_state *state`` Transform and conversion state **Description** This function copies parts of a framebuffer to display memory and converts the color format during the process. The parameters **dst**, **dst_pitch** and **src** refer to arrays. Each array must have at least as many entries as there are planes in **fb**'s format. Each entry stores the value for the format's respective color plane at the same index. This function does not apply clipping on **dst** (i.e. the destination is at the top-left corner). Drivers can use this function for XBGR8888 devices that don't support XRGB8888 natively.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjàh]”hŒ Parameters”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjàubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M hjþßubjw )�”}”(hhh]”(j| )�”}”(hŒ@``struct iosys_map *dst`` Array of XBGR8888 destination buffers ”h]”(j‚ )�”}”(hŒ``struct iosys_map *dst``”h]”jˆ )�”}”(hj#àh]”hŒstruct iosys_map *dst”…”�”}”(hj%àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj!àubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M�hjàubjž )�”}”(hhh]”hÎ)�”}”(hŒ%Array of XBGR8888 destination buffers”h]”hŒ%Array of XBGR8888 destination buffers”…”�”}”(hj<àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j8àh´M�hj9àubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjàubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j8àh´M�hjàubj| )�”}”(hŒ³``const unsigned int *dst_pitch`` Array of numbers of bytes between the start of two consecutive scanlines within **dst**; can be NULL if scanlines are stored next to each other. ”h]”(j‚ )�”}”(hŒ!``const unsigned int *dst_pitch``”h]”jˆ )�”}”(hj\àh]”hŒconst unsigned int *dst_pitch”…”�”}”(hj^àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjZàubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MŸhjVàubjž )�”}”(hhh]”hÎ)�”}”(hŒ�Array of numbers of bytes between the start of two consecutive scanlines within **dst**; can be NULL if scanlines are stored next to each other.”h]”(hŒPArray of numbers of bytes between the start of two consecutive scanlines within ”…”�”}”(hjuàh²hh³Nh´Nubj3 )�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hj}àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjuàubhŒ9; can be NULL if scanlines are stored next to each other.”…”�”}”(hjuàh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Mžhjràubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjVàubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jqàh´MŸhjàubj| )�”}”(hŒ@``const struct iosys_map *src`` Array of XRGB8888 source buffer ”h]”(j‚ )�”}”(hŒ``const struct iosys_map *src``”h]”jˆ )�”}”(hj¨àh]”hŒconst struct iosys_map *src”…”�”}”(hjªàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¦àubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M hj¢àubjž )�”}”(hhh]”hÎ)�”}”(hŒArray of XRGB8888 source buffer”h]”hŒArray of XRGB8888 source buffer”…”�”}”(hjÁàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j½àh´M hj¾àubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¢àubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j½àh´M hjàubj| )�”}”(hŒ5``const struct drm_framebuffer *fb`` DRM framebuffer ”h]”(j‚ )�”}”(hŒ$``const struct drm_framebuffer *fb``”h]”jˆ )�”}”(hjáàh]”hŒ const struct drm_framebuffer *fb”…”�”}”(hjãàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjßàubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M¡hjÛàubjž )�”}”(hhh]”hÎ)�”}”(hŒDRM framebuffer”h]”hŒDRM framebuffer”…”�”}”(hjúàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jöàh´M¡hj÷àubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÛàubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jöàh´M¡hjàubj| )�”}”(hŒ<``const struct drm_rect *clip`` Clip rectangle area to copy ”h]”(j‚ )�”}”(hŒ``const struct drm_rect *clip``”h]”jˆ )�”}”(hjáh]”hŒconst struct drm_rect *clip”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjáubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M¢hjáubjž )�”}”(hhh]”hÎ)�”}”(hŒClip rectangle area to copy”h]”hŒClip rectangle area to copy”…”�”}”(hj3áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j/áh´M¢hj0áubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjáubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j/áh´M¢hjàubj| )�”}”(hŒG``struct drm_format_conv_state *state`` Transform and conversion state ”h]”(j‚ )�”}”(hŒ'``struct drm_format_conv_state *state``”h]”jˆ )�”}”(hjSáh]”hŒ#struct drm_format_conv_state *state”…”�”}”(hjUáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjQáubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M£hjMáubjž )�”}”(hhh]”hÎ)�”}”(hŒTransform and conversion state”h]”hŒTransform and conversion state”…”�”}”(hjláh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jháh´M£hjiáubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjMáubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jháh´M£hjàubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjþßubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjŽáh]”hŒ Description”…”�”}”(hj�áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjŒáubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M¥hjþßubhÎ)�”}”(hX_This function copies parts of a framebuffer to display memory and converts the color format during the process. The parameters **dst**, **dst_pitch** and **src** refer to arrays. Each array must have at least as many entries as there are planes in **fb**'s format. Each entry stores the value for the format's respective color plane at the same index.”h]”(hŒThis function copies parts of a framebuffer to display memory and converts the color format during the process. The parameters ”…”�”}”(hj¤áh²hh³Nh´Nubj3 )�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hj¬áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¤áubhŒ, ”…”�”}”(hj¤áh²hh³Nh´Nubj3 )�”}”(hŒ **dst_pitch**”h]”hŒ dst_pitch”…”�”}”(hj¾áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¤áubhŒ and ”…”�”}”(hj¤áh²hh³Nh´Nubj3 )�”}”(hŒ**src**”h]”hŒsrc”…”�”}”(hjÐáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¤áubhŒW refer to arrays. Each array must have at least as many entries as there are planes in ”…”�”}”(hj¤áh²hh³Nh´Nubj3 )�”}”(hŒ**fb**”h]”hŒfb”…”�”}”(hjâáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¤áubhŒe’s format. Each entry stores the value for the format’s respective color plane at the same index.”…”�”}”(hj¤áh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M¤hjþßubhÎ)�”}”(hŒbThis function does not apply clipping on **dst** (i.e. the destination is at the top-left corner).”h]”(hŒ)This function does not apply clipping on ”…”�”}”(hjûáh²hh³Nh´Nubj3 )�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjûáubhŒ2 (i.e. the destination is at the top-left corner).”…”�”}”(hjûáh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MªhjþßubhÎ)�”}”(hŒXDrivers can use this function for XBGR8888 devices that don't support XRGB8888 natively.”h]”hŒZDrivers can use this function for XBGR8888 devices that don’t support XRGB8888 natively.”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M­hjþßubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj�h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ(drm_fb_xrgb8888_to_bgrx8888 (C function)”Œc.drm_fb_xrgb8888_to_bgrx8888”hNt”auh1j† hj�h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒØvoid drm_fb_xrgb8888_to_bgrx8888 (struct iosys_map *dst, const unsigned int *dst_pitch, const struct iosys_map *src, const struct drm_framebuffer *fb, const struct drm_rect *clip, struct drm_format_conv_state *state)”h]”j¤ )�”}”(hŒ×void drm_fb_xrgb8888_to_bgrx8888(struct iosys_map *dst, const unsigned int *dst_pitch, const struct iosys_map *src, const struct drm_framebuffer *fb, const struct drm_rect *clip, struct drm_format_conv_state *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjKâh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjGâh²hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MÆubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZâh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjGâh²hh³jYâh´MÆubjÍ )�”}”(hŒdrm_fb_xrgb8888_to_bgrx8888”h]”jÓ )�”}”(hŒdrm_fb_xrgb8888_to_bgrx8888”h]”hŒdrm_fb_xrgb8888_to_bgrx8888”…”�”}”(hjlâh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjhâubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjGâh²hh³jYâh´MÆubjÞ)�”}”(hŒ·(struct iosys_map *dst, const unsigned int *dst_pitch, const struct iosys_map *src, const struct drm_framebuffer *fb, const struct drm_rect *clip, struct drm_format_conv_state *state)”h]”(jä)�”}”(hŒstruct iosys_map *dst”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Œ iosys_map”h]”hŒ iosys_map”…”�”}”(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%)�”}”jjnâsbŒc.drm_fb_xrgb8888_to_bgrx8888”†”asbuh1hhj„âubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆâh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj„âubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÔâh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj„âubjÓ )�”}”(hŒdst”h]”hŒdst”…”�”}”(hjáâh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj„âubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj€âubjä)�”}”(hŒconst unsigned int *dst_pitch”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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Œunsigned”h]”hŒunsigned”…”�”}”(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Œint”h]”hŒint”…”�”}”(hj1ã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öâubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjMãh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjöâubjÓ )�”}”(hŒ dst_pitch”h]”hŒ dst_pitch”…”�”}”(hjZãh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjöâubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj€âubjä)�”}”(hŒconst struct iosys_map *src”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hjsãh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjoãubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€ãh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjoãubjª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjŽãh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjoãubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›ãh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjoãubh)�”}”(hhh]”jÓ )�”}”(hŒ iosys_map”h]”hŒ iosys_map”…”�”}”(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.drm_fb_xrgb8888_to_bgrx8888”†”asbuh1hhjoãubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊãh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjoãubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjØãh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjoãubjÓ )�”}”(hŒsrc”h]”hŒsrc”…”�”}”(hjåãh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjoãubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj€âubjä)�”}”(hŒ const struct drm_framebuffer *fb”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(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Œdrm_framebuffer”h]”hŒdrm_framebuffer”…”�”}”(hj7äh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj4äubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j9äŒmodname”NŒ classname”Njé jì )�”}”jï ]”jÂâŒc.drm_fb_xrgb8888_to_bgrx8888”†”asbuh1hhjúãubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjUäh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjúãubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjcäh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjúãubjÓ )�”}”(hŒfb”h]”hŒfb”…”�”}”(hjpäh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjúãubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj€âubjä)�”}”(hŒconst struct drm_rect *clip”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(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Œdrm_rect”h]”hŒdrm_rect”…”�”}”(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.drm_fb_xrgb8888_to_bgrx8888”†”asbuh1hhj…äubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjàäh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj…äubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjîäh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj…äubjÓ )�”}”(hŒclip”h]”hŒclip”…”�”}”(hjûäh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj…äubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj€âubjä)�”}”(hŒ#struct drm_format_conv_state *state”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Œdrm_format_conv_state”h]”hŒdrm_format_conv_state”…”�”}”(hj2åh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj/åubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j4åŒmodname”NŒ classname”Njé jì )�”}”jï ]”jÂâŒc.drm_fb_xrgb8888_to_bgrx8888”†”asbuh1hhjåubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPåh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjåubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj^åh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjåubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hjkåh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjåubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj€âubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjGâh²hh³jYâh´MÆubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjCâh²hh³jYâh´MÆubah}”(h]”j>âah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jYâh´MÆhj@âh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ(Convert XRGB8888 to BGRX8888 clip buffer”h]”hŒ(Convert XRGB8888 to BGRX8888 clip buffer”…”�”}”(hj•åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MÆhj’åh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj@âh²hh³jYâh´MÆubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j­åj$ j­åj% ‰j& ‰j' ‰uh1j˜ h²hhj�h³Nh´Nubj) )�”}”(hX=**Parameters** ``struct iosys_map *dst`` Array of BGRX8888 destination buffers ``const unsigned int *dst_pitch`` Array of numbers of bytes between the start of two consecutive scanlines within **dst**; can be NULL if scanlines are stored next to each other. ``const struct iosys_map *src`` Array of XRGB8888 source buffer ``const struct drm_framebuffer *fb`` DRM framebuffer ``const struct drm_rect *clip`` Clip rectangle area to copy ``struct drm_format_conv_state *state`` Transform and conversion state **Description** This function copies parts of a framebuffer to display memory and converts the color format during the process. The parameters **dst**, **dst_pitch** and **src** refer to arrays. Each array must have at least as many entries as there are planes in **fb**'s format. Each entry stores the value for the format's respective color plane at the same index. This function does not apply clipping on **dst** (i.e. the destination is at the top-left corner). Drivers can use this function for BGRX8888 devices that don't support XRGB8888 natively.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj·åh]”hŒ Parameters”…”�”}”(hj¹åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjµåubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MÊhj±åubjw )�”}”(hhh]”(j| )�”}”(hŒ@``struct iosys_map *dst`` Array of BGRX8888 destination buffers ”h]”(j‚ )�”}”(hŒ``struct iosys_map *dst``”h]”jˆ )�”}”(hjÖåh]”hŒstruct iosys_map *dst”…”�”}”(hjØåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÔåubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MÇhjÐåubjž )�”}”(hhh]”hÎ)�”}”(hŒ%Array of BGRX8888 destination buffers”h]”hŒ%Array of BGRX8888 destination buffers”…”�”}”(hjïåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jëåh´MÇhjìåubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÐåubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jëåh´MÇhjÍåubj| )�”}”(hŒ³``const unsigned int *dst_pitch`` Array of numbers of bytes between the start of two consecutive scanlines within **dst**; can be NULL if scanlines are stored next to each other. ”h]”(j‚ )�”}”(hŒ!``const unsigned int *dst_pitch``”h]”jˆ )�”}”(hjæh]”hŒconst unsigned int *dst_pitch”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj æubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MÉhj æubjž )�”}”(hhh]”hÎ)�”}”(hŒ�Array of numbers of bytes between the start of two consecutive scanlines within **dst**; can be NULL if scanlines are stored next to each other.”h]”(hŒPArray of numbers of bytes between the start of two consecutive scanlines within ”…”�”}”(hj(æh²hh³Nh´Nubj3 )�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hj0æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj(æubhŒ9; can be NULL if scanlines are stored next to each other.”…”�”}”(hj(æh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MÈhj%æubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj æubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j$æh´MÉhjÍåubj| )�”}”(hŒ@``const struct iosys_map *src`` Array of XRGB8888 source buffer ”h]”(j‚ )�”}”(hŒ``const struct iosys_map *src``”h]”jˆ )�”}”(hj[æh]”hŒconst struct iosys_map *src”…”�”}”(hj]æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjYæubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MÊhjUæubjž )�”}”(hhh]”hÎ)�”}”(hŒArray of XRGB8888 source buffer”h]”hŒArray of XRGB8888 source buffer”…”�”}”(hjtæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jpæh´MÊhjqæubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjUæubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jpæh´MÊhjÍåubj| )�”}”(hŒ5``const struct drm_framebuffer *fb`` DRM framebuffer ”h]”(j‚ )�”}”(hŒ$``const struct drm_framebuffer *fb``”h]”jˆ )�”}”(hj”æh]”hŒ const struct drm_framebuffer *fb”…”�”}”(hj–æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj’æubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MËhjŽæubjž )�”}”(hhh]”hÎ)�”}”(hŒDRM framebuffer”h]”hŒDRM framebuffer”…”�”}”(hj­æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j©æh´MËhjªæubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjŽæubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j©æh´MËhjÍåubj| )�”}”(hŒ<``const struct drm_rect *clip`` Clip rectangle area to copy ”h]”(j‚ )�”}”(hŒ``const struct drm_rect *clip``”h]”jˆ )�”}”(hjÍæh]”hŒconst struct drm_rect *clip”…”�”}”(hjÏæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjËæubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MÌhjÇæubjž )�”}”(hhh]”hÎ)�”}”(hŒClip rectangle area to copy”h]”hŒClip rectangle area to copy”…”�”}”(hjææh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jâæh´MÌhjãæubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÇæubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jâæh´MÌhjÍåubj| )�”}”(hŒG``struct drm_format_conv_state *state`` Transform and conversion state ”h]”(j‚ )�”}”(hŒ'``struct drm_format_conv_state *state``”h]”jˆ )�”}”(hjçh]”hŒ#struct drm_format_conv_state *state”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjçubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MÍhjçubjž )�”}”(hhh]”hÎ)�”}”(hŒTransform and conversion state”h]”hŒTransform and conversion state”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jçh´MÍhjçubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjçubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jçh´MÍhjÍåubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj±åubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjAçh]”hŒ Description”…”�”}”(hjCçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj?çubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MÏhj±åubhÎ)�”}”(hX_This function copies parts of a framebuffer to display memory and converts the color format during the process. The parameters **dst**, **dst_pitch** and **src** refer to arrays. Each array must have at least as many entries as there are planes in **fb**'s format. Each entry stores the value for the format's respective color plane at the same index.”h]”(hŒThis function copies parts of a framebuffer to display memory and converts the color format during the process. The parameters ”…”�”}”(hjWçh²hh³Nh´Nubj3 )�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hj_çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjWçubhŒ, ”…”�”}”(hjWçh²hh³Nh´Nubj3 )�”}”(hŒ **dst_pitch**”h]”hŒ dst_pitch”…”�”}”(hjqçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjWçubhŒ and ”…”�”}”(hjWçh²hh³Nh´Nubj3 )�”}”(hŒ**src**”h]”hŒsrc”…”�”}”(hjƒçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjWçubhŒW refer to arrays. Each array must have at least as many entries as there are planes in ”…”�”}”(hjWçh²hh³Nh´Nubj3 )�”}”(hŒ**fb**”h]”hŒfb”…”�”}”(hj•çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjWçubhŒe’s format. Each entry stores the value for the format’s respective color plane at the same index.”…”�”}”(hjWçh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MÎhj±åubhÎ)�”}”(hŒbThis function does not apply clipping on **dst** (i.e. the destination is at the top-left corner).”h]”(hŒ)This function does not apply clipping on ”…”�”}”(hj®çh²hh³Nh´Nubj3 )�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hj¶çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj®çubhŒ2 (i.e. the destination is at the top-left corner).”…”�”}”(hj®çh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MÔhj±åubhÎ)�”}”(hŒXDrivers can use this function for BGRX8888 devices that don't support XRGB8888 natively.”h]”hŒZDrivers can use this function for BGRX8888 devices that don’t support XRGB8888 natively.”…”�”}”(hjÏçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M×hj±åubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj�h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ+drm_fb_xrgb8888_to_xrgb2101010 (C function)”Œ c.drm_fb_xrgb8888_to_xrgb2101010”hNt”auh1j† hj�h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒÛvoid drm_fb_xrgb8888_to_xrgb2101010 (struct iosys_map *dst, const unsigned int *dst_pitch, const struct iosys_map *src, const struct drm_framebuffer *fb, const struct drm_rect *clip, struct drm_format_conv_state *state)”h]”j¤ )�”}”(hŒÚvoid drm_fb_xrgb8888_to_xrgb2101010(struct iosys_map *dst, const unsigned int *dst_pitch, const struct iosys_map *src, const struct drm_framebuffer *fb, const struct drm_rect *clip, struct drm_format_conv_state *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjþçh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjúçh²hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.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Œdrm_fb_xrgb8888_to_xrgb2101010”h]”jÓ )�”}”(hŒdrm_fb_xrgb8888_to_xrgb2101010”h]”hŒdrm_fb_xrgb8888_to_xrgb2101010”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjèubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjúçh²hh³j èh´MðubjÞ)�”}”(hŒ·(struct iosys_map *dst, const unsigned int *dst_pitch, const struct iosys_map *src, const struct drm_framebuffer *fb, const struct drm_rect *clip, struct drm_format_conv_state *state)”h]”(jä)�”}”(hŒstruct iosys_map *dst”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj;èh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj7èubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHèh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj7èubh)�”}”(hhh]”jÓ )�”}”(hŒ iosys_map”h]”hŒ iosys_map”…”�”}”(hjYèh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjVèubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j[èŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj!èsbŒ c.drm_fb_xrgb8888_to_xrgb2101010”†”asbuh1hhj7èubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyèh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj7èubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj‡èh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj7èubjÓ )�”}”(hŒdst”h]”hŒdst”…”�”}”(hj”èh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj7èubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj3èubjä)�”}”(hŒconst unsigned int *dst_pitch”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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Œunsigned”h]”hŒunsigned”…”�”}”(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Œint”h]”hŒint”…”�”}”(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©èubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj©èubjÓ )�”}”(hŒ dst_pitch”h]”hŒ dst_pitch”…”�”}”(hj éh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj©èubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj3èubjä)�”}”(hŒconst struct iosys_map *src”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hj&éh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj"éubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3éh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj"éubjª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjAéh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj"éubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNéh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj"éubh)�”}”(hhh]”jÓ )�”}”(hŒ iosys_map”h]”hŒ iosys_map”…”�”}”(hj_éh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj\éubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jaéŒmodname”NŒ classname”Njé jì )�”}”jï ]”juèŒ c.drm_fb_xrgb8888_to_xrgb2101010”†”asbuh1hhj"éubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}éh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj"éubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj‹éh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj"éubjÓ )�”}”(hŒsrc”h]”hŒsrc”…”�”}”(hj˜éh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj"éubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj3èubjä)�”}”(hŒ const struct drm_framebuffer *fb”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(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Œdrm_framebuffer”h]”hŒdrm_framebuffer”…”�”}”(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ï ]”juèŒ c.drm_fb_xrgb8888_to_xrgb2101010”†”asbuh1hhj­éubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj­éubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj­éubjÓ )�”}”(hŒfb”h]”hŒfb”…”�”}”(hj#êh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj­éubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj3èubjä)�”}”(hŒconst struct drm_rect *clip”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hj<êh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj8êubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIêh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj8êubjª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjWêh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj8êubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdêh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj8êubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_rect”h]”hŒdrm_rect”…”�”}”(hjuêh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjrêubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jwêŒmodname”NŒ classname”Njé jì )�”}”jï ]”juèŒ c.drm_fb_xrgb8888_to_xrgb2101010”†”asbuh1hhj8êubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“êh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj8êubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj¡êh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj8êubjÓ )�”}”(hŒclip”h]”hŒclip”…”�”}”(hj®êh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj8êubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj3èubjä)�”}”(hŒ#struct drm_format_conv_state *state”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Œdrm_format_conv_state”h]”hŒdrm_format_conv_state”…”�”}”(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ï ]”juèŒ c.drm_fb_xrgb8888_to_xrgb2101010”†”asbuh1hhjÃêubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÃêubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÃêubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÃêubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj3èubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjúçh²hh³j èh´Mðubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ+Convert XRGB8888 to XRGB2101010 clip buffer”h]”hŒ+Convert XRGB8888 to XRGB2101010 clip buffer”…”�”}”(hjHëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”•h´MðhjEë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²hhj�h³Nh´Nubj) )�”}”(hXt**Parameters** ``struct iosys_map *dst`` Array of XRGB2101010 destination buffers ``const unsigned int *dst_pitch`` Array of numbers of bytes between the start of two consecutive scanlines within **dst**; can be NULL if scanlines are stored next to each other. ``const struct iosys_map *src`` Array of XRGB8888 source buffers ``const struct drm_framebuffer *fb`` DRM framebuffer ``const struct drm_rect *clip`` Clip rectangle area to copy ``struct drm_format_conv_state *state`` Transform and conversion state **Description** This function copies parts of a framebuffer to display memory and converts the color format during the process. Destination and framebuffer formats must match. The parameters **dst**, **dst_pitch** and **src** refer to arrays. Each array must have at least as many entries as there are planes in **fb**'s format. Each entry stores the value for the format's respective color plane at the same index. This function does not apply clipping on **dst** (i.e. the destination is at the top-left corner). Drivers can use this function for XRGB2101010 devices that don't support XRGB8888 natively.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjjëh]”hŒ Parameters”…”�”}”(hjlëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjhëubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Môhjdëubjw )�”}”(hhh]”(j| )�”}”(hŒC``struct iosys_map *dst`` Array of XRGB2101010 destination buffers ”h]”(j‚ )�”}”(hŒ``struct iosys_map *dst``”h]”jˆ )�”}”(hj‰ëh]”hŒstruct iosys_map *dst”…”�”}”(hj‹ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj‡ëubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Mñhjƒëubjž )�”}”(hhh]”hÎ)�”}”(hŒ(Array of XRGB2101010 destination buffers”h]”hŒ(Array of XRGB2101010 destination buffers”…”�”}”(hj¢ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jžëh´MñhjŸëubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjƒëubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jžëh´Mñhj€ëubj| )�”}”(hŒ³``const unsigned int *dst_pitch`` Array of numbers of bytes between the start of two consecutive scanlines within **dst**; can be NULL if scanlines are stored next to each other. ”h]”(j‚ )�”}”(hŒ!``const unsigned int *dst_pitch``”h]”jˆ )�”}”(hjÂëh]”hŒconst unsigned int *dst_pitch”…”�”}”(hjÄëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÀëubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Móhj¼ëubjž )�”}”(hhh]”hÎ)�”}”(hŒ�Array of numbers of bytes between the start of two consecutive scanlines within **dst**; can be NULL if scanlines are stored next to each other.”h]”(hŒPArray of numbers of bytes between the start of two consecutive scanlines within ”…”�”}”(hjÛëh²hh³Nh´Nubj3 )�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hjãëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÛëubhŒ9; can be NULL if scanlines are stored next to each other.”…”�”}”(hjÛëh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MòhjØëubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¼ëubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j×ëh´Móhj€ëubj| )�”}”(hŒA``const struct iosys_map *src`` Array of XRGB8888 source buffers ”h]”(j‚ )�”}”(hŒ``const struct iosys_map *src``”h]”jˆ )�”}”(hjìh]”hŒconst struct iosys_map *src”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj ìubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Môhjìubjž )�”}”(hhh]”hÎ)�”}”(hŒ Array of XRGB8888 source buffers”h]”hŒ Array of XRGB8888 source buffers”…”�”}”(hj'ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j#ìh´Môhj$ìubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjìubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j#ìh´Môhj€ëubj| )�”}”(hŒ5``const struct drm_framebuffer *fb`` DRM framebuffer ”h]”(j‚ )�”}”(hŒ$``const struct drm_framebuffer *fb``”h]”jˆ )�”}”(hjGìh]”hŒ const struct drm_framebuffer *fb”…”�”}”(hjIìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjEìubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MõhjAìubjž )�”}”(hhh]”hÎ)�”}”(hŒDRM framebuffer”h]”hŒDRM framebuffer”…”�”}”(hj`ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j\ìh´Mõhj]ìubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjAìubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j\ìh´Mõhj€ëubj| )�”}”(hŒ<``const struct drm_rect *clip`` Clip rectangle area to copy ”h]”(j‚ )�”}”(hŒ``const struct drm_rect *clip``”h]”jˆ )�”}”(hj€ìh]”hŒconst struct drm_rect *clip”…”�”}”(hj‚ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj~ìubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Möhjzìubjž )�”}”(hhh]”hÎ)�”}”(hŒClip rectangle area to copy”h]”hŒClip rectangle area to copy”…”�”}”(hj™ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j•ìh´Möhj–ìubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjzìubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j•ìh´Möhj€ëubj| )�”}”(hŒG``struct drm_format_conv_state *state`` Transform and conversion state ”h]”(j‚ )�”}”(hŒ'``struct drm_format_conv_state *state``”h]”jˆ )�”}”(hj¹ìh]”hŒ#struct drm_format_conv_state *state”…”�”}”(hj»ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj·ìubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M÷hj³ìubjž )�”}”(hhh]”hÎ)�”}”(hŒTransform and conversion state”h]”hŒTransform and conversion state”…”�”}”(hjÒìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÎìh´M÷hjÏìubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj³ìubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÎìh´M÷hj€ëubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjdëubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjôìh]”hŒ Description”…”�”}”(hjöìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjòìubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MùhjdëubhÎ)�”}”(hX�This function copies parts of a framebuffer to display memory and converts the color format during the process. Destination and framebuffer formats must match. The parameters **dst**, **dst_pitch** and **src** refer to arrays. Each array must have at least as many entries as there are planes in **fb**'s format. Each entry stores the value for the format's respective color plane at the same index.”h]”(hŒ¯This function copies parts of a framebuffer to display memory and converts the color format during the process. Destination and framebuffer formats must match. The parameters ”…”�”}”(hj íh²hh³Nh´Nubj3 )�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj íubhŒ, ”…”�”}”(hj íh²hh³Nh´Nubj3 )�”}”(hŒ **dst_pitch**”h]”hŒ dst_pitch”…”�”}”(hj$íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj íubhŒ and ”…”�”}”(hj íh²hh³Nh´Nubj3 )�”}”(hŒ**src**”h]”hŒsrc”…”�”}”(hj6íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj íubhŒW refer to arrays. Each array must have at least as many entries as there are planes in ”…”�”}”(hj íh²hh³Nh´Nubj3 )�”}”(hŒ**fb**”h]”hŒfb”…”�”}”(hjHíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj íubhŒe’s format. Each entry stores the value for the format’s respective color plane at the same index.”…”�”}”(hj íh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MøhjdëubhÎ)�”}”(hŒbThis function does not apply clipping on **dst** (i.e. the destination is at the top-left corner).”h]”(hŒ)This function does not apply clipping on ”…”�”}”(hjaíh²hh³Nh´Nubj3 )�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hjiíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjaíubhŒ2 (i.e. the destination is at the top-left corner).”…”�”}”(hjaíh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MþhjdëubhÎ)�”}”(hŒ[Drivers can use this function for XRGB2101010 devices that don't support XRGB8888 natively.”h]”hŒ]Drivers can use this function for XRGB2101010 devices that don’t support XRGB8888 natively.”…”�”}”(hj‚íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Mhjdëubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj�h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ+drm_fb_xrgb8888_to_argb2101010 (C function)”Œ c.drm_fb_xrgb8888_to_argb2101010”hNt”auh1j† hj�h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒÛvoid drm_fb_xrgb8888_to_argb2101010 (struct iosys_map *dst, const unsigned int *dst_pitch, const struct iosys_map *src, const struct drm_framebuffer *fb, const struct drm_rect *clip, struct drm_format_conv_state *state)”h]”j¤ )�”}”(hŒÚvoid drm_fb_xrgb8888_to_argb2101010(struct iosys_map *dst, const unsigned int *dst_pitch, const struct iosys_map *src, const struct drm_framebuffer *fb, const struct drm_rect *clip, struct drm_format_conv_state *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj±íh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj­íh²hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀíh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj­íh²hh³j¿íh´MubjÍ )�”}”(hŒdrm_fb_xrgb8888_to_argb2101010”h]”jÓ )�”}”(hŒdrm_fb_xrgb8888_to_argb2101010”h]”hŒdrm_fb_xrgb8888_to_argb2101010”…”�”}”(hjÒíh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÎíubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj­íh²hh³j¿íh´MubjÞ)�”}”(hŒ·(struct iosys_map *dst, const unsigned int *dst_pitch, const struct iosys_map *src, const struct drm_framebuffer *fb, const struct drm_rect *clip, struct drm_format_conv_state *state)”h]”(jä)�”}”(hŒstruct iosys_map *dst”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Œ iosys_map”h]”hŒ iosys_map”…”�”}”(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%)�”}”jjÔísbŒ c.drm_fb_xrgb8888_to_argb2101010”†”asbuh1hhjêíubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,îh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjêíubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj:îh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjêíubjÓ )�”}”(hŒdst”h]”hŒdst”…”�”}”(hjGîh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjêíubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjæíubjä)�”}”(hŒconst unsigned int *dst_pitch”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hj`îh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj\îubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjmîh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj\îubj¦)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(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Œint”h]”hŒint”…”�”}”(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\îubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj³îh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj\îubjÓ )�”}”(hŒ dst_pitch”h]”hŒ dst_pitch”…”�”}”(hjÀîh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj\îubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjæíubjä)�”}”(hŒconst struct iosys_map *src”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(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Œ iosys_map”h]”hŒ iosys_map”…”�”}”(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.drm_fb_xrgb8888_to_argb2101010”†”asbuh1hhjÕîubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0ïh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÕîubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj>ïh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÕîubjÓ )�”}”(hŒsrc”h]”hŒsrc”…”�”}”(hjKïh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÕîubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjæíubjä)�”}”(hŒ const struct drm_framebuffer *fb”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hjdïh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj`ïubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjqïh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj`ïubjª )�”}”(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Œdrm_framebuffer”h]”hŒdrm_framebuffer”…”�”}”(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.drm_fb_xrgb8888_to_argb2101010”†”asbuh1hhj`ïubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»ïh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj`ïubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÉïh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj`ïubjÓ )�”}”(hŒfb”h]”hŒfb”…”�”}”(hjÖïh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj`ïubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjæíubjä)�”}”(hŒconst struct drm_rect *clip”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(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Œdrm_rect”h]”hŒdrm_rect”…”�”}”(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.drm_fb_xrgb8888_to_argb2101010”†”asbuh1hhjëïubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFðh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjëïubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjTðh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjëïubjÓ )�”}”(hŒclip”h]”hŒclip”…”�”}”(hjaðh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjëïubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjæíubjä)�”}”(hŒ#struct drm_format_conv_state *state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjzðh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjvðubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡ðh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjvðubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_format_conv_state”h]”hŒdrm_format_conv_state”…”�”}”(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.drm_fb_xrgb8888_to_argb2101010”†”asbuh1hhjvðubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶ðh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjvðubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÄðh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjvðubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hjÑðh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjvðubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjæíubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj­íh²hh³j¿íh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj©íh²hh³j¿íh´Mubah}”(h]”j¤íah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j¿íh´Mhj¦íh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ+Convert XRGB8888 to ARGB2101010 clip buffer”h]”hŒ+Convert XRGB8888 to ARGB2101010 clip buffer”…”�”}”(hjûðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Mhjøðh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¦íh²hh³j¿íh´Mubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jñj$ jñj% ‰j& ‰j' ‰uh1j˜ h²hhj�h³Nh´Nubj) )�”}”(hXD**Parameters** ``struct iosys_map *dst`` Array of ARGB2101010 destination buffers ``const unsigned int *dst_pitch`` Array of numbers of bytes between the start of two consecutive scanlines within **dst**; can be NULL if scanlines are stored next to each other. ``const struct iosys_map *src`` Array of XRGB8888 source buffers ``const struct drm_framebuffer *fb`` DRM framebuffer ``const struct drm_rect *clip`` Clip rectangle area to copy ``struct drm_format_conv_state *state`` Transform and conversion state **Description** This function copies parts of a framebuffer to display memory and converts the color format during the process. The parameters **dst**, **dst_pitch** and **src** refer to arrays. Each array must have at least as many entries as there are planes in **fb**'s format. Each entry stores the value for the format's respective color plane at the same index. This function does not apply clipping on **dst** (i.e. the destination is at the top-left corner). Drivers can use this function for ARGB2101010 devices that don't support XRGB8888 natively.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjñh]”hŒ Parameters”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjñubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Mhjñubjw )�”}”(hhh]”(j| )�”}”(hŒC``struct iosys_map *dst`` Array of ARGB2101010 destination buffers ”h]”(j‚ )�”}”(hŒ``struct iosys_map *dst``”h]”jˆ )�”}”(hj<ñh]”hŒstruct iosys_map *dst”…”�”}”(hj>ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj:ñubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Mhj6ñubjž )�”}”(hhh]”hÎ)�”}”(hŒ(Array of ARGB2101010 destination buffers”h]”hŒ(Array of ARGB2101010 destination buffers”…”�”}”(hjUñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jQñh´MhjRñubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj6ñubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jQñh´Mhj3ñubj| )�”}”(hŒ³``const unsigned int *dst_pitch`` Array of numbers of bytes between the start of two consecutive scanlines within **dst**; can be NULL if scanlines are stored next to each other. ”h]”(j‚ )�”}”(hŒ!``const unsigned int *dst_pitch``”h]”jˆ )�”}”(hjuñh]”hŒconst unsigned int *dst_pitch”…”�”}”(hjwñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjsñubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Mhjoñubjž )�”}”(hhh]”hÎ)�”}”(hŒ�Array of numbers of bytes between the start of two consecutive scanlines within **dst**; can be NULL if scanlines are stored next to each other.”h]”(hŒPArray of numbers of bytes between the start of two consecutive scanlines within ”…”�”}”(hjŽñh²hh³Nh´Nubj3 )�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hj–ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjŽñubhŒ9; can be NULL if scanlines are stored next to each other.”…”�”}”(hjŽñh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Mhj‹ñubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjoñubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jŠñh´Mhj3ñubj| )�”}”(hŒA``const struct iosys_map *src`` Array of XRGB8888 source buffers ”h]”(j‚ )�”}”(hŒ``const struct iosys_map *src``”h]”jˆ )�”}”(hjÁñh]”hŒconst struct iosys_map *src”…”�”}”(hjÃñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¿ñubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Mhj»ñubjž )�”}”(hhh]”hÎ)�”}”(hŒ Array of XRGB8888 source buffers”h]”hŒ Array of XRGB8888 source buffers”…”�”}”(hjÚñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÖñh´Mhj×ñubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj»ñubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÖñh´Mhj3ñubj| )�”}”(hŒ5``const struct drm_framebuffer *fb`` DRM framebuffer ”h]”(j‚ )�”}”(hŒ$``const struct drm_framebuffer *fb``”h]”jˆ )�”}”(hjúñh]”hŒ const struct drm_framebuffer *fb”…”�”}”(hjüñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjøñubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Mhjôñubjž )�”}”(hhh]”hÎ)�”}”(hŒDRM framebuffer”h]”hŒDRM framebuffer”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jòh´Mhjòubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjôñubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jòh´Mhj3ñubj| )�”}”(hŒ<``const struct drm_rect *clip`` Clip rectangle area to copy ”h]”(j‚ )�”}”(hŒ``const struct drm_rect *clip``”h]”jˆ )�”}”(hj3òh]”hŒconst struct drm_rect *clip”…”�”}”(hj5òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj1òubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Mhj-òubjž )�”}”(hhh]”hÎ)�”}”(hŒClip rectangle area to copy”h]”hŒClip rectangle area to copy”…”�”}”(hjLòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jHòh´MhjIòubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj-òubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jHòh´Mhj3ñubj| )�”}”(hŒG``struct drm_format_conv_state *state`` Transform and conversion state ”h]”(j‚ )�”}”(hŒ'``struct drm_format_conv_state *state``”h]”jˆ )�”}”(hjlòh]”hŒ#struct drm_format_conv_state *state”…”�”}”(hjnòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjjòubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M hjfòubjž )�”}”(hhh]”hÎ)�”}”(hŒTransform and conversion state”h]”hŒTransform and conversion state”…”�”}”(hj…òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j�òh´M hj‚òubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjfòubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j�òh´M hj3ñubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjñubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj§òh]”hŒ Description”…”�”}”(hj©òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¥òubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M"hjñubhÎ)�”}”(hX_This function copies parts of a framebuffer to display memory and converts the color format during the process. The parameters **dst**, **dst_pitch** and **src** refer to arrays. Each array must have at least as many entries as there are planes in **fb**'s format. Each entry stores the value for the format's respective color plane at the same index.”h]”(hŒThis function copies parts of a framebuffer to display memory and converts the color format during the process. The parameters ”…”�”}”(hj½òh²hh³Nh´Nubj3 )�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hjÅòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj½òubhŒ, ”…”�”}”(hj½òh²hh³Nh´Nubj3 )�”}”(hŒ **dst_pitch**”h]”hŒ dst_pitch”…”�”}”(hj×òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj½òubhŒ and ”…”�”}”(hj½òh²hh³Nh´Nubj3 )�”}”(hŒ**src**”h]”hŒsrc”…”�”}”(hjéòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj½òubhŒW refer to arrays. Each array must have at least as many entries as there are planes in ”…”�”}”(hj½òh²hh³Nh´Nubj3 )�”}”(hŒ**fb**”h]”hŒfb”…”�”}”(hjûòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj½òubhŒe’s format. Each entry stores the value for the format’s respective color plane at the same index.”…”�”}”(hj½òh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M!hjñubhÎ)�”}”(hŒbThis function does not apply clipping on **dst** (i.e. the destination is at the top-left corner).”h]”(hŒ)This function does not apply clipping on ”…”�”}”(hjóh²hh³Nh´Nubj3 )�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjóubhŒ2 (i.e. the destination is at the top-left corner).”…”�”}”(hjóh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M'hjñubhÎ)�”}”(hŒ[Drivers can use this function for ARGB2101010 devices that don't support XRGB8888 natively.”h]”hŒ]Drivers can use this function for ARGB2101010 devices that don’t support XRGB8888 natively.”…”�”}”(hj5óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M*hjñubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj�h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ%drm_fb_xrgb8888_to_gray8 (C function)”Œc.drm_fb_xrgb8888_to_gray8”hNt”auh1j† hj�h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒÕvoid drm_fb_xrgb8888_to_gray8 (struct iosys_map *dst, const unsigned int *dst_pitch, const struct iosys_map *src, const struct drm_framebuffer *fb, const struct drm_rect *clip, struct drm_format_conv_state *state)”h]”j¤ )�”}”(hŒÔvoid drm_fb_xrgb8888_to_gray8(struct iosys_map *dst, const unsigned int *dst_pitch, const struct iosys_map *src, const struct drm_framebuffer *fb, const struct drm_rect *clip, struct drm_format_conv_state *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjdóh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj`óh²hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MBubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjsóh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj`óh²hh³jróh´MBubjÍ )�”}”(hŒdrm_fb_xrgb8888_to_gray8”h]”jÓ )�”}”(hŒdrm_fb_xrgb8888_to_gray8”h]”hŒdrm_fb_xrgb8888_to_gray8”…”�”}”(hj…óh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj�óubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj`óh²hh³jróh´MBubjÞ)�”}”(hŒ·(struct iosys_map *dst, const unsigned int *dst_pitch, const struct iosys_map *src, const struct drm_framebuffer *fb, const struct drm_rect *clip, struct drm_format_conv_state *state)”h]”(jä)�”}”(hŒstruct iosys_map *dst”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Œ iosys_map”h]”hŒ iosys_map”…”�”}”(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%)�”}”jj‡ósbŒc.drm_fb_xrgb8888_to_gray8”†”asbuh1hhj�óubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjßóh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj�óubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjíóh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�óubjÓ )�”}”(hŒdst”h]”hŒdst”…”�”}”(hjúóh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj�óubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj™óubjä)�”}”(hŒconst unsigned int *dst_pitch”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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Œunsigned”h]”hŒunsigned”…”�”}”(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Œint”h]”hŒint”…”�”}”(hjJôh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjôubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXôh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjôubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjfôh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjôubjÓ )�”}”(hŒ dst_pitch”h]”hŒ dst_pitch”…”�”}”(hjsôh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjôubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj™óubjä)�”}”(hŒconst struct iosys_map *src”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(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Œ iosys_map”h]”hŒ iosys_map”…”�”}”(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.drm_fb_xrgb8888_to_gray8”†”asbuh1hhjˆôubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjãôh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjˆôubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjñôh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjˆôubjÓ )�”}”(hŒsrc”h]”hŒsrc”…”�”}”(hjþôh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjˆôubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj™óubjä)�”}”(hŒ const struct drm_framebuffer *fb”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj2õ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Œdrm_framebuffer”h]”hŒdrm_framebuffer”…”�”}”(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.drm_fb_xrgb8888_to_gray8”†”asbuh1hhjõubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnõh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjõubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj|õh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjõubjÓ )�”}”(hŒfb”h]”hŒfb”…”�”}”(hj‰õh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjõubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj™óubjä)�”}”(hŒconst struct drm_rect *clip”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(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Œdrm_rect”h]”hŒdrm_rect”…”�”}”(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.drm_fb_xrgb8888_to_gray8”†”asbuh1hhjžõubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùõh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjžõubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjžõubjÓ )�”}”(hŒclip”h]”hŒclip”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjžõubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj™óubjä)�”}”(hŒ#struct drm_format_conv_state *state”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Œdrm_format_conv_state”h]”hŒdrm_format_conv_state”…”�”}”(hjKöh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjHöubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jMöŒmodname”NŒ classname”Njé jì )�”}”jï ]”jÛóŒc.drm_fb_xrgb8888_to_gray8”†”asbuh1hhj)öubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjiöh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj)öubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjwöh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj)öubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hj„öh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj)öubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj™óubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj`óh²hh³jróh´MBubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj\óh²hh³jróh´MBubah}”(h]”jWóah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jróh´MBhjYóh²hubj )�”}”(hhh]”hÎ)�”}”(hŒConvert XRGB8888 to grayscale”h]”hŒConvert XRGB8888 to grayscale”…”�”}”(hj®öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MBhj«öh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjYóh²hh³jróh´MBubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jÆöj$ jÆöj% ‰j& ‰j' ‰uh1j˜ h²hhj�h³Nh´Nubj) )�”}”(hXâ**Parameters** ``struct iosys_map *dst`` Array of 8-bit grayscale destination buffers ``const unsigned int *dst_pitch`` Array of numbers of bytes between the start of two consecutive scanlines within **dst**; can be NULL if scanlines are stored next to each other. ``const struct iosys_map *src`` Array of XRGB8888 source buffers ``const struct drm_framebuffer *fb`` DRM framebuffer ``const struct drm_rect *clip`` Clip rectangle area to copy ``struct drm_format_conv_state *state`` Transform and conversion state **Description** This function copies parts of a framebuffer to display memory and converts the color format during the process. Destination and framebuffer formats must match. The parameters **dst**, **dst_pitch** and **src** refer to arrays. Each array must have at least as many entries as there are planes in **fb**'s format. Each entry stores the value for the format's respective color plane at the same index. This function does not apply clipping on **dst** (i.e. the destination is at the top-left corner). DRM doesn't have native monochrome or grayscale support. Drivers can use this function for grayscale devices that don't support XRGB8888 natively.Such drivers can announce the commonly supported XR24 format to userspace and use this function to convert to the native format. Monochrome drivers will use the most significant bit, where 1 means foreground color and 0 background color. ITU BT.601 is being used for the RGB -> luma (brightness) conversion.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjÐöh]”hŒ Parameters”…”�”}”(hjÒöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÎöubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MFhjÊöubjw )�”}”(hhh]”(j| )�”}”(hŒG``struct iosys_map *dst`` Array of 8-bit grayscale destination buffers ”h]”(j‚ )�”}”(hŒ``struct iosys_map *dst``”h]”jˆ )�”}”(hjïöh]”hŒstruct iosys_map *dst”…”�”}”(hjñöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjíöubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MChjéöubjž )�”}”(hhh]”hÎ)�”}”(hŒ,Array of 8-bit grayscale destination buffers”h]”hŒ,Array of 8-bit grayscale destination buffers”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j÷h´MChj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjéöubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j÷h´MChjæöubj| )�”}”(hŒ³``const unsigned int *dst_pitch`` Array of numbers of bytes between the start of two consecutive scanlines within **dst**; can be NULL if scanlines are stored next to each other. ”h]”(j‚ )�”}”(hŒ!``const unsigned int *dst_pitch``”h]”jˆ )�”}”(hj(÷h]”hŒconst unsigned int *dst_pitch”…”�”}”(hj*÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj&÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MEhj"÷ubjž )�”}”(hhh]”hÎ)�”}”(hŒ�Array of numbers of bytes between the start of two consecutive scanlines within **dst**; can be NULL if scanlines are stored next to each other.”h]”(hŒPArray of numbers of bytes between the start of two consecutive scanlines within ”…”�”}”(hjA÷h²hh³Nh´Nubj3 )�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hjI÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjA÷ubhŒ9; can be NULL if scanlines are stored next to each other.”…”�”}”(hjA÷h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MDhj>÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj"÷ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j=÷h´MEhjæöubj| )�”}”(hŒA``const struct iosys_map *src`` Array of XRGB8888 source buffers ”h]”(j‚ )�”}”(hŒ``const struct iosys_map *src``”h]”jˆ )�”}”(hjt÷h]”hŒconst struct iosys_map *src”…”�”}”(hjv÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjr÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MFhjn÷ubjž )�”}”(hhh]”hÎ)�”}”(hŒ Array of XRGB8888 source buffers”h]”hŒ Array of XRGB8888 source buffers”…”�”}”(hj�÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j‰÷h´MFhjŠ÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjn÷ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j‰÷h´MFhjæöubj| )�”}”(hŒ5``const struct drm_framebuffer *fb`` DRM framebuffer ”h]”(j‚ )�”}”(hŒ$``const struct drm_framebuffer *fb``”h]”jˆ )�”}”(hj­÷h]”hŒ const struct drm_framebuffer *fb”…”�”}”(hj¯÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj«÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MGhj§÷ubjž )�”}”(hhh]”hÎ)�”}”(hŒDRM framebuffer”h]”hŒDRM framebuffer”…”�”}”(hjÆ÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÂ÷h´MGhjÃ÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj§÷ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÂ÷h´MGhjæöubj| )�”}”(hŒ<``const struct drm_rect *clip`` Clip rectangle area to copy ”h]”(j‚ )�”}”(hŒ``const struct drm_rect *clip``”h]”jˆ )�”}”(hjæ÷h]”hŒconst struct drm_rect *clip”…”�”}”(hjè÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjä÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MHhjà÷ubjž )�”}”(hhh]”hÎ)�”}”(hŒClip rectangle area to copy”h]”hŒClip rectangle area to copy”…”�”}”(hjÿ÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jû÷h´MHhjü÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjà÷ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jû÷h´MHhjæöubj| )�”}”(hŒG``struct drm_format_conv_state *state`` Transform and conversion state ”h]”(j‚ )�”}”(hŒ'``struct drm_format_conv_state *state``”h]”jˆ )�”}”(hjøh]”hŒ#struct drm_format_conv_state *state”…”�”}”(hj!øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjøubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MIhjøubjž )�”}”(hhh]”hÎ)�”}”(hŒTransform and conversion state”h]”hŒTransform and conversion state”…”�”}”(hj8øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j4øh´MIhj5øubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjøubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j4øh´MIhjæöubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÊöubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjZøh]”hŒ Description”…”�”}”(hj\øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjXøubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MKhjÊöubhÎ)�”}”(hX�This function copies parts of a framebuffer to display memory and converts the color format during the process. Destination and framebuffer formats must match. The parameters **dst**, **dst_pitch** and **src** refer to arrays. Each array must have at least as many entries as there are planes in **fb**'s format. Each entry stores the value for the format's respective color plane at the same index.”h]”(hŒ¯This function copies parts of a framebuffer to display memory and converts the color format during the process. Destination and framebuffer formats must match. The parameters ”…”�”}”(hjpøh²hh³Nh´Nubj3 )�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hjxøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjpøubhŒ, ”…”�”}”(hjpøh²hh³Nh´Nubj3 )�”}”(hŒ **dst_pitch**”h]”hŒ dst_pitch”…”�”}”(hjŠøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjpøubhŒ and ”…”�”}”(hjpøh²hh³Nh´Nubj3 )�”}”(hŒ**src**”h]”hŒsrc”…”�”}”(hjœøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjpøubhŒW refer to arrays. Each array must have at least as many entries as there are planes in ”…”�”}”(hjpøh²hh³Nh´Nubj3 )�”}”(hŒ**fb**”h]”hŒfb”…”�”}”(hj®øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjpøubhŒe’s format. Each entry stores the value for the format’s respective color plane at the same index.”…”�”}”(hjpøh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MJhjÊöubhÎ)�”}”(hŒbThis function does not apply clipping on **dst** (i.e. the destination is at the top-left corner).”h]”(hŒ)This function does not apply clipping on ”…”�”}”(hjÇøh²hh³Nh´Nubj3 )�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hjÏøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÇøubhŒ2 (i.e. the destination is at the top-left corner).”…”�”}”(hjÇøh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MPhjÊöubhÎ)�”}”(hXÅDRM doesn't have native monochrome or grayscale support. Drivers can use this function for grayscale devices that don't support XRGB8888 natively.Such drivers can announce the commonly supported XR24 format to userspace and use this function to convert to the native format. Monochrome drivers will use the most significant bit, where 1 means foreground color and 0 background color. ITU BT.601 is being used for the RGB -> luma (brightness) conversion.”h]”hXÉDRM doesn’t have native monochrome or grayscale support. Drivers can use this function for grayscale devices that don’t support XRGB8888 natively.Such drivers can announce the commonly supported XR24 format to userspace and use this function to convert to the native format. Monochrome drivers will use the most significant bit, where 1 means foreground color and 0 background color. ITU BT.601 is being used for the RGB -> luma (brightness) conversion.”…”�”}”(hjèøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MShjÊöubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj�h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ(drm_fb_argb8888_to_argb4444 (C function)”Œc.drm_fb_argb8888_to_argb4444”hNt”auh1j† hj�h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒØvoid drm_fb_argb8888_to_argb4444 (struct iosys_map *dst, const unsigned int *dst_pitch, const struct iosys_map *src, const struct drm_framebuffer *fb, const struct drm_rect *clip, struct drm_format_conv_state *state)”h]”j¤ )�”}”(hŒ×void drm_fb_argb8888_to_argb4444(struct iosys_map *dst, const unsigned int *dst_pitch, const struct iosys_map *src, const struct drm_framebuffer *fb, const struct drm_rect *clip, struct drm_format_conv_state *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjùh²hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Mnubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&ùh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjùh²hh³j%ùh´MnubjÍ )�”}”(hŒdrm_fb_argb8888_to_argb4444”h]”jÓ )�”}”(hŒdrm_fb_argb8888_to_argb4444”h]”hŒdrm_fb_argb8888_to_argb4444”…”�”}”(hj8ùh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj4ùubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjùh²hh³j%ùh´MnubjÞ)�”}”(hŒ·(struct iosys_map *dst, const unsigned int *dst_pitch, const struct iosys_map *src, const struct drm_framebuffer *fb, const struct drm_rect *clip, struct drm_format_conv_state *state)”h]”(jä)�”}”(hŒstruct iosys_map *dst”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjTùh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjPùubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjaùh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjPùubh)�”}”(hhh]”jÓ )�”}”(hŒ iosys_map”h]”hŒ iosys_map”…”�”}”(hjrùh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjoùubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jtùŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj:ùsbŒc.drm_fb_argb8888_to_argb4444”†”asbuh1hhjPùubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’ùh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjPùubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj ùh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjPùubjÓ )�”}”(hŒdst”h]”hŒdst”…”�”}”(hj­ùh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjPùubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjLùubjä)�”}”(hŒconst unsigned int *dst_pitch”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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Œunsigned”h]”hŒunsigned”…”�”}”(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Œint”h]”hŒint”…”�”}”(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Âùubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÂùubjÓ )�”}”(hŒ dst_pitch”h]”hŒ dst_pitch”…”�”}”(hj&úh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÂùubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjLùubjä)�”}”(hŒconst struct iosys_map *src”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hj?úh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj;úubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjLúh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj;úubjª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjZúh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj;úubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjgúh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj;úubh)�”}”(hhh]”jÓ )�”}”(hŒ iosys_map”h]”hŒ iosys_map”…”�”}”(hjxúh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjuúubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jzúŒmodname”NŒ classname”Njé jì )�”}”jï ]”jŽùŒc.drm_fb_argb8888_to_argb4444”†”asbuh1hhj;úubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–úh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj;úubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj¤úh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj;úubjÓ )�”}”(hŒsrc”h]”hŒsrc”…”�”}”(hj±úh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj;úubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjLùubjä)�”}”(hŒ const struct drm_framebuffer *fb”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(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Œdrm_framebuffer”h]”hŒdrm_framebuffer”…”�”}”(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.drm_fb_argb8888_to_argb4444”†”asbuh1hhjÆúubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!ûh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÆúubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj/ûh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÆúubjÓ )�”}”(hŒfb”h]”hŒfb”…”�”}”(hj<ûh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÆúubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjLùubjä)�”}”(hŒconst struct drm_rect *clip”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hjUûh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjQûubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbûh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjQûubjª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjpûh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjQûubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}ûh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjQûubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_rect”h]”hŒdrm_rect”…”�”}”(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.drm_fb_argb8888_to_argb4444”†”asbuh1hhjQûubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬ûh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjQûubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjºûh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjQûubjÓ )�”}”(hŒclip”h]”hŒclip”…”�”}”(hjÇûh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjQûubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjLùubjä)�”}”(hŒ#struct drm_format_conv_state *state”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Œdrm_format_conv_state”h]”hŒdrm_format_conv_state”…”�”}”(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.drm_fb_argb8888_to_argb4444”†”asbuh1hhjÜûubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÜûubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj*üh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÜûubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hj7üh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÜûubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjLùubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjùh²hh³j%ùh´Mnubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjùh²hh³j%ùh´Mnubah}”(h]”j ùah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j%ùh´Mnhj ùh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ(Convert ARGB8888 to ARGB4444 clip buffer”h]”hŒ(Convert ARGB8888 to ARGB4444 clip buffer”…”�”}”(hjaüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Mnhj^üh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj ùh²hh³j%ùh´Mnubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jyüj$ jyüj% ‰j& ‰j' ‰uh1j˜ h²hhj�h³Nh´Nubj) )�”}”(hX=**Parameters** ``struct iosys_map *dst`` Array of ARGB4444 destination buffers ``const unsigned int *dst_pitch`` Array of numbers of bytes between the start of two consecutive scanlines within **dst**; can be NULL if scanlines are stored next to each other. ``const struct iosys_map *src`` Array of ARGB8888 source buffer ``const struct drm_framebuffer *fb`` DRM framebuffer ``const struct drm_rect *clip`` Clip rectangle area to copy ``struct drm_format_conv_state *state`` Transform and conversion state **Description** This function copies parts of a framebuffer to display memory and converts the color format during the process. The parameters **dst**, **dst_pitch** and **src** refer to arrays. Each array must have at least as many entries as there are planes in **fb**'s format. Each entry stores the value for the format's respective color plane at the same index. This function does not apply clipping on **dst** (i.e. the destination is at the top-left corner). Drivers can use this function for ARGB4444 devices that don't support ARGB8888 natively.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjƒüh]”hŒ Parameters”…”�”}”(hj…üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj�üubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Mrhj}üubjw )�”}”(hhh]”(j| )�”}”(hŒ@``struct iosys_map *dst`` Array of ARGB4444 destination buffers ”h]”(j‚ )�”}”(hŒ``struct iosys_map *dst``”h]”jˆ )�”}”(hj¢üh]”hŒstruct iosys_map *dst”…”�”}”(hj¤üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj üubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Mohjœüubjž )�”}”(hhh]”hÎ)�”}”(hŒ%Array of ARGB4444 destination buffers”h]”hŒ%Array of ARGB4444 destination buffers”…”�”}”(hj»üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j·üh´Mohj¸üubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjœüubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j·üh´Mohj™üubj| )�”}”(hŒ³``const unsigned int *dst_pitch`` Array of numbers of bytes between the start of two consecutive scanlines within **dst**; can be NULL if scanlines are stored next to each other. ”h]”(j‚ )�”}”(hŒ!``const unsigned int *dst_pitch``”h]”jˆ )�”}”(hjÛüh]”hŒconst unsigned int *dst_pitch”…”�”}”(hjÝüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÙüubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MqhjÕüubjž )�”}”(hhh]”hÎ)�”}”(hŒ�Array of numbers of bytes between the start of two consecutive scanlines within **dst**; can be NULL if scanlines are stored next to each other.”h]”(hŒPArray of numbers of bytes between the start of two consecutive scanlines within ”…”�”}”(hjôüh²hh³Nh´Nubj3 )�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hjüüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjôüubhŒ9; can be NULL if scanlines are stored next to each other.”…”�”}”(hjôüh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Mphjñüubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÕüubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jðüh´Mqhj™üubj| )�”}”(hŒ@``const struct iosys_map *src`` Array of ARGB8888 source buffer ”h]”(j‚ )�”}”(hŒ``const struct iosys_map *src``”h]”jˆ )�”}”(hj'ýh]”hŒconst struct iosys_map *src”…”�”}”(hj)ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj%ýubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Mrhj!ýubjž )�”}”(hhh]”hÎ)�”}”(hŒArray of ARGB8888 source buffer”h]”hŒArray of ARGB8888 source buffer”…”�”}”(hj@ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j<ýh´Mrhj=ýubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj!ýubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j<ýh´Mrhj™üubj| )�”}”(hŒ5``const struct drm_framebuffer *fb`` DRM framebuffer ”h]”(j‚ )�”}”(hŒ$``const struct drm_framebuffer *fb``”h]”jˆ )�”}”(hj`ýh]”hŒ const struct drm_framebuffer *fb”…”�”}”(hjbýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj^ýubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MshjZýubjž )�”}”(hhh]”hÎ)�”}”(hŒDRM framebuffer”h]”hŒDRM framebuffer”…”�”}”(hjyýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³juýh´Mshjvýubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjZýubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³juýh´Mshj™üubj| )�”}”(hŒ<``const struct drm_rect *clip`` Clip rectangle area to copy ”h]”(j‚ )�”}”(hŒ``const struct drm_rect *clip``”h]”jˆ )�”}”(hj™ýh]”hŒconst struct drm_rect *clip”…”�”}”(hj›ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj—ýubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Mthj“ýubjž )�”}”(hhh]”hÎ)�”}”(hŒClip rectangle area to copy”h]”hŒClip rectangle area to copy”…”�”}”(hj²ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j®ýh´Mthj¯ýubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj“ýubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j®ýh´Mthj™üubj| )�”}”(hŒG``struct drm_format_conv_state *state`` Transform and conversion state ”h]”(j‚ )�”}”(hŒ'``struct drm_format_conv_state *state``”h]”jˆ )�”}”(hjÒýh]”hŒ#struct drm_format_conv_state *state”…”�”}”(hjÔýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÐýubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MuhjÌýubjž )�”}”(hhh]”hÎ)�”}”(hŒTransform and conversion state”h]”hŒTransform and conversion state”…”�”}”(hjëýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jçýh´Muhjèýubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÌýubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jçýh´Muhj™üubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj}üubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj þh]”hŒ Description”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj þubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Mwhj}üubhÎ)�”}”(hX_This function copies parts of a framebuffer to display memory and converts the color format during the process. The parameters **dst**, **dst_pitch** and **src** refer to arrays. Each array must have at least as many entries as there are planes in **fb**'s format. Each entry stores the value for the format's respective color plane at the same index.”h]”(hŒThis function copies parts of a framebuffer to display memory and converts the color format during the process. The parameters ”…”�”}”(hj#þh²hh³Nh´Nubj3 )�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hj+þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj#þubhŒ, ”…”�”}”(hj#þh²hh³Nh´Nubj3 )�”}”(hŒ **dst_pitch**”h]”hŒ dst_pitch”…”�”}”(hj=þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj#þubhŒ and ”…”�”}”(hj#þh²hh³Nh´Nubj3 )�”}”(hŒ**src**”h]”hŒsrc”…”�”}”(hjOþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj#þubhŒW refer to arrays. Each array must have at least as many entries as there are planes in ”…”�”}”(hj#þh²hh³Nh´Nubj3 )�”}”(hŒ**fb**”h]”hŒfb”…”�”}”(hjaþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj#þubhŒe’s format. Each entry stores the value for the format’s respective color plane at the same index.”…”�”}”(hj#þh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Mvhj}üubhÎ)�”}”(hŒbThis function does not apply clipping on **dst** (i.e. the destination is at the top-left corner).”h]”(hŒ)This function does not apply clipping on ”…”�”}”(hjzþh²hh³Nh´Nubj3 )�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hj‚þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjzþubhŒ2 (i.e. the destination is at the top-left corner).”…”�”}”(hjzþh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M|hj}üubhÎ)�”}”(hŒXDrivers can use this function for ARGB4444 devices that don't support ARGB8888 natively.”h]”hŒZDrivers can use this function for ARGB4444 devices that don’t support ARGB8888 natively.”…”�”}”(hj›þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Mhj}üubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj�h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ$drm_fb_xrgb8888_to_mono (C function)”Œc.drm_fb_xrgb8888_to_mono”hNt”auh1j† hj�h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒÔvoid drm_fb_xrgb8888_to_mono (struct iosys_map *dst, const unsigned int *dst_pitch, const struct iosys_map *src, const struct drm_framebuffer *fb, const struct drm_rect *clip, struct drm_format_conv_state *state)”h]”j¤ )�”}”(hŒÓvoid drm_fb_xrgb8888_to_mono(struct iosys_map *dst, const unsigned int *dst_pitch, const struct iosys_map *src, const struct drm_framebuffer *fb, const struct drm_rect *clip, struct drm_format_conv_state *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÊþh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjÆþh²hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.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Œdrm_fb_xrgb8888_to_mono”h]”jÓ )�”}”(hŒdrm_fb_xrgb8888_to_mono”h]”hŒdrm_fb_xrgb8888_to_mono”…”�”}”(hjëþh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjçþubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÆþh²hh³jØþh´MµubjÞ)�”}”(hŒ·(struct iosys_map *dst, const unsigned int *dst_pitch, const struct iosys_map *src, const struct drm_framebuffer *fb, const struct drm_rect *clip, struct drm_format_conv_state *state)”h]”(jä)�”}”(hŒstruct iosys_map *dst”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Œ iosys_map”h]”hŒ iosys_map”…”�”}”(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%)�”}”jjíþsbŒc.drm_fb_xrgb8888_to_mono”†”asbuh1hhjÿubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjEÿh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÿubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjSÿh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÿubjÓ )�”}”(hŒdst”h]”hŒdst”…”�”}”(hj`ÿh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÿþubjä)�”}”(hŒconst unsigned int *dst_pitch”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hjyÿh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1•j© hjuÿubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†ÿh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjuÿubj¦)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj”ÿh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjuÿubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢ÿh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjuÿubj¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj°ÿh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjuÿubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾ÿh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjuÿubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÌÿh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjuÿubjÓ )�”}”(hŒ dst_pitch”h]”hŒ dst_pitch”…”�”}”(hjÙÿh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjuÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÿþubjä)�”}”(hŒconst struct iosys_map *src”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjîÿubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjîÿubh)�”}”(hhh]”jÓ )�”}”(hŒ iosys_map”h]”hŒ iosys_map”…”�”}”(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ï ]”jAÿŒc.drm_fb_xrgb8888_to_mono”†”asbuh1hhjîÿubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjîÿubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjîÿubjÓ )�”}”(hŒsrc”h]”hŒsrc”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjîÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÿþubjä)�”}”(hŒ const struct drm_framebuffer *fb”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjyubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjyubjª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjyubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjyubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_framebuffer”h]”hŒdrm_framebuffer”…”�”}”(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ï ]”jAÿŒc.drm_fb_xrgb8888_to_mono”†”asbuh1hhjyubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjyubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjyubjÓ )�”}”(hŒfb”h]”hŒfb”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjyubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÿþubjä)�”}”(hŒconst struct drm_rect *clip”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjubjª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_rect”h]”hŒdrm_rect”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj>ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jCŒmodname”NŒ classname”Njé jì )�”}”jï ]”jAÿŒc.drm_fb_xrgb8888_to_mono”†”asbuh1hhjubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjubjÓ )�”}”(hŒclip”h]”hŒclip”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÿþubjä)�”}”(hŒ#struct drm_format_conv_state *state”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Œdrm_format_conv_state”h]”hŒdrm_format_conv_state”…”�”}”(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ï ]”jAÿŒc.drm_fb_xrgb8888_to_mono”†”asbuh1hhj�ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj�ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�ubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÿþubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjÆþh²hh³jØþh´Mµubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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ŒConvert XRGB8888 to monochrome”h]”hŒConvert XRGB8888 to monochrome”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Mµhjh²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²hhj�h³Nh´Nubj) )�”}”(hX**Parameters** ``struct iosys_map *dst`` Array of monochrome destination buffers (0=black, 1=white) ``const unsigned int *dst_pitch`` Array of numbers of bytes between the start of two consecutive scanlines within **dst**; can be NULL if scanlines are stored next to each other. ``const struct iosys_map *src`` Array of XRGB8888 source buffers ``const struct drm_framebuffer *fb`` DRM framebuffer ``const struct drm_rect *clip`` Clip rectangle area to copy ``struct drm_format_conv_state *state`` Transform and conversion state **Description** This function copies parts of a framebuffer to display memory and converts the color format during the process. Destination and framebuffer formats must match. The parameters **dst**, **dst_pitch** and **src** refer to arrays. Each array must have at least as many entries as there are planes in **fb**'s format. Each entry stores the value for the format's respective color plane at the same index. This function does not apply clipping on **dst** (i.e. the destination is at the top-left corner). The first pixel (upper left corner of the clip rectangle) will be converted and copied to the first bit (LSB) in the first byte of the monochrome destination buffer. If the caller requires that the first pixel in a byte must be located at an x-coordinate that is a multiple of 8, then the caller must take care itself of supplying a suitable clip rectangle. DRM doesn't have native monochrome support. Drivers can use this function for monochrome devices that don't support XRGB8888 natively. Such drivers can announce the commonly supported XR24 format to userspace and use this function to convert to the native format. This function uses drm_fb_xrgb8888_to_gray8() to convert to grayscale and then the result is converted from grayscale to monochrome.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj6h]”hŒ Parameters”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M¹hj0ubjw )�”}”(hhh]”(j| )�”}”(hŒU``struct iosys_map *dst`` Array of monochrome destination buffers (0=black, 1=white) ”h]”(j‚ )�”}”(hŒ``struct iosys_map *dst``”h]”jˆ )�”}”(hjUh]”hŒstruct iosys_map *dst”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjSubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M¶hjOubjž )�”}”(hhh]”hÎ)�”}”(hŒ:Array of monochrome destination buffers (0=black, 1=white)”h]”hŒ:Array of monochrome destination buffers (0=black, 1=white)”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jjh´M¶hjkubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjOubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jjh´M¶hjLubj| )�”}”(hŒ³``const unsigned int *dst_pitch`` Array of numbers of bytes between the start of two consecutive scanlines within **dst**; can be NULL if scanlines are stored next to each other. ”h]”(j‚ )�”}”(hŒ!``const unsigned int *dst_pitch``”h]”jˆ )�”}”(hjŽh]”hŒconst unsigned int *dst_pitch”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjŒubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M¸hjˆubjž )�”}”(hhh]”hÎ)�”}”(hŒ�Array of numbers of bytes between the start of two consecutive scanlines within **dst**; can be NULL if scanlines are stored next to each other.”h]”(hŒPArray of numbers of bytes between the start of two consecutive scanlines within ”…”�”}”(hj§h²hh³Nh´Nubj3 )�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj§ubhŒ9; can be NULL if scanlines are stored next to each other.”…”�”}”(hj§h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M·hj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j£h´M¸hjLubj| )�”}”(hŒA``const struct iosys_map *src`` Array of XRGB8888 source buffers ”h]”(j‚ )�”}”(hŒ``const struct iosys_map *src``”h]”jˆ )�”}”(hjÚh]”hŒconst struct iosys_map *src”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjØubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M¹hjÔubjž )�”}”(hhh]”hÎ)�”}”(hŒ Array of XRGB8888 source buffers”h]”hŒ Array of XRGB8888 source buffers”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jïh´M¹hjðubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÔubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jïh´M¹hjLubj| )�”}”(hŒ5``const struct drm_framebuffer *fb`` DRM framebuffer ”h]”(j‚ )�”}”(hŒ$``const struct drm_framebuffer *fb``”h]”jˆ )�”}”(hjh]”hŒ const struct drm_framebuffer *fb”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Mºhj ubjž )�”}”(hhh]”hÎ)�”}”(hŒDRM framebuffer”h]”hŒDRM framebuffer”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j(h´Mºhj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j(h´MºhjLubj| )�”}”(hŒ<``const struct drm_rect *clip`` Clip rectangle area to copy ”h]”(j‚ )�”}”(hŒ``const struct drm_rect *clip``”h]”jˆ )�”}”(hjLh]”hŒconst struct drm_rect *clip”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjJubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M»hjFubjž )�”}”(hhh]”hÎ)�”}”(hŒClip rectangle area to copy”h]”hŒClip rectangle area to copy”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jah´M»hjbubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjFubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jah´M»hjLubj| )�”}”(hŒG``struct drm_format_conv_state *state`` Transform and conversion state ”h]”(j‚ )�”}”(hŒ'``struct drm_format_conv_state *state``”h]”jˆ )�”}”(hj…h]”hŒ#struct drm_format_conv_state *state”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M¼hjubjž )�”}”(hhh]”hÎ)�”}”(hŒTransform and conversion state”h]”hŒTransform and conversion state”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jšh´M¼hj›ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jšh´M¼hjLubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj0ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjÀh]”hŒ Description”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M¾hj0ubhÎ)�”}”(hX�This function copies parts of a framebuffer to display memory and converts the color format during the process. Destination and framebuffer formats must match. The parameters **dst**, **dst_pitch** and **src** refer to arrays. Each array must have at least as many entries as there are planes in **fb**'s format. Each entry stores the value for the format's respective color plane at the same index.”h]”(hŒ¯This function copies parts of a framebuffer to display memory and converts the color format during the process. Destination and framebuffer formats must match. The parameters ”…”�”}”(hjÖh²hh³Nh´Nubj3 )�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÖubhŒ, ”…”�”}”(hjÖh²hh³Nh´Nubj3 )�”}”(hŒ **dst_pitch**”h]”hŒ dst_pitch”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÖubhŒ and ”…”�”}”(hjÖh²hh³Nh´Nubj3 )�”}”(hŒ**src**”h]”hŒsrc”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÖubhŒW refer to arrays. Each array must have at least as many entries as there are planes in ”…”�”}”(hjÖh²hh³Nh´Nubj3 )�”}”(hŒ**fb**”h]”hŒfb”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÖubhŒe’s format. Each entry stores the value for the format’s respective color plane at the same index.”…”�”}”(hjÖh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M½hj0ubhÎ)�”}”(hXÈThis function does not apply clipping on **dst** (i.e. the destination is at the top-left corner). The first pixel (upper left corner of the clip rectangle) will be converted and copied to the first bit (LSB) in the first byte of the monochrome destination buffer. If the caller requires that the first pixel in a byte must be located at an x-coordinate that is a multiple of 8, then the caller must take care itself of supplying a suitable clip rectangle.”h]”(hŒ)This function does not apply clipping on ”…”�”}”(hj-h²hh³Nh´Nubj3 )�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj-ubhX˜ (i.e. the destination is at the top-left corner). The first pixel (upper left corner of the clip rectangle) will be converted and copied to the first bit (LSB) in the first byte of the monochrome destination buffer. If the caller requires that the first pixel in a byte must be located at an x-coordinate that is a multiple of 8, then the caller must take care itself of supplying a suitable clip rectangle.”…”�”}”(hj-h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MÃhj0ubhÎ)�”}”(hXDRM doesn't have native monochrome support. Drivers can use this function for monochrome devices that don't support XRGB8888 natively. Such drivers can announce the commonly supported XR24 format to userspace and use this function to convert to the native format.”h]”hX DRM doesn’t have native monochrome support. Drivers can use this function for monochrome devices that don’t support XRGB8888 natively. Such drivers can announce the commonly supported XR24 format to userspace and use this function to convert to the native format.”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MÊhj0ubhÎ)�”}”(hŒ„This function uses drm_fb_xrgb8888_to_gray8() to convert to grayscale and then the result is converted from grayscale to monochrome.”h]”hŒ„This function uses drm_fb_xrgb8888_to_gray8() to convert to grayscale and then the result is converted from grayscale to monochrome.”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MÏhj0ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj�h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ%drm_fb_xrgb8888_to_gray2 (C function)”Œc.drm_fb_xrgb8888_to_gray2”hNt”auh1j† hj�h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒÕvoid drm_fb_xrgb8888_to_gray2 (struct iosys_map *dst, const unsigned int *dst_pitch, const struct iosys_map *src, const struct drm_framebuffer *fb, const struct drm_rect *clip, struct drm_format_conv_state *state)”h]”j¤ )�”}”(hŒÔvoid drm_fb_xrgb8888_to_gray2(struct iosys_map *dst, const unsigned int *dst_pitch, const struct iosys_map *src, const struct drm_framebuffer *fb, const struct drm_rect *clip, struct drm_format_conv_state *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjˆh²hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjˆh²hh³jšh´MubjÍ )�”}”(hŒdrm_fb_xrgb8888_to_gray2”h]”jÓ )�”}”(hŒdrm_fb_xrgb8888_to_gray2”h]”hŒdrm_fb_xrgb8888_to_gray2”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj©ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjˆh²hh³jšh´MubjÞ)�”}”(hŒ·(struct iosys_map *dst, const unsigned int *dst_pitch, const struct iosys_map *src, const struct drm_framebuffer *fb, const struct drm_rect *clip, struct drm_format_conv_state *state)”h]”(jä)�”}”(hŒstruct iosys_map *dst”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Œ iosys_map”h]”hŒ iosys_map”…”�”}”(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%)�”}”jj¯sbŒc.drm_fb_xrgb8888_to_gray2”†”asbuh1hhjÅubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÅubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÅubjÓ )�”}”(hŒdst”h]”hŒdst”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÅubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÁubjä)�”}”(hŒconst unsigned int *dst_pitch”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj7ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj7ubj¦)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj7ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj7ubj¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj7ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj7ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj7ubjÓ )�”}”(hŒ dst_pitch”h]”hŒ dst_pitch”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÁubjä)�”}”(hŒconst struct iosys_map *src”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(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Œ iosys_map”h]”hŒ iosys_map”…”�”}”(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.drm_fb_xrgb8888_to_gray2”†”asbuh1hhj°ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj°ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj°ubjÓ )�”}”(hŒsrc”h]”hŒsrc”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj°ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÁubjä)�”}”(hŒ const struct drm_framebuffer *fb”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj;ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj;ubjª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj;ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj;ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_framebuffer”h]”hŒdrm_framebuffer”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjuubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jzŒmodname”NŒ classname”Njé jì )�”}”jï ]”jŒc.drm_fb_xrgb8888_to_gray2”†”asbuh1hhj;ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj;ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj;ubjÓ )�”}”(hŒfb”h]”hŒfb”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj;ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÁubjä)�”}”(hŒconst struct drm_rect *clip”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(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Œdrm_rect”h]”hŒdrm_rect”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jŒmodname”NŒ classname”Njé jì )�”}”jï ]”jŒc.drm_fb_xrgb8888_to_gray2”†”asbuh1hhjÆubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÆubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÆubjÓ )�”}”(hŒclip”h]”hŒclip”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÁubjä)�”}”(hŒ#struct drm_format_conv_state *state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjQubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjQubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_format_conv_state”h]”hŒdrm_format_conv_state”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjpubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”juŒmodname”NŒ classname”Njé jì )�”}”jï ]”jŒc.drm_fb_xrgb8888_to_gray2”†”asbuh1hhjQubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjQubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjQubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjQubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÁubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjˆh²hh³jšh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj„h²hh³jšh´Mubah}”(h]”jah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jšh´Mhj�h²hubj )�”}”(hhh]”hÎ)�”}”(hŒConvert XRGB8888 to gray2”h]”hŒConvert XRGB8888 to gray2”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MhjÓh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj�h²hh³jšh´Mubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jîj$ jîj% ‰j& ‰j' ‰uh1j˜ h²hhj�h³Nh´Nubj) )�”}”(hXu**Parameters** ``struct iosys_map *dst`` Array of gray2 destination buffer ``const unsigned int *dst_pitch`` Array of numbers of bytes between the start of two consecutive scanlines within **dst**; can be NULL if scanlines are stored next to each other. ``const struct iosys_map *src`` Array of XRGB8888 source buffers ``const struct drm_framebuffer *fb`` DRM framebuffer ``const struct drm_rect *clip`` Clip rectangle area to copy ``struct drm_format_conv_state *state`` Transform and conversion state **Description** This function copies parts of a framebuffer to display memory and converts the color format during the process. Destination and framebuffer formats must match. The parameters **dst**, **dst_pitch** and **src** refer to arrays. Each array must have at least as many entries as there are planes in **fb**'s format. Each entry stores the value for the format's respective color plane at the same index. This function does not apply clipping on **dst** (i.e. the destination is at the top-left corner). The first pixel (upper left corner of the clip rectangle) will be converted and copied to the two first bits (LSB) in the first byte of the gray2 destination buffer. If the caller requires that the first pixel in a byte must be located at an x-coordinate that is a multiple of 8, then the caller must take care itself of supplying a suitable clip rectangle. DRM doesn't have native gray2 support. Drivers can use this function for gray2 devices that don't support XRGB8888 natively. Such drivers can announce the commonly supported XR24 format to userspace and use this function to convert to the native format.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjøh]”hŒ Parameters”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjöubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Mhjòubjw )�”}”(hhh]”(j| )�”}”(hŒ<``struct iosys_map *dst`` Array of gray2 destination buffer ”h]”(j‚ )�”}”(hŒ``struct iosys_map *dst``”h]”jˆ )�”}”(hjh]”hŒstruct iosys_map *dst”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Mhjubjž )�”}”(hhh]”hÎ)�”}”(hŒ!Array of gray2 destination buffer”h]”hŒ!Array of gray2 destination buffer”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j,h´Mhj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j,h´Mhjubj| )�”}”(hŒ³``const unsigned int *dst_pitch`` Array of numbers of bytes between the start of two consecutive scanlines within **dst**; can be NULL if scanlines are stored next to each other. ”h]”(j‚ )�”}”(hŒ!``const unsigned int *dst_pitch``”h]”jˆ )�”}”(hjPh]”hŒconst unsigned int *dst_pitch”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjNubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MhjJubjž )�”}”(hhh]”hÎ)�”}”(hŒ�Array of numbers of bytes between the start of two consecutive scanlines within **dst**; can be NULL if scanlines are stored next to each other.”h]”(hŒPArray of numbers of bytes between the start of two consecutive scanlines within ”…”�”}”(hjih²hh³Nh´Nubj3 )�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjiubhŒ9; can be NULL if scanlines are stored next to each other.”…”�”}”(hjih²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Mhjfubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjJubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jeh´Mhjubj| )�”}”(hŒA``const struct iosys_map *src`` Array of XRGB8888 source buffers ”h]”(j‚ )�”}”(hŒ``const struct iosys_map *src``”h]”jˆ )�”}”(hjœh]”hŒconst struct iosys_map *src”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjšubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Mhj–ubjž )�”}”(hhh]”hÎ)�”}”(hŒ Array of XRGB8888 source buffers”h]”hŒ Array of XRGB8888 source buffers”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j±h´Mhj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j±h´Mhjubj| )�”}”(hŒ5``const struct drm_framebuffer *fb`` DRM framebuffer ”h]”(j‚ )�”}”(hŒ$``const struct drm_framebuffer *fb``”h]”jˆ )�”}”(hjÕh]”hŒ const struct drm_framebuffer *fb”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÓubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MhjÏubjž )�”}”(hhh]”hÎ)�”}”(hŒDRM framebuffer”h]”hŒDRM framebuffer”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jêh´Mhjëubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÏubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jêh´Mhjubj| )�”}”(hŒ<``const struct drm_rect *clip`` Clip rectangle area to copy ”h]”(j‚ )�”}”(hŒ``const struct drm_rect *clip``”h]”jˆ )�”}”(hj h]”hŒconst struct drm_rect *clip”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´Mhj ubjž )�”}”(hhh]”hÎ)�”}”(hŒClip rectangle area to copy”h]”hŒClip rectangle area to copy”…”�”}”(hj' h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j# h´Mhj$ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j# h´Mhjubj| )�”}”(hŒG``struct drm_format_conv_state *state`` Transform and conversion state ”h]”(j‚ )�”}”(hŒ'``struct drm_format_conv_state *state``”h]”jˆ )�”}”(hjG h]”hŒ#struct drm_format_conv_state *state”…”�”}”(hjI h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjE ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MhjA ubjž )�”}”(hhh]”hÎ)�”}”(hŒTransform and conversion state”h]”hŒTransform and conversion state”…”�”}”(hj` h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j\ h´Mhj] ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjA ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j\ h´Mhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjòubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj‚ h]”hŒ Description”…”�”}”(hj„ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj€ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MhjòubhÎ)�”}”(hX�This function copies parts of a framebuffer to display memory and converts the color format during the process. Destination and framebuffer formats must match. The parameters **dst**, **dst_pitch** and **src** refer to arrays. Each array must have at least as many entries as there are planes in **fb**'s format. Each entry stores the value for the format's respective color plane at the same index.”h]”(hŒ¯This function copies parts of a framebuffer to display memory and converts the color format during the process. Destination and framebuffer formats must match. The parameters ”…”�”}”(hj˜ h²hh³Nh´Nubj3 )�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hj  h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj˜ ubhŒ, ”…”�”}”(hj˜ h²hh³Nh´Nubj3 )�”}”(hŒ **dst_pitch**”h]”hŒ dst_pitch”…”�”}”(hj² h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj˜ ubhŒ and ”…”�”}”(hj˜ h²hh³Nh´Nubj3 )�”}”(hŒ**src**”h]”hŒsrc”…”�”}”(hjÄ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj˜ ubhŒW refer to arrays. Each array must have at least as many entries as there are planes in ”…”�”}”(hj˜ h²hh³Nh´Nubj3 )�”}”(hŒ**fb**”h]”hŒfb”…”�”}”(hjÖ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj˜ ubhŒe’s format. Each entry stores the value for the format’s respective color plane at the same index.”…”�”}”(hj˜ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MhjòubhÎ)�”}”(hXÈThis function does not apply clipping on **dst** (i.e. the destination is at the top-left corner). The first pixel (upper left corner of the clip rectangle) will be converted and copied to the two first bits (LSB) in the first byte of the gray2 destination buffer. If the caller requires that the first pixel in a byte must be located at an x-coordinate that is a multiple of 8, then the caller must take care itself of supplying a suitable clip rectangle.”h]”(hŒ)This function does not apply clipping on ”…”�”}”(hjï h²hh³Nh´Nubj3 )�”}”(hŒ**dst**”h]”hŒdst”…”�”}”(hj÷ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjï ubhX˜ (i.e. the destination is at the top-left corner). The first pixel (upper left corner of the clip rectangle) will be converted and copied to the two first bits (LSB) in the first byte of the gray2 destination buffer. If the caller requires that the first pixel in a byte must be located at an x-coordinate that is a multiple of 8, then the caller must take care itself of supplying a suitable clip rectangle.”…”�”}”(hjï h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´MhjòubhÎ)�”}”(hŒýDRM doesn't have native gray2 support. Drivers can use this function for gray2 devices that don't support XRGB8888 natively. Such drivers can announce the commonly supported XR24 format to userspace and use this function to convert to the native format.”h]”hXDRM doesn’t have native gray2 support. Drivers can use this function for gray2 devices that don’t support XRGB8888 natively. Such drivers can announce the commonly supported XR24 format to userspace and use this function to convert to the native format.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:124: ./drivers/gpu/drm/drm_format_helper.c”h´M$hjòubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj�h²hh³Nh´Nubeh}”(h]”jùah ]”h"]”Œ!format helper functions reference”ah$]”h&]”uh1hµhh·h²hh³hÌh´Kzubh¶)�”}”(hhh]”(h»)�”}”(hŒ*Framebuffer DMA Helper Functions Reference”h]”hŒ*Framebuffer DMA Helper Functions Reference”…”�”}”(hj0 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÊjuh1hºhj- h²hh³hÌh´K€ubhÎ)�”}”(hŒDProvides helper functions for creating a DMA-contiguous framebuffer.”h]”hŒDProvides helper functions for creating a DMA-contiguous framebuffer.”…”�”}”(hj> h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:130: ./drivers/gpu/drm/drm_fb_dma_helper.c”h´Khj- h²hubhÎ)�”}”(hX+Depending on the platform, the buffers may be physically non-contiguous and mapped through an IOMMU or a similar mechanism, or allocated from physically-contiguous memory (using, for instance, CMA or a pool of memory reserved at early boot). This is handled behind the scenes by the DMA mapping API.”h]”hX+Depending on the platform, the buffers may be physically non-contiguous and mapped through an IOMMU or a similar mechanism, or allocated from physically-contiguous memory (using, for instance, CMA or a pool of memory reserved at early boot). This is handled behind the scenes by the DMA mapping API.”…”�”}”(hjM h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:130: ./drivers/gpu/drm/drm_fb_dma_helper.c”h´Khj- h²hubhÎ)�”}”(hŒždrm_gem_fb_create() is used in the :c:type:`drm_mode_config_funcs.fb_create ` callback function to create a DMA-contiguous framebuffer.”h]”(hŒ#drm_gem_fb_create() is used in the ”…”�”}”(hj\ h²hh³Nh´Nubh)�”}”(hŒA:c:type:`drm_mode_config_funcs.fb_create `”h]”jˆ )�”}”(hjf h]”hŒdrm_mode_config_funcs.fb_create”…”�”}”(hjh h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjd ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_mode_config_funcs”uh1hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:130: ./drivers/gpu/drm/drm_fb_dma_helper.c”h´K"hj\ ubhŒ: callback function to create a DMA-contiguous framebuffer.”…”�”}”(hj\ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jƒ h´K"hj- h²hubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ#drm_fb_dma_get_gem_obj (C function)”Œc.drm_fb_dma_get_gem_obj”hNt”auh1j† hj- h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒcstruct drm_gem_dma_object * drm_fb_dma_get_gem_obj (struct drm_framebuffer *fb, unsigned int plane)”h]”j¤ )�”}”(hŒastruct drm_gem_dma_object *drm_fb_dma_get_gem_obj(struct drm_framebuffer *fb, unsigned int plane)”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj§ h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj£ h²hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:133: ./drivers/gpu/drm/drm_fb_dma_helper.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)ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_gem_dma_object”h]”hŒdrm_gem_dma_object”…”�”}”(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Œdrm_fb_dma_get_gem_obj”sbŒc.drm_fb_dma_get_gem_obj”†”asbuh1hhj£ h²hh³j´ h´K)ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjç h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj£ h²hh³j´ h´K)ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjõ h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj£ h²hh³j´ h´K)ubjÍ )�”}”(hŒdrm_fb_dma_get_gem_obj”h]”jÓ )�”}”(hjä h]”hŒdrm_fb_dma_get_gem_obj”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj£ h²hh³j´ h´K)ubjÞ)�”}”(hŒ0(struct drm_framebuffer *fb, unsigned int plane)”h]”(jä)�”}”(hŒstruct drm_framebuffer *fb”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Œdrm_framebuffer”h]”hŒdrm_framebuffer”…”�”}”(hj? h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj< ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jA Œmodname”NŒ classname”Njé jì )�”}”jï ]”jâ Œc.drm_fb_dma_get_gem_obj”†”asbuh1hhj ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj] h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjk h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ubjÓ )�”}”(hŒfb”h]”hŒfb”…”�”}”(hjx h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj ubjä)�”}”(hŒunsigned int plane”h]”(j¦)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(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Œint”h]”hŒint”…”�”}”(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Œplane”h]”hŒplane”…”�”}”(hjÉ h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj� ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj£ h²hh³j´ h´K)ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ"Get DMA GEM object for framebuffer”h]”hŒ"Get DMA GEM object for framebuffer”…”�”}”(hjó h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:133: ./drivers/gpu/drm/drm_fb_dma_helper.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²hhj- h³Nh´Nubj) )�”}”(hŒñ**Parameters** ``struct drm_framebuffer *fb`` The framebuffer ``unsigned int plane`` Which plane **Description** Return the DMA GEM object for given framebuffer. This function will usually be called from the CRTC callback functions.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj h]”hŒ Parameters”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:133: ./drivers/gpu/drm/drm_fb_dma_helper.c”h´K-hj ubjw )�”}”(hhh]”(j| )�”}”(hŒ/``struct drm_framebuffer *fb`` The framebuffer ”h]”(j‚ )�”}”(hŒ``struct drm_framebuffer *fb``”h]”jˆ )�”}”(hj4 h]”hŒstruct drm_framebuffer *fb”…”�”}”(hj6 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj2 ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:133: ./drivers/gpu/drm/drm_fb_dma_helper.c”h´K*hj. ubjž )�”}”(hhh]”hÎ)�”}”(hŒThe framebuffer”h]”hŒThe framebuffer”…”�”}”(hjM h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jI h´K*hjJ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj. ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jI h´K*hj+ ubj| )�”}”(hŒ#``unsigned int plane`` Which plane ”h]”(j‚ )�”}”(hŒ``unsigned int plane``”h]”jˆ )�”}”(hjm h]”hŒunsigned int plane”…”�”}”(hjo h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjk ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:133: ./drivers/gpu/drm/drm_fb_dma_helper.c”h´K+hjg ubjž )�”}”(hhh]”hÎ)�”}”(hŒ Which plane”h]”hŒ Which plane”…”�”}”(hj† h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j‚ h´K+hjƒ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjg ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j‚ h´K+hj+ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj¨ h]”hŒ Description”…”�”}”(hjª h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¦ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:133: ./drivers/gpu/drm/drm_fb_dma_helper.c”h´K-hj ubhÎ)�”}”(hŒ0Return the DMA GEM object for given framebuffer.”h]”hŒ0Return the DMA GEM object for given framebuffer.”…”�”}”(hj¾ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:133: ./drivers/gpu/drm/drm_fb_dma_helper.c”h´K,hj ubhÎ)�”}”(hŒFThis function will usually be called from the CRTC callback functions.”h]”hŒFThis function will usually be called from the CRTC callback functions.”…”�”}”(hjÍ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:133: ./drivers/gpu/drm/drm_fb_dma_helper.c”h´K.hj ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj- h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ$drm_fb_dma_get_gem_addr (C function)”Œc.drm_fb_dma_get_gem_addr”hNt”auh1j† hj- h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒrdma_addr_t drm_fb_dma_get_gem_addr (struct drm_framebuffer *fb, struct drm_plane_state *state, unsigned int plane)”h]”j¤ )�”}”(hŒqdma_addr_t drm_fb_dma_get_gem_addr(struct drm_framebuffer *fb, struct drm_plane_state *state, unsigned int plane)”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒ dma_addr_t”h]”hŒ dma_addr_t”…”�”}”(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Œdrm_fb_dma_get_gem_addr”sbŒc.drm_fb_dma_get_gem_addr”†”asbuh1hhjø h²hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:133: ./drivers/gpu/drm/drm_fb_dma_helper.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Œdrm_fb_dma_get_gem_addr”h]”jÓ )�”}”(hj h]”hŒdrm_fb_dma_get_gem_addr”…”�”}”(hj3 h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj/ ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjø h²hh³j h´K?ubjÞ)�”}”(hŒO(struct drm_framebuffer *fb, struct drm_plane_state *state, unsigned int plane)”h]”(jä)�”}”(hŒstruct drm_framebuffer *fb”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjN h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjJ ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[ h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjJ ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_framebuffer”h]”hŒdrm_framebuffer”…”�”}”(hjl h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hji ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jn Œmodname”NŒ classname”Njé jì )�”}”jï ]”j Œc.drm_fb_dma_get_gem_addr”†”asbuh1hhjJ ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠ h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjJ ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj˜ h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjJ ubjÓ )�”}”(hŒfb”h]”hŒfb”…”�”}”(hj¥ h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjJ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjF ubjä)�”}”(hŒstruct drm_plane_state *state”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Œdrm_plane_state”h]”hŒdrm_plane_state”…”�”}”(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.drm_fb_dma_get_gem_addr”†”asbuh1hhjº ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjú h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjº ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjº ubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjº ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjF ubjä)�”}”(hŒunsigned int plane”h]”(j¦)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(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Œint”h]”hŒint”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj*ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj*ubjÓ )�”}”(hŒplane”h]”hŒplane”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj*ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjF ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjø h²hh³j h´K?ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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ŒˆGet DMA (bus) address for framebuffer, for pixel formats where values are grouped in blocks this will get you the beginning of the block”h]”hŒˆGet DMA (bus) address for framebuffer, for pixel formats where values are grouped in blocks this will get you the beginning of the block”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:133: ./drivers/gpu/drm/drm_fb_dma_helper.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²hhj- h³Nh´Nubj) )�”}”(hX2**Parameters** ``struct drm_framebuffer *fb`` The framebuffer ``struct drm_plane_state *state`` Which state of drm plane ``unsigned int plane`` Which plane Return the DMA GEM address for given framebuffer. **Description** This function will usually be called from the PLANE callback functions.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj²h]”hŒ Parameters”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj°ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:133: ./drivers/gpu/drm/drm_fb_dma_helper.c”h´KChj¬ubjw )�”}”(hhh]”(j| )�”}”(hŒ/``struct drm_framebuffer *fb`` The framebuffer ”h]”(j‚ )�”}”(hŒ``struct drm_framebuffer *fb``”h]”jˆ )�”}”(hjÑh]”hŒstruct drm_framebuffer *fb”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÏubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:133: ./drivers/gpu/drm/drm_fb_dma_helper.c”h´KBhjËubjž )�”}”(hhh]”hÎ)�”}”(hŒThe framebuffer”h]”hŒThe framebuffer”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jæh´KBhjçubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjËubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jæh´KBhjÈubj| )�”}”(hŒ;``struct drm_plane_state *state`` Which state of drm plane ”h]”(j‚ )�”}”(hŒ!``struct drm_plane_state *state``”h]”jˆ )�”}”(hj h]”hŒstruct drm_plane_state *state”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:133: ./drivers/gpu/drm/drm_fb_dma_helper.c”h´KChjubjž )�”}”(hhh]”hÎ)�”}”(hŒWhich state of drm plane”h]”hŒWhich state of drm plane”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jh´KChj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jh´KChjÈubj| )�”}”(hŒU``unsigned int plane`` Which plane Return the DMA GEM address for given framebuffer. ”h]”(j‚ )�”}”(hŒ``unsigned int plane``”h]”jˆ )�”}”(hjCh]”hŒunsigned int plane”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjAubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:133: ./drivers/gpu/drm/drm_fb_dma_helper.c”h´KEhj=ubjž )�”}”(hhh]”hÎ)�”}”(hŒ=Which plane Return the DMA GEM address for given framebuffer.”h]”hŒ=Which plane Return the DMA GEM address for given framebuffer.”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:133: ./drivers/gpu/drm/drm_fb_dma_helper.c”h´KDhjYubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jXh´KEhjÈubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj¬ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjh]”hŒ Description”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj}ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:133: ./drivers/gpu/drm/drm_fb_dma_helper.c”h´KGhj¬ubhÎ)�”}”(hŒGThis function will usually be called from the PLANE callback functions.”h]”hŒGThis function will usually be called from the PLANE callback functions.”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:133: ./drivers/gpu/drm/drm_fb_dma_helper.c”h´KFhj¬ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj- h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ)drm_fb_dma_sync_non_coherent (C function)”Œc.drm_fb_dma_sync_non_coherent”hNt”auh1j† hj- h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ|void drm_fb_dma_sync_non_coherent (struct drm_device *drm, struct drm_plane_state *old_state, struct drm_plane_state *state)”h]”j¤ )�”}”(hŒ{void drm_fb_dma_sync_non_coherent(struct drm_device *drm, struct drm_plane_state *old_state, struct drm_plane_state *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjÀh²hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:133: ./drivers/gpu/drm/drm_fb_dma_helper.c”h´Kpubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÀh²hh³jÒh´KpubjÍ )�”}”(hŒdrm_fb_dma_sync_non_coherent”h]”jÓ )�”}”(hŒdrm_fb_dma_sync_non_coherent”h]”hŒdrm_fb_dma_sync_non_coherent”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjáubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÀh²hh³jÒh´KpubjÞ)�”}”(hŒZ(struct drm_device *drm, struct drm_plane_state *old_state, struct drm_plane_state *state)”h]”(jä)�”}”(hŒstruct drm_device *drm”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjýubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjýubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_device”h]”hŒ drm_device”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j!Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjçsbŒc.drm_fb_dma_sync_non_coherent”†”asbuh1hhjýubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjýubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjýubjÓ )�”}”(hŒdrm”h]”hŒdrm”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjýubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjùubjä)�”}”(hŒ!struct drm_plane_state *old_state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjoubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjoubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_plane_state”h]”hŒdrm_plane_state”…”�”}”(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.drm_fb_dma_sync_non_coherent”†”asbuh1hhjoubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjoubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjoubjÓ )�”}”(hŒ old_state”h]”hŒ old_state”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjoubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjùubjä)�”}”(hŒstruct drm_plane_state *state”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Œdrm_plane_state”h]”hŒdrm_plane_state”…”�”}”(hjh²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.drm_fb_dma_sync_non_coherent”†”asbuh1hhjßubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjßubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjßubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjßubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjùubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjÀh²hh³jÒh´Kpubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj¼h²hh³jÒh´Kpubah}”(h]”j·ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jÒh´Kphj¹h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ.Sync GEM object to non-coherent backing memory”h]”hŒ.Sync GEM object to non-coherent backing memory”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:133: ./drivers/gpu/drm/drm_fb_dma_helper.c”h´Kphjah²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¹h²hh³jÒh´Kpubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j|j$ j|j% ‰j& ‰j' ‰uh1j˜ h²hhj- h³Nh´Nubj) )�”}”(hX¦**Parameters** ``struct drm_device *drm`` DRM device ``struct drm_plane_state *old_state`` Old plane state ``struct drm_plane_state *state`` New plane state **Description** This function can be used by drivers that use damage clips and have DMA GEM objects backed by non-coherent memory. Calling this function in a plane's .atomic_update ensures that all the data in the backing memory have been written to RAM.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj†h]”hŒ Parameters”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:133: ./drivers/gpu/drm/drm_fb_dma_helper.c”h´Kthj€ubjw )�”}”(hhh]”(j| )�”}”(hŒ&``struct drm_device *drm`` DRM device ”h]”(j‚ )�”}”(hŒ``struct drm_device *drm``”h]”jˆ )�”}”(hj¥h]”hŒstruct drm_device *drm”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj£ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:133: ./drivers/gpu/drm/drm_fb_dma_helper.c”h´KrhjŸubjž )�”}”(hhh]”hÎ)�”}”(hŒ DRM device”h]”hŒ DRM device”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jºh´Krhj»ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjŸubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jºh´Krhjœubj| )�”}”(hŒ6``struct drm_plane_state *old_state`` Old plane state ”h]”(j‚ )�”}”(hŒ%``struct drm_plane_state *old_state``”h]”jˆ )�”}”(hjÞh]”hŒ!struct drm_plane_state *old_state”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÜubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:133: ./drivers/gpu/drm/drm_fb_dma_helper.c”h´KshjØubjž )�”}”(hhh]”hÎ)�”}”(hŒOld plane state”h]”hŒOld plane state”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jóh´Kshjôubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjØubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jóh´Kshjœubj| )�”}”(hŒ2``struct drm_plane_state *state`` New plane state ”h]”(j‚ )�”}”(hŒ!``struct drm_plane_state *state``”h]”jˆ )�”}”(hjh]”hŒstruct drm_plane_state *state”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:133: ./drivers/gpu/drm/drm_fb_dma_helper.c”h´Kthjubjž )�”}”(hhh]”hÎ)�”}”(hŒNew plane state”h]”hŒNew plane state”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j,h´Kthj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j,h´Kthjœubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj€ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjRh]”hŒ Description”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjPubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:133: ./drivers/gpu/drm/drm_fb_dma_helper.c”h´Kvhj€ubhÎ)�”}”(hŒîThis function can be used by drivers that use damage clips and have DMA GEM objects backed by non-coherent memory. Calling this function in a plane's .atomic_update ensures that all the data in the backing memory have been written to RAM.”h]”hŒðThis function can be used by drivers that use damage clips and have DMA GEM objects backed by non-coherent memory. Calling this function in a plane’s .atomic_update ensures that all the data in the backing memory have been written to RAM.”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:133: ./drivers/gpu/drm/drm_fb_dma_helper.c”h´Kuhj€ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj- h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ*drm_fb_dma_get_scanout_buffer (C function)”Œc.drm_fb_dma_get_scanout_buffer”hNt”auh1j† hj- h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒZint drm_fb_dma_get_scanout_buffer (struct drm_plane *plane, struct drm_scanout_buffer *sb)”h]”j¤ )�”}”(hŒYint drm_fb_dma_get_scanout_buffer(struct drm_plane *plane, struct drm_scanout_buffer *sb)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj“h²hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:133: ./drivers/gpu/drm/drm_fb_dma_helper.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Œdrm_fb_dma_get_scanout_buffer”h]”jÓ )�”}”(hŒdrm_fb_dma_get_scanout_buffer”h]”hŒdrm_fb_dma_get_scanout_buffer”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj´ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj“h²hh³j¥h´KœubjÞ)�”}”(hŒ8(struct drm_plane *plane, struct drm_scanout_buffer *sb)”h]”(jä)�”}”(hŒstruct drm_plane *plane”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Œ drm_plane”h]”hŒ drm_plane”…”�”}”(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%)�”}”jjºsbŒc.drm_fb_dma_get_scanout_buffer”†”asbuh1hhjÐubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÐubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÐubjÓ )�”}”(hŒplane”h]”hŒplane”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÐubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÌubjä)�”}”(hŒstruct drm_scanout_buffer *sb”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjBubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjBubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_scanout_buffer”h]”hŒdrm_scanout_buffer”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjaubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jfŒmodname”NŒ classname”Njé jì )�”}”jï ]”jŒc.drm_fb_dma_get_scanout_buffer”†”asbuh1hhjBubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjBubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjBubjÓ )�”}”(hŒsb”h]”hŒsb”…”�”}”(•hj�h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjBubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÌubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj“h²hh³j¥h´Kœubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ)Provide a scanout buffer in case of panic”h]”hŒ)Provide a scanout buffer in case of panic”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:133: ./drivers/gpu/drm/drm_fb_dma_helper.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²hhj- h³Nh´Nubj) )�”}”(hX±**Parameters** ``struct drm_plane *plane`` DRM primary plane ``struct drm_scanout_buffer *sb`` scanout buffer for the panic handler **Return** 0 or negative error code **Description** Generic get_scanout_buffer() implementation, for drivers that uses the drm_fb_dma_helper. It won't call vmap in the panic context, so the driver should make sure the primary plane is vmapped, otherwise the panic screen won't get displayed.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjéh]”hŒ Parameters”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjçubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:133: ./drivers/gpu/drm/drm_fb_dma_helper.c”h´K hjãubjw )�”}”(hhh]”(j| )�”}”(hŒ.``struct drm_plane *plane`` DRM primary plane ”h]”(j‚ )�”}”(hŒ``struct drm_plane *plane``”h]”jˆ )�”}”(hjh]”hŒstruct drm_plane *plane”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:133: ./drivers/gpu/drm/drm_fb_dma_helper.c”h´K�hjubjž )�”}”(hhh]”hÎ)�”}”(hŒDRM primary plane”h]”hŒDRM primary plane”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jh´K�hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jh´K�hjÿubj| )�”}”(hŒG``struct drm_scanout_buffer *sb`` scanout buffer for the panic handler ”h]”(j‚ )�”}”(hŒ!``struct drm_scanout_buffer *sb``”h]”jˆ )�”}”(hjAh]”hŒstruct drm_scanout_buffer *sb”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:133: ./drivers/gpu/drm/drm_fb_dma_helper.c”h´Kžhj;ubjž )�”}”(hhh]”hÎ)�”}”(hŒ$scanout buffer for the panic handler”h]”hŒ$scanout buffer for the panic handler”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jVh´KžhjWubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jVh´Kžhjÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjãubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj|h]”hŒReturn”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjzubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:133: ./drivers/gpu/drm/drm_fb_dma_helper.c”h´K hjãubhÎ)�”}”(hŒ0 or negative error code”h]”hŒ0 or negative error code”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:133: ./drivers/gpu/drm/drm_fb_dma_helper.c”h´KŸhjãubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj£h]”hŒ Description”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:133: ./drivers/gpu/drm/drm_fb_dma_helper.c”h´K¡hjãubhÎ)�”}”(hŒïGeneric get_scanout_buffer() implementation, for drivers that uses the drm_fb_dma_helper. It won't call vmap in the panic context, so the driver should make sure the primary plane is vmapped, otherwise the panic screen won't get displayed.”h]”hŒóGeneric get_scanout_buffer() implementation, for drivers that uses the drm_fb_dma_helper. It won’t call vmap in the panic context, so the driver should make sure the primary plane is vmapped, otherwise the panic screen won’t get displayed.”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:133: ./drivers/gpu/drm/drm_fb_dma_helper.c”h´K hjãubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj- h²hh³Nh´Nubeh}”(h]”jah ]”h"]”Œ*framebuffer dma helper functions reference”ah$]”h&]”uh1hµhh·h²hh³hÌh´K€ubh¶)�”}”(hhh]”(h»)�”}”(hŒ Framebuffer GEM Helper Reference”h]”hŒ Framebuffer GEM Helper Reference”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÊj7uh1hºhjÖh²hh³hÌh´K‰ubhÎ)�”}”(hŒ“This library provides helpers for drivers that don't subclass :c:type:`drm_framebuffer` and use :c:type:`drm_gem_object` for their backing storage.”h]”(hŒ@This library provides helpers for drivers that don’t subclass ”…”�”}”(hjçh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_framebuffer`”h]”jˆ )�”}”(hjñh]”hŒdrm_framebuffer”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjïubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_framebuffer”uh1hh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:139: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´K!hjçubhŒ and use ”…”�”}”(hjçh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_gem_object`”h]”jˆ )�”}”(hjh]”hŒdrm_gem_object”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_gem_object”uh1hh³jh´K!hjçubhŒ for their backing storage.”…”�”}”(hjçh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jh´K!hjÖh²hubhÎ)�”}”(hŒµDrivers without additional needs to validate framebuffers can simply use drm_gem_fb_create() and everything is wired up automatically. Other drivers can use all parts independently.”h]”hŒµDrivers without additional needs to validate framebuffers can simply use drm_gem_fb_create() and everything is wired up automatically. Other drivers can use all parts independently.”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:139: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´K$hjÖh²hubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_gem_fb_get_obj (C function)”Œc.drm_gem_fb_get_obj”hNt”auh1j† hjÖh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ[struct drm_gem_object * drm_gem_fb_get_obj (struct drm_framebuffer *fb, unsigned int plane)”h]”j¤ )�”}”(hŒYstruct drm_gem_object *drm_gem_fb_get_obj(struct drm_framebuffer *fb, unsigned int plane)”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj`h²hh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´K,ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj`h²hh³jqh´K,ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_gem_object”h]”hŒdrm_gem_object”…”�”}”(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Œdrm_gem_fb_get_obj”sbŒc.drm_gem_fb_get_obj”†”asbuh1hhj`h²hh³jqh´K,ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj`h²hh³jqh´K,ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj`h²hh³jqh´K,ubjÍ )�”}”(hŒdrm_gem_fb_get_obj”h]”jÓ )�”}”(hj¡h]”hŒdrm_gem_fb_get_obj”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¿ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj`h²hh³jqh´K,ubjÞ)�”}”(hŒ0(struct drm_framebuffer *fb, unsigned int plane)”h]”(jä)�”}”(hŒstruct drm_framebuffer *fb”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Œdrm_framebuffer”h]”hŒdrm_framebuffer”…”�”}”(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.drm_gem_fb_get_obj”†”asbuh1hhjÚubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÚubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÚubjÓ )�”}”(hŒfb”h]”hŒfb”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÚubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÖubjä)�”}”(hŒunsigned int plane”h]”(j¦)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjJubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjJubj¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjJubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjJubjÓ )�”}”(hŒplane”h]”hŒplane”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjJubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÖubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj`h²hh³jqh´K,ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj\h²hh³jqh´K,ubah}”(h]”jWah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jqh´K,hjYh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ&Get GEM object backing the framebuffer”h]”hŒ&Get GEM object backing the framebuffer”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´K,hj­h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjYh²hh³jqh´K,ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jÈj$ jÈj% ‰j& ‰j' ‰uh1j˜ h²hhjÖh³Nh´Nubj) )�”}”(hXN**Parameters** ``struct drm_framebuffer *fb`` Framebuffer ``unsigned int plane`` Plane index **Description** No additional reference is taken beyond the one that the :c:type:`drm_frambuffer` already holds. **Return** Pointer to :c:type:`drm_gem_object` for the given framebuffer and plane index or NULL if it does not exist.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjÒh]”hŒ Parameters”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÐubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´K0hjÌubjw )�”}”(hhh]”(j| )�”}”(hŒ+``struct drm_framebuffer *fb`` Framebuffer ”h]”(j‚ )�”}”(hŒ``struct drm_framebuffer *fb``”h]”jˆ )�”}”(hjñh]”hŒstruct drm_framebuffer *fb”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjïubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´K-hjëubjž )�”}”(hhh]”hÎ)�”}”(hŒ Framebuffer”h]”hŒ Framebuffer”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jh´K-hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjëubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jh´K-hjèubj| )�”}”(hŒ#``unsigned int plane`` Plane index ”h]”(j‚ )�”}”(hŒ``unsigned int plane``”h]”jˆ )�”}”(hj*h]”hŒunsigned int plane”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´K.hj$ubjž )�”}”(hhh]”hÎ)�”}”(hŒ Plane index”h]”hŒ Plane index”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j?h´K.hj@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j?h´K.hjèubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÌubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjeh]”hŒ Description”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjcubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´K0hjÌubhÎ)�”}”(hŒ`No additional reference is taken beyond the one that the :c:type:`drm_frambuffer` already holds.”h]”(hŒ9No additional reference is taken beyond the one that the ”…”�”}”(hj{h²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_frambuffer`”h]”jˆ )�”}”(hj…h]”hŒdrm_frambuffer”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjƒubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_frambuffer”uh1hh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´K/hj{ubhŒ already holds.”…”�”}”(hj{h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¢h´K/hjÌubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj¯h]”hŒReturn”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj­ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´K2hjÌubhÎ)�”}”(hŒkPointer to :c:type:`drm_gem_object` for the given framebuffer and plane index or NULL if it does not exist.”h]”(hŒ Pointer to ”…”�”}”(hjÅh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_gem_object`”h]”jˆ )�”}”(hjÏh]”hŒdrm_gem_object”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÍubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_gem_object”uh1hh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´K3hjÅubhŒH for the given framebuffer and plane index or NULL if it does not exist.”…”�”}”(hjÅh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jìh´K3hjÌubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÖh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_gem_fb_destroy (C function)”Œc.drm_gem_fb_destroy”hNt”auh1j† hjÖh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ4void drm_gem_fb_destroy (struct drm_framebuffer *fb)”h]”j¤ )�”}”(hŒ3void drm_gem_fb_destroy(struct drm_framebuffer *fb)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjh²hh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´K]ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjh²hh³j%h´K]ubjÍ )�”}”(hŒdrm_gem_fb_destroy”h]”jÓ )�”}”(hŒdrm_gem_fb_destroy”h]”hŒdrm_gem_fb_destroy”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj4ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjh²hh³j%h´K]ubjÞ)�”}”(hŒ(struct drm_framebuffer *fb)”h]”jä)�”}”(hŒstruct drm_framebuffer *fb”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjPubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjPubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_framebuffer”h]”hŒdrm_framebuffer”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjoubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jtŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj:sbŒc.drm_gem_fb_destroy”†”asbuh1hhjPubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjPubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjPubjÓ )�”}”(hŒfb”h]”hŒfb”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjPubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjLubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjh²hh³j%h´K]ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjh²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ŒFree GEM backed framebuffer”h]”hŒFree GEM backed framebuffer”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.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²hhjÖh³Nh´Nubj) )�”}”(hX **Parameters** ``struct drm_framebuffer *fb`` Framebuffer **Description** Frees a GEM backed framebuffer with its backing buffer(s) and the structure itself. Drivers can use this as their :c:type:`drm_framebuffer_funcs->destroy ` callback.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjùh]”hŒ Parameters”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´Kahjóubjw )�”}”(hhh]”j| )�”}”(hŒ+``struct drm_framebuffer *fb`` Framebuffer ”h]”(j‚ )�”}”(hŒ``struct drm_framebuffer *fb``”h]”jˆ )�”}”(hjh]”hŒstruct drm_framebuffer *fb”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´K^hjubjž )�”}”(hhh]”hÎ)�”}”(hŒ Framebuffer”h]”hŒ Framebuffer”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j-h´K^hj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j-h´K^hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjóubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjSh]”hŒ Description”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjQubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´K`hjóubhÎ)�”}”(hŒ¼Frees a GEM backed framebuffer with its backing buffer(s) and the structure itself. Drivers can use this as their :c:type:`drm_framebuffer_funcs->destroy ` callback.”h]”(hŒrFrees a GEM backed framebuffer with its backing buffer(s) and the structure itself. Drivers can use this as their ”…”�”}”(hjih²hh³Nh´Nubh)�”}”(hŒ@:c:type:`drm_framebuffer_funcs->destroy `”h]”jˆ )�”}”(hjsh]”hŒdrm_framebuffer_funcs->destroy”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjqubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_framebuffer_funcs”uh1hh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´K_hjiubhŒ callback.”…”�”}”(hjih²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j�h´K_hjóubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÖh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ%drm_gem_fb_create_handle (C function)”Œc.drm_gem_fb_create_handle”hNt”auh1j† hjÖh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒfint drm_gem_fb_create_handle (struct drm_framebuffer *fb, struct drm_file *file, unsigned int *handle)”h]”j¤ )�”}”(hŒeint drm_gem_fb_create_handle(struct drm_framebuffer *fb, struct drm_file *file, unsigned int *handle)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj·h²hh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´Kqubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj·h²hh³jÉh´KqubjÍ )�”}”(hŒdrm_gem_fb_create_handle”h]”jÓ )�”}”(hŒdrm_gem_fb_create_handle”h]”hŒdrm_gem_fb_create_handle”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjØubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj·h²hh³jÉh´KqubjÞ)�”}”(hŒI(struct drm_framebuffer *fb, struct drm_file *file, unsigned int *handle)”h]”(jä)�”}”(hŒstruct drm_framebuffer *fb”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjôubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjôubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_framebuffer”h]”hŒdrm_framebuffer”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjÞsbŒc.drm_gem_fb_create_handle”†”asbuh1hhjôubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjôubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjôubjÓ )�”}”(hŒfb”h]”hŒfb”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjôubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjðubjä)�”}”(hŒstruct drm_file *file”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjfubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjfubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_file”h]”hŒdrm_file”…”�”}”(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ï ]”j2Œc.drm_gem_fb_create_handle”†”asbuh1hhjfubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjfubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjfubjÓ )�”}”(hŒfile”h]”hŒfile”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjfubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjðubjä)�”}”(hŒunsigned int *handle”h]”(j¦)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(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Œint”h]”hŒint”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjÖubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÖubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÖubjÓ )�”}”(hŒhandle”h]”hŒhandle”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÖubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjðubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj·h²hh³jÉh´Kqubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj³h²hh³jÉh´Kqubah}”(h]”j®ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jÉh´Kqhj°h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ(Create handle for GEM backed framebuffer”h]”hŒ(Create handle for GEM backed framebuffer”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´KqhjFh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj°h²hh³jÉh´Kqubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jaj$ jaj% ‰j& ‰j' ‰uh1j˜ h²hhjÖh³Nh´Nubj) )�”}”(hXó**Parameters** ``struct drm_framebuffer *fb`` Framebuffer ``struct drm_file *file`` DRM file to register the handle for ``unsigned int *handle`` Pointer to return the created handle **Description** This function creates a handle for the GEM object backing the framebuffer. Drivers can use this as their :c:type:`drm_framebuffer_funcs->create_handle ` callback. The GETFB IOCTL calls into this callback. **Return** 0 on success or a negative error code on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjkh]”hŒ Parameters”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjiubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´Kuhjeubjw )�”}”(hhh]”(j| )�”}”(hŒ+``struct drm_framebuffer *fb`` Framebuffer ”h]”(j‚ )�”}”(hŒ``struct drm_framebuffer *fb``”h]”jˆ )�”}”(hjŠh]”hŒstruct drm_framebuffer *fb”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´Krhj„ubjž )�”}”(hhh]”hÎ)�”}”(hŒ Framebuffer”h]”hŒ Framebuffer”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jŸh´Krhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jŸh´Krhj�ubj| )�”}”(hŒ>``struct drm_file *file`` DRM file to register the handle for ”h]”(j‚ )�”}”(hŒ``struct drm_file *file``”h]”jˆ )�”}”(hjÃh]”hŒstruct drm_file *file”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÁubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´Kshj½ubjž )�”}”(hhh]”hÎ)�”}”(hŒ#DRM file to register the handle for”h]”hŒ#DRM file to register the handle for”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jØh´KshjÙubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jØh´Kshj�ubj| )�”}”(hŒ>``unsigned int *handle`` Pointer to return the created handle ”h]”(j‚ )�”}”(hŒ``unsigned int *handle``”h]”jˆ )�”}”(hjüh]”hŒunsigned int *handle”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjúubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´Kthjöubjž )�”}”(hhh]”hÎ)�”}”(hŒ$Pointer to return the created handle”h]”hŒ$Pointer to return the created handle”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jh´Kthjubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjöubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jh´Kthj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjeubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj7h]”hŒ Description”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´KvhjeubhÎ)�”}”(hŒãThis function creates a handle for the GEM object backing the framebuffer. Drivers can use this as their :c:type:`drm_framebuffer_funcs->create_handle ` callback. The GETFB IOCTL calls into this callback.”h]”(hŒiThis function creates a handle for the GEM object backing the framebuffer. Drivers can use this as their ”…”�”}”(hjMh²hh³Nh´Nubh)�”}”(hŒF:c:type:`drm_framebuffer_funcs->create_handle `”h]”jˆ )�”}”(hjWh]”hŒ$drm_framebuffer_funcs->create_handle”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjUubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_framebuffer_funcs”uh1hh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´KuhjMubhŒ4 callback. The GETFB IOCTL calls into this callback.”…”�”}”(hjMh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jth´KuhjeubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj�h]”hŒReturn”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´KyhjeubhÎ)�”}”(hŒ10 on success or a negative error code on failure.”h]”hŒ10 on success or a negative error code on failure.”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´Kzhjeubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÖh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ'drm_gem_fb_init_with_funcs (C function)”Œc.drm_gem_fb_init_with_funcs”hNt”auh1j† hjÖh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒâint drm_gem_fb_init_with_funcs (struct drm_device *dev, struct drm_framebuffer *fb, struct drm_file *file, const struct drm_format_info *info, const struct drm_mode_fb_cmd2 *mode_cmd, const struct drm_framebuffer_funcs *funcs)”h]”j¤ )�”}”(hŒáint drm_gem_fb_init_with_funcs(struct drm_device *dev, struct drm_framebuffer *fb, struct drm_file *file, const struct drm_format_info *info, const struct drm_mode_fb_cmd2 *mode_cmd, const struct drm_framebuffer_funcs *funcs)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjÂh²hh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.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Œdrm_gem_fb_init_with_funcs”h]”jÓ )�”}”(hŒdrm_gem_fb_init_with_funcs”h]”hŒdrm_gem_fb_init_with_funcs”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjãubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÂh²hh³jÔh´K…ubjÞ)�”}”(hŒÃ(struct drm_device *dev, struct drm_framebuffer *fb, struct drm_file *file, const struct drm_format_info *info, const struct drm_mode_fb_cmd2 *mode_cmd, const struct drm_framebuffer_funcs *funcs)”h]”(jä)�”}”(hŒstruct drm_device *dev”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjÿubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÿubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_device”h]”hŒ drm_device”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j#Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjésbŒc.drm_gem_fb_init_with_funcs”†”asbuh1hhjÿubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÿubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÿubjÓ )�”}”(hŒdev”h]”hŒdev”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjûubjä)�”}”(hŒstruct drm_framebuffer *fb”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjqubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjqubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_framebuffer”h]”hŒdrm_framebuffer”…”�”}”(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.drm_gem_fb_init_with_funcs”†”asbuh1hhjqubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjqubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjqubjÓ )�”}”(hŒfb”h]”hŒfb”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjqubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjûubjä)�”}”(hŒstruct drm_file *file”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Œdrm_file”h]”hŒdrm_file”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jŒmodname”NŒ classname”Njé jì )�”}”jï ]”j=Œc.drm_gem_fb_init_with_funcs”†”asbuh1hhjáubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjáubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjáubjÓ )�”}”(hŒfile”h]”hŒfile”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjáubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjûubjä)�”}”(hŒ"const struct drm_format_info *info”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjQubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjQubjª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjQubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjQubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_format_info”h]”hŒdrm_format_info”…”�”}”(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.drm_gem_fb_init_with_funcs”†”asbuh1hhjQubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjQubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjQubjÓ )�”}”(hŒinfo”h]”hŒinfo”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjQubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjûubjä)�”}”(hŒ'const struct drm_mode_fb_cmd2 *mode_cmd”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjÜubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÜubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_mode_fb_cmd2”h]”hŒdrm_mode_fb_cmd2”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jŒmodname”NŒ classname”Njé jì )�”}”jï ]”j=Œc.drm_gem_fb_init_with_funcs”†”asbuh1hhjÜubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÜubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÜubjÓ )�”}”(hŒmode_cmd”h]”hŒmode_cmd”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÜubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjûubjä)�”}”(hŒ)const struct drm_framebuffer_funcs *funcs”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjgubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjgubjª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjgubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjgubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_framebuffer_funcs”h]”hŒdrm_framebuffer_funcs”…”�”}”(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.drm_gem_fb_init_with_funcs”†”asbuh1hhjgubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjgubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjgubjÓ )�”}”(hŒfuncs”h]”hŒfuncs”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjgubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjûubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjÂh²hh³jÔh´K…ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ³Helper function for implementing :c:type:`drm_mode_config_funcs.fb_create ` callback in cases when the driver allocates a subclass of struct drm_framebuffer”h]”(hŒ!Helper function for implementing ”…”�”}”(hj h²hh³Nh´Nubh)�”}”(hŒA:c:type:`drm_mode_config_funcs.fb_create `”h]”jˆ )�”}”(hj h]”hŒdrm_mode_config_funcs.fb_create”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jì )�”}”jï ]”j=Œc.drm_gem_fb_init_with_funcs”†”asbjñ Œdrm_mode_config_funcs”uh1hh³jqh´K,hj ubhŒQ callback in cases when the driver allocates a subclass of struct drm_framebuffer”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.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# jG j$ jG j% ‰j& ‰j' ‰uh1j˜ h²hhjÖh³Nh´Nubj) )�”}”(hX¦**Parameters** ``struct drm_device *dev`` DRM device ``struct drm_framebuffer *fb`` framebuffer object ``struct drm_file *file`` DRM file that holds the GEM handle(s) backing the framebuffer ``const struct drm_format_info *info`` pixel format information ``const struct drm_mode_fb_cmd2 *mode_cmd`` Metadata from the userspace framebuffer creation request ``const struct drm_framebuffer_funcs *funcs`` vtable to be used for the new framebuffer object **Description** This function can be used to set :c:type:`drm_framebuffer_funcs` for drivers that need custom framebuffer callbacks. Use drm_gem_fb_create() if you don't need to change :c:type:`drm_framebuffer_funcs`. The function does buffer size validation. The buffer size validation is for a general case, though, so users should pay attention to the checks being appropriate for them or, at least, non-conflicting. **Return** Zero or a negative error code.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjQ h]”hŒ Parameters”…”�”}”(hjS h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjO ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´K‰hjK ubjw )�”}”(hhh]”(j| )�”}”(hŒ&``struct drm_device *dev`` DRM device ”h]”(j‚ )�”}”(hŒ``struct drm_device *dev``”h]”jˆ )�”}”(hjp h]”hŒstruct drm_device *dev”…”�”}”(hjr h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjn ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´KŠhjj ubjž )�”}”(hhh]”hÎ)�”}”(hŒ DRM device”h]”hŒ DRM device”…”�”}”(hj‰ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j… h´KŠhj† ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j… h´KŠhjg ubj| )�”}”(hŒ2``struct drm_framebuffer *fb`` framebuffer object ”h]”(j‚ )�”}”(hŒ``struct drm_framebuffer *fb``”h]”jˆ )�”}”(hj© h]”hŒstruct drm_framebuffer *fb”…”�”}”(hj« h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj§ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´K‹hj£ ubjž )�”}”(hhh]”hÎ)�”}”(hŒframebuffer object”h]”hŒframebuffer object”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¾ h´K‹hj¿ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj£ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¾ h´K‹hjg ubj| )�”}”(hŒX``struct drm_file *file`` DRM file that holds the GEM handle(s) backing the framebuffer ”h]”(j‚ )�”}”(hŒ``struct drm_file *file``”h]”jˆ )�”}”(hjâ h]”hŒstruct drm_file *file”…”�”}”(hjä h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjà ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´KŒhjÜ ubjž )�”}”(hhh]”hÎ)�”}”(hŒ=DRM file that holds the GEM handle(s) backing the framebuffer”h]”hŒ=DRM file that holds the GEM handle(s) backing the framebuffer”…”�”}”(hjû h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j÷ h´KŒhjø ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÜ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j÷ h´KŒhjg ubj| )�”}”(hŒ@``const struct drm_format_info *info`` pixel format information ”h]”(j‚ )�”}”(hŒ&``const struct drm_format_info *info``”h]”jˆ )�”}”(hj!h]”hŒ"const struct drm_format_info *info”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´K�hj!ubjž )�”}”(hhh]”hÎ)�”}”(hŒpixel format information”h]”hŒpixel format information”…”�”}”(hj4!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j0!h´K�hj1!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j0!h´K�hjg ubj| )�”}”(hŒe``const struct drm_mode_fb_cmd2 *mode_cmd`` Metadata from the userspace framebuffer creation request ”h]”(j‚ )�”}”(hŒ+``const struct drm_mode_fb_cmd2 *mode_cmd``”h]”jˆ )�”}”(hjT!h]”hŒ'const struct drm_mode_fb_cmd2 *mode_cmd”…”�”}”(hjV!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjR!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´KŽhjN!ubjž )�”}”(hhh]”hÎ)�”}”(hŒ8Metadata from the userspace framebuffer creation request”h]”hŒ8Metadata from the userspace framebuffer creation request”…”�”}”(hjm!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³ji!h´KŽhjj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjN!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³ji!h´KŽhjg ubj| )�”}”(hŒ_``const struct drm_framebuffer_funcs *funcs`` vtable to be used for the new framebuffer object ”h]”(j‚ )�”}”(hŒ-``const struct drm_framebuffer_funcs *funcs``”h]”jˆ )�”}”(hj�!h]”hŒ)const struct drm_framebuffer_funcs *funcs”…”�”}”(hj�!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj‹!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´K�hj‡!ubjž )�”}”(hhh]”hÎ)�”}”(hŒ0vtable to be used for the new framebuffer object”h]”hŒ0vtable to be used for the new framebuffer object”…”�”}”(hj¦!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¢!h´K�hj£!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj‡!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¢!h´K�hjg ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjK ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjÈ!h]”hŒ Description”…”�”}”(hjÊ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÆ!ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´K‘hjK ubhÎ)�”}”(hX“This function can be used to set :c:type:`drm_framebuffer_funcs` for drivers that need custom framebuffer callbacks. Use drm_gem_fb_create() if you don't need to change :c:type:`drm_framebuffer_funcs`. The function does buffer size validation. The buffer size validation is for a general case, though, so users should pay attention to the checks being appropriate for them or, at least, non-conflicting.”h]”(hŒ!This function can be used to set ”…”�”}”(hjÞ!h²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_framebuffer_funcs`”h]”jˆ )�”}”(hjè!h]”hŒdrm_framebuffer_funcs”…”�”}”(hjê!h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjæ!ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_framebuffer_funcs”uh1hh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´K�hjÞ!ubhŒk for drivers that need custom framebuffer callbacks. Use drm_gem_fb_create() if you don’t need to change ”…”�”}”(hjÞ!h²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_framebuffer_funcs`”h]”jˆ )�”}”(hj "h]”hŒdrm_framebuffer_funcs”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj "ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_framebuffer_funcs”uh1hh³j"h´K�hjÞ!ubhŒË. The function does buffer size validation. The buffer size validation is for a general case, though, so users should pay attention to the checks being appropriate for them or, at least, non-conflicting.”…”�”}”(hjÞ!h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j"h´K�hjK ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj5"h]”hŒReturn”…”�”}”(hj7"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj3"ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´K—hjK ubhÎ)�”}”(hŒZero or a negative error code.”h]”hŒZero or a negative error code.”…”�”}”(hjK"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´K˜hjK ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÖh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ)drm_gem_fb_create_with_funcs (C function)”Œc.drm_gem_fb_create_with_funcs”hNt”auh1j† hjÖh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒÝstruct drm_framebuffer * drm_gem_fb_create_with_funcs (struct drm_device *dev, struct drm_file *file, const struct drm_format_info *info, const struct drm_mode_fb_cmd2 *mode_cmd, const struct drm_framebuffer_funcs *funcs)”h]”j¤ )�”}”(hŒÛstruct drm_framebuffer *drm_gem_fb_create_with_funcs(struct drm_device *dev, struct drm_file *file, const struct drm_format_info *info, const struct drm_mode_fb_cmd2 *mode_cmd, const struct drm_framebuffer_funcs *funcs)”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjz"h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjv"h²hh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´KØubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆ"h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjv"h²hh³j‡"h´KØubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_framebuffer”h]”hŒdrm_framebuffer”…”�”}”(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Œdrm_gem_fb_create_with_funcs”sbŒc.drm_gem_fb_create_with_funcs”†”asbuh1hhjv"h²hh³j‡"h´KØubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjº"h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjv"h²hh³j‡"h´KØubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÈ"h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjv"h²hh³j‡"h´KØubjÍ )�”}”(hŒdrm_gem_fb_create_with_funcs”h]”jÓ )�”}”(hj·"h]”hŒdrm_gem_fb_create_with_funcs”…”�”}”(hjÙ"h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÕ"ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjv"h²hh³j‡"h´KØubjÞ)�”}”(hŒ§(struct drm_device *dev, struct drm_file *file, const struct drm_format_info *info, const struct drm_mode_fb_cmd2 *mode_cmd, const struct drm_framebuffer_funcs *funcs)”h]”(jä)�”}”(hŒstruct drm_device *dev”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Œ drm_device”h]”hŒ drm_device”…”�”}”(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.drm_gem_fb_create_with_funcs”†”asbuh1hhjð"ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0#h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjð"ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj>#h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjð"ubjÓ )�”}”(hŒdev”h]”hŒdev”…”�”}”(hjK#h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjð"ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjì"ubjä)�”}”(hŒstruct drm_file *file”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjd#h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj`#ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjq#h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj`#ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_file”h]”hŒdrm_file”…”�”}”(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.drm_gem_fb_create_with_funcs”†”asbuh1hhj`#ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj #h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj`#ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj®#h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj`#ubjÓ )�”}”(hŒfile”h]”hŒfile”…”�”}”(hj»#h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj`#ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjì"ubjä)�”}”(hŒ"const struct drm_format_info *info”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(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Œdrm_format_info”h]”hŒdrm_format_info”…”�”}”(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.drm_gem_fb_create_with_funcs”†”asbuh1hhjÐ#ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+$h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÐ#ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj9$h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÐ#ubjÓ )�”}”(hŒinfo”h]”hŒinfo”…”�”}”(hjF$h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÐ#ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjì"ubjä)�”}”(hŒ'const struct drm_mode_fb_cmd2 *mode_cmd”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hj_$h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj[$ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjl$h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj[$ubjª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjz$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Œdrm_mode_fb_cmd2”h]”hŒdrm_mode_fb_cmd2”…”�”}”(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.drm_gem_fb_create_with_funcs”†”asbuh1hhj[$ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶$h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj[$ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÄ$h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj[$ubjÓ )�”}”(hŒmode_cmd”h]”hŒmode_cmd”…”�”}”(hjÑ$h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj[$ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjì"ubjä)�”}”(hŒ)const struct drm_framebuffer_funcs *funcs”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(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Œdrm_framebuffer_funcs”h]”hŒdrm_framebuffer_funcs”…”�”}”(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.drm_gem_fb_create_with_funcs”†”asbuh1hhjæ$ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjA%h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjæ$ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjO%h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjæ$ubjÓ )�”}”(hŒfuncs”h]”hŒfuncs”…”�”}”(hj\%h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjæ$ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjì"ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjv"h²hh³j‡"h´KØubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjr"h²hh³j‡"h´KØubah}”(h]”jm"ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j‡"h´KØhjo"h²hubj )�”}”(hhh]”hÎ)�”}”(hŒbHelper function for the :c:type:`drm_mode_config_funcs.fb_create ` callback”h]”(hŒHelper function for the ”…”�”}”(hj†%h²hh³Nh´Nubh)�”}”(hŒA:c:type:`drm_mode_config_funcs.fb_create `”h]”jˆ )�”}”(hj�%h]”hŒdrm_mode_config_funcs.fb_create”…”�”}”(hj’%h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjŽ%ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jì )�”}”jï ]”jµ"Œc.drm_gem_fb_create_with_funcs”†”asbjñ Œdrm_mode_config_funcs”uh1hh³jqh´K,hj†%ubhŒ callback”…”�”}”(hj†%h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´KØhjƒ%h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjo"h²hh³j‡"h´KØubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jÆ%j$ jÆ%j% ‰j& ‰j' ‰uh1j˜ h²hhjÖh³Nh´Nubj) )�”}”(hX**Parameters** ``struct drm_device *dev`` DRM device ``struct drm_file *file`` DRM file that holds the GEM handle(s) backing the framebuffer ``const struct drm_format_info *info`` pixel format information ``const struct drm_mode_fb_cmd2 *mode_cmd`` Metadata from the userspace framebuffer creation request ``const struct drm_framebuffer_funcs *funcs`` vtable to be used for the new framebuffer object **Description** This function can be used to set :c:type:`drm_framebuffer_funcs` for drivers that need custom framebuffer callbacks. Use drm_gem_fb_create() if you don't need to change :c:type:`drm_framebuffer_funcs`. The function does buffer size validation. **Return** Pointer to a :c:type:`drm_framebuffer` on success or an error pointer on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjÐ%h]”hŒ Parameters”…”�”}”(hjÒ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÎ%ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´KÜhjÊ%ubjw )�”}”(hhh]”(j| )�”}”(hŒ&``struct drm_device *dev`` DRM device ”h]”(j‚ )�”}”(hŒ``struct drm_device *dev``”h]”jˆ )�”}”(hjï%h]”hŒstruct drm_device *dev”…”�”}”(hjñ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjí%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´KÛhjé%ubjž )�”}”(hhh]”hÎ)�”}”(hŒ DRM device”h]”hŒ DRM device”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j&h´KÛhj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjé%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j&h´KÛhjæ%ubj| )�”}”(hŒX``struct drm_file *file`` DRM file that holds the GEM handle(s) backing the framebuffer ”h]”(j‚ )�”}”(hŒ``struct drm_file *file``”h]”jˆ )�”}”(hj(&h]”hŒstruct drm_file *file”…”�”}”(hj*&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj&&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´KÜhj"&ubjž )�”}”(hhh]”hÎ)�”}”(hŒ=DRM file that holds the GEM handle(s) backing the framebuffer”h]”hŒ=DRM file that holds the GEM handle(s) backing the framebuffer”…”�”}”(hjA&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j=&h´KÜhj>&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj"&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j=&h´KÜhjæ%ubj| )�”}”(hŒ@``const struct drm_format_info *info`` pixel format information ”h]”(j‚ )�”}”(hŒ&``const struct drm_format_info *info``”h]”jˆ )�”}”(hja&h]”hŒ"const struct drm_format_info *info”…”�”}”(hjc&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj_&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´KÝhj[&ubjž )�”}”(hhh]”hÎ)�”}”(hŒpixel format information”h]”hŒpixel format information”…”�”}”(hjz&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jv&h´KÝhjw&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj[&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jv&h´KÝhjæ%ubj| )�”}”(hŒe``const struct drm_mode_fb_cmd2 *mode_cmd`` Metadata from the userspace framebuffer creation request ”h]”(j‚ )�”}”(hŒ+``const struct drm_mode_fb_cmd2 *mode_cmd``”h]”jˆ )�”}”(hjš&h]”hŒ'const struct drm_mode_fb_cmd2 *mode_cmd”…”�”}”(hjœ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj˜&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´KÞhj”&ubjž )�”}”(hhh]”hÎ)�”}”(hŒ8Metadata from the userspace framebuffer creation request”h]”hŒ8Metadata from the userspace framebuffer creation request”…”�”}”(hj³&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¯&h´KÞhj°&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj”&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¯&h´KÞhjæ%ubj| )�”}”(hŒ_``const struct drm_framebuffer_funcs *funcs`` vtable to be used for the new framebuffer object ”h]”(j‚ )�”}”(hŒ-``const struct drm_framebuffer_funcs *funcs``”h]”jˆ )�”}”(hjÓ&h]”hŒ)const struct drm_framebuffer_funcs *funcs”…”�”}”(hjÕ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÑ&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´KßhjÍ&ubjž )�”}”(hhh]”hÎ)�”}”(hŒ0vtable to be used for the new framebuffer object”h]”hŒ0vtable to be used for the new framebuffer object”…”�”}”(hjì&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jè&h´Kßhjé&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÍ&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jè&h´Kßhjæ%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÊ%ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj'h]”hŒ Description”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj 'ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´KáhjÊ%ubhÎ)�”}”(hŒóThis function can be used to set :c:type:`drm_framebuffer_funcs` for drivers that need custom framebuffer callbacks. Use drm_gem_fb_create() if you don't need to change :c:type:`drm_framebuffer_funcs`. The function does buffer size validation.”h]”(hŒ!This function can be used to set ”…”�”}”(hj$'h²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_framebuffer_funcs`”h]”jˆ )�”}”(hj.'h]”hŒdrm_framebuffer_funcs”…”�”}”(hj0'h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj,'ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_framebuffer_funcs”uh1hh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´Kàhj$'ubhŒk for drivers that need custom framebuffer callbacks. Use drm_gem_fb_create() if you don’t need to change ”…”�”}”(hj$'h²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_framebuffer_funcs`”h]”jˆ )�”}”(hjR'h]”hŒdrm_framebuffer_funcs”…”�”}”(hjT'h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjP'ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_framebuffer_funcs”uh1hh³jK'h´Kàhj$'ubhŒ+. The function does buffer size validation.”…”�”}”(hj$'h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jK'h´KàhjÊ%ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj{'h]”hŒReturn”…”�”}”(hj}'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjy'ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´KähjÊ%ubhÎ)�”}”(hŒQPointer to a :c:type:`drm_framebuffer` on success or an error pointer on failure.”h]”(hŒ Pointer to a ”…”�”}”(hj‘'h²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_framebuffer`”h]”jˆ )�”}”(hj›'h]”hŒdrm_framebuffer”…”�”}”(hj�'h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj™'ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_framebuffer”uh1hh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´Kåhj‘'ubhŒ+ on success or an error pointer on failure.”…”�”}”(hj‘'h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¸'h´KåhjÊ%ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÖh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_gem_fb_create (C function)”Œc.drm_gem_fb_create”hNt”auh1j† hjÖh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ§struct drm_framebuffer * drm_gem_fb_create (struct drm_device *dev, struct drm_file *file, const struct drm_format_info *info, const struct drm_mode_fb_cmd2 *mode_cmd)”h]”j¤ )�”}”(hŒ¥struct drm_framebuffer *drm_gem_fb_create(struct drm_device *dev, struct drm_file *file, const struct drm_format_info *info, const struct drm_mode_fb_cmd2 *mode_cmd)”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjã'h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjß'h²hh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñ'h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjß'h²hh³jð'h´Mubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_framebuffer”h]”hŒdrm_framebuffer”…”�”}”(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Œdrm_gem_fb_create”sbŒc.drm_gem_fb_create”†”asbuh1hhjß'h²hh³jð'h´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#(h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjß'h²hh³jð'h´Mubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj1(h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjß'h²hh³jð'h´MubjÍ )�”}”(hŒdrm_gem_fb_create”h]”jÓ )�”}”(hj (h]”hŒdrm_gem_fb_create”…”�”}”(hjB(h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj>(ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjß'h²hh³jð'h´MubjÞ)�”}”(hŒ|(struct drm_device *dev, struct drm_file *file, const struct drm_format_info *info, const struct drm_mode_fb_cmd2 *mode_cmd)”h]”(jä)�”}”(hŒstruct drm_device *dev”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj](h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”•h&]”uh1j© hjY(ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjj(h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjY(ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_device”h]”hŒ drm_device”…”�”}”(hj{(h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjx(ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j}(Œmodname”NŒ classname”Njé jì )�”}”jï ]”j(Œc.drm_gem_fb_create”†”asbuh1hhjY(ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™(h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjY(ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj§(h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjY(ubjÓ )�”}”(hŒdev”h]”hŒdev”…”�”}”(hj´(h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjY(ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjU(ubjä)�”}”(hŒstruct drm_file *file”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Œdrm_file”h]”hŒdrm_file”…”�”}”(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.drm_gem_fb_create”†”asbuh1hhjÉ(ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj )h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÉ(ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÉ(ubjÓ )�”}”(hŒfile”h]”hŒfile”…”�”}”(hj$)h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÉ(ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjU(ubjä)�”}”(hŒ"const struct drm_format_info *info”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hj=)h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj9)ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJ)h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj9)ubjª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjX)h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj9)ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hje)h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj9)ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_format_info”h]”hŒdrm_format_info”…”�”}”(hjv)h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjs)ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jx)Œmodname”NŒ classname”Njé jì )�”}”jï ]”j(Œc.drm_gem_fb_create”†”asbuh1hhj9)ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”)h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj9)ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj¢)h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj9)ubjÓ )�”}”(hŒinfo”h]”hŒinfo”…”�”}”(hj¯)h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj9)ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjU(ubjä)�”}”(hŒ'const struct drm_mode_fb_cmd2 *mode_cmd”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(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Œdrm_mode_fb_cmd2”h]”hŒdrm_mode_fb_cmd2”…”�”}”(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.drm_gem_fb_create”†”asbuh1hhjÄ)ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÄ)ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj-*h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÄ)ubjÓ )�”}”(hŒmode_cmd”h]”hŒmode_cmd”…”�”}”(hj:*h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÄ)ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjU(ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjß'h²hh³jð'h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjÛ'h²hh³jð'h´Mubah}”(h]”jÖ'ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jð'h´MhjØ'h²hubj )�”}”(hhh]”hÎ)�”}”(hŒbHelper function for the :c:type:`drm_mode_config_funcs.fb_create ` callback”h]”(hŒHelper function for the ”…”�”}”(hjd*h²hh³Nh´Nubh)�”}”(hŒA:c:type:`drm_mode_config_funcs.fb_create `”h]”jˆ )�”}”(hjn*h]”hŒdrm_mode_config_funcs.fb_create”…”�”}”(hjp*h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjl*ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jì )�”}”jï ]”j(Œc.drm_gem_fb_create”†”asbjñ Œdrm_mode_config_funcs”uh1hh³jqh´K,hjd*ubhŒ callback”…”�”}”(hjd*h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´Mhja*h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjØ'h²hh³jð'h´Mubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j¤*j$ j¤*j% ‰j& ‰j' ‰uh1j˜ h²hhjÖh³Nh´Nubj) )�”}”(hXÌ**Parameters** ``struct drm_device *dev`` DRM device ``struct drm_file *file`` DRM file that holds the GEM handle(s) backing the framebuffer ``const struct drm_format_info *info`` pixel format information ``const struct drm_mode_fb_cmd2 *mode_cmd`` Metadata from the userspace framebuffer creation request **Description** This function creates a new framebuffer object described by :c:type:`drm_mode_fb_cmd2`. This description includes handles for the buffer(s) backing the framebuffer. If your hardware has special alignment or pitch requirements these should be checked before calling this function. The function does buffer size validation. Use drm_gem_fb_create_with_dirty() if you need framebuffer flushing. Drivers can use this as their :c:type:`drm_mode_config_funcs.fb_create ` callback. The ADDFB2 IOCTL calls into this callback. **Return** Pointer to a :c:type:`drm_framebuffer` on success or an error pointer on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj®*h]”hŒ Parameters”…”�”}”(hj°*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¬*ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´M hj¨*ubjw )�”}”(hhh]”(j| )�”}”(hŒ&``struct drm_device *dev`` DRM device ”h]”(j‚ )�”}”(hŒ``struct drm_device *dev``”h]”jˆ )�”}”(hjÍ*h]”hŒstruct drm_device *dev”…”�”}”(hjÏ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjË*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´MhjÇ*ubjž )�”}”(hhh]”hÎ)�”}”(hŒ DRM device”h]”hŒ DRM device”…”�”}”(hjæ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jâ*h´Mhjã*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÇ*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jâ*h´MhjÄ*ubj| )�”}”(hŒX``struct drm_file *file`` DRM file that holds the GEM handle(s) backing the framebuffer ”h]”(j‚ )�”}”(hŒ``struct drm_file *file``”h]”jˆ )�”}”(hj+h]”hŒstruct drm_file *file”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´Mhj+ubjž )�”}”(hhh]”hÎ)�”}”(hŒ=DRM file that holds the GEM handle(s) backing the framebuffer”h]”hŒ=DRM file that holds the GEM handle(s) backing the framebuffer”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j+h´Mhj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j+h´MhjÄ*ubj| )�”}”(hŒ@``const struct drm_format_info *info`` pixel format information ”h]”(j‚ )�”}”(hŒ&``const struct drm_format_info *info``”h]”jˆ )�”}”(hj?+h]”hŒ"const struct drm_format_info *info”…”�”}”(hjA+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj=+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´M hj9+ubjž )�”}”(hhh]”hÎ)�”}”(hŒpixel format information”h]”hŒpixel format information”…”�”}”(hjX+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jT+h´M hjU+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj9+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jT+h´M hjÄ*ubj| )�”}”(hŒe``const struct drm_mode_fb_cmd2 *mode_cmd`` Metadata from the userspace framebuffer creation request ”h]”(j‚ )�”}”(hŒ+``const struct drm_mode_fb_cmd2 *mode_cmd``”h]”jˆ )�”}”(hjx+h]”hŒ'const struct drm_mode_fb_cmd2 *mode_cmd”…”�”}”(hjz+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjv+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´M hjr+ubjž )�”}”(hhh]”hÎ)�”}”(hŒ8Metadata from the userspace framebuffer creation request”h]”hŒ8Metadata from the userspace framebuffer creation request”…”�”}”(hj‘+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j�+h´M hjŽ+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjr+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j�+h´M hjÄ*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj¨*ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj³+h]”hŒ Description”…”�”}”(hjµ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj±+ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´M hj¨*ubhÎ)�”}”(hŒ¤This function creates a new framebuffer object described by :c:type:`drm_mode_fb_cmd2`. This description includes handles for the buffer(s) backing the framebuffer.”h]”(hŒ` callback. The ADDFB2 IOCTL calls into this callback.”h]”(hŒDrivers can use this as their ”…”�”}”(hj ,h²hh³Nh´Nubh)�”}”(hŒA:c:type:`drm_mode_config_funcs.fb_create `”h]”jˆ )�”}”(hj,h]”hŒdrm_mode_config_funcs.fb_create”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj,ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_mode_config_funcs”uh1hh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´Mhj ,ubhŒ5 callback. The ADDFB2 IOCTL calls into this callback.”…”�”}”(hj ,h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j1,h´Mhj¨*ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj>,h]”hŒReturn”…”�”}”(hj@,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj<,ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´Mhj¨*ubhÎ)�”}”(hŒQPointer to a :c:type:`drm_framebuffer` on success or an error pointer on failure.”h]”(hŒ Pointer to a ”…”�”}”(hjT,h²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_framebuffer`”h]”jˆ )�”}”(hj^,h]”hŒdrm_framebuffer”…”�”}”(hj`,h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj\,ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_framebuffer”uh1hh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´MhjT,ubhŒ+ on success or an error pointer on failure.”…”�”}”(hjT,h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j{,h´Mhj¨*ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÖh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ)drm_gem_fb_create_with_dirty (C function)”Œc.drm_gem_fb_create_with_dirty”hNt”auh1j† hjÖh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ²struct drm_framebuffer * drm_gem_fb_create_with_dirty (struct drm_device *dev, struct drm_file *file, const struct drm_format_info *info, const struct drm_mode_fb_cmd2 *mode_cmd)”h]”j¤ )�”}”(hŒ°struct drm_framebuffer *drm_gem_fb_create_with_dirty(struct drm_device *dev, struct drm_file *file, const struct drm_format_info *info, const struct drm_mode_fb_cmd2 *mode_cmd)”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj¦,h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj¢,h²hh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.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,ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_framebuffer”h]”hŒdrm_framebuffer”…”�”}”(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Œdrm_gem_fb_create_with_dirty”sbŒc.drm_gem_fb_create_with_dirty”†”asbuh1hhj¢,h²hh³j³,h´M,ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæ,h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¢,h²hh³j³,h´M,ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjô,h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¢,h²hh³j³,h´M,ubjÍ )�”}”(hŒdrm_gem_fb_create_with_dirty”h]”jÓ )�”}”(hjã,h]”hŒdrm_gem_fb_create_with_dirty”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj-ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj¢,h²hh³j³,h´M,ubjÞ)�”}”(hŒ|(struct drm_device *dev, struct drm_file *file, const struct drm_format_info *info, const struct drm_mode_fb_cmd2 *mode_cmd)”h]”(jä)�”}”(hŒstruct drm_device *dev”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Œ drm_device”h]”hŒ drm_device”…”�”}”(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.drm_gem_fb_create_with_dirty”†”asbuh1hhj-ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\-h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj-ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjj-h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj-ubjÓ )�”}”(hŒdev”h]”hŒdev”…”�”}”(hjw-h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj-ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj-ubjä)�”}”(hŒstruct drm_file *file”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Œdrm_file”h]”hŒdrm_file”…”�”}”(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.drm_gem_fb_create_with_dirty”†”asbuh1hhjŒ-ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌ-h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjŒ-ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÚ-h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŒ-ubjÓ )�”}”(hŒfile”h]”hŒfile”…”�”}”(hjç-h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjŒ-ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj-ubjä)�”}”(hŒ"const struct drm_format_info *info”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(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Œdrm_format_info”h]”hŒdrm_format_info”…”�”}”(hj9.h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj6.ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j;.Œmodname”NŒ classname”Njé jì )�”}”jï ]”já,Œc.drm_gem_fb_create_with_dirty”†”asbuh1hhjü-ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjW.h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjü-ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hje.h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjü-ubjÓ )�”}”(hŒinfo”h]”hŒinfo”…”�”}”(hjr.h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjü-ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj-ubjä)�”}”(hŒ'const struct drm_mode_fb_cmd2 *mode_cmd”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(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Œdrm_mode_fb_cmd2”h]”hŒdrm_mode_fb_cmd2”…”�”}”(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.drm_gem_fb_create_with_dirty”†”asbuh1hhj‡.ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâ.h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj‡.ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjð.h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‡.ubjÓ )�”}”(hŒmode_cmd”h]”hŒmode_cmd”…”�”}”(hjý.h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj‡.ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj-ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj¢,h²hh³j³,h´M,ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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ŒbHelper function for the :c:type:`drm_mode_config_funcs.fb_create ` callback”h]”(hŒHelper function for the ”…”�”}”(hj'/h²hh³Nh´Nubh)�”}”(hŒA:c:type:`drm_mode_config_funcs.fb_create `”h]”jˆ )�”}”(hj1/h]”hŒdrm_mode_config_funcs.fb_create”…”�”}”(hj3/h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj//ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jì )�”}”jï ]”já,Œc.drm_gem_fb_create_with_dirty”†”asbjñ Œdrm_mode_config_funcs”uh1hh³jqh´K,hj'/ubhŒ callback”…”�”}”(hj'/h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.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# jg/j$ jg/j% ‰j& ‰j' ‰uh1j˜ h²hhjÖh³Nh´Nubj) )�”}”(hXU**Parameters** ``struct drm_device *dev`` DRM device ``struct drm_file *file`` DRM file that holds the GEM handle(s) backing the framebuffer ``const struct drm_format_info *info`` pixel format information ``const struct drm_mode_fb_cmd2 *mode_cmd`` Metadata from the userspace framebuffer creation request **Description** This function creates a new framebuffer object described by :c:type:`drm_mode_fb_cmd2`. This description includes handles for the buffer(s) backing the framebuffer. drm_atomic_helper_dirtyfb() is used for the dirty callback giving framebuffer flushing through the atomic machinery. Use drm_gem_fb_create() if you don't need the dirty callback. The function does buffer size validation. Drivers should also call drm_plane_enable_fb_damage_clips() on all planes to enable userspace to use damage clips also with the ATOMIC IOCTL. Drivers can use this as their :c:type:`drm_mode_config_funcs.fb_create ` callback. The ADDFB2 IOCTL calls into this callback. **Return** Pointer to a :c:type:`drm_framebuffer` on success or an error pointer on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjq/h]”hŒ Parameters”…”�”}”(hjs/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjo/ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´M0hjk/ubjw )�”}”(hhh]”(j| )�”}”(hŒ&``struct drm_device *dev`` DRM device ”h]”(j‚ )�”}”(hŒ``struct drm_device *dev``”h]”jˆ )�”}”(hj�/h]”hŒstruct drm_device *dev”…”�”}”(hj’/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjŽ/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´M.hjŠ/ubjž )�”}”(hhh]”hÎ)�”}”(hŒ DRM device”h]”hŒ DRM device”…”�”}”(hj©/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¥/h´M.hj¦/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjŠ/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¥/h´M.hj‡/ubj| )�”}”(hŒX``struct drm_file *file`` DRM file that holds the GEM handle(s) backing the framebuffer ”h]”(j‚ )�”}”(hŒ``struct drm_file *file``”h]”jˆ )�”}”(hjÉ/h]”hŒstruct drm_file *file”…”�”}”(hjË/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÇ/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´M/hjÃ/ubjž )�”}”(hhh]”hÎ)�”}”(hŒ=DRM file that holds the GEM handle(s) backing the framebuffer”h]”hŒ=DRM file that holds the GEM handle(s) backing the framebuffer”…”�”}”(hjâ/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÞ/h´M/hjß/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÃ/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÞ/h´M/hj‡/ubj| )�”}”(hŒ@``const struct drm_format_info *info`` pixel format information ”h]”(j‚ )�”}”(hŒ&``const struct drm_format_info *info``”h]”jˆ )�”}”(hj0h]”hŒ"const struct drm_format_info *info”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´M0hjü/ubjž )�”}”(hhh]”hÎ)�”}”(hŒpixel format information”h]”hŒpixel format information”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j0h´M0hj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjü/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j0h´M0hj‡/ubj| )�”}”(hŒe``const struct drm_mode_fb_cmd2 *mode_cmd`` Metadata from the userspace framebuffer creation request ”h]”(j‚ )�”}”(hŒ+``const struct drm_mode_fb_cmd2 *mode_cmd``”h]”jˆ )�”}”(hj;0h]”hŒ'const struct drm_mode_fb_cmd2 *mode_cmd”…”�”}”(hj=0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj90ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´M1hj50ubjž )�”}”(hhh]”hÎ)�”}”(hŒ8Metadata from the userspace framebuffer creation request”h]”hŒ8Metadata from the userspace framebuffer creation request”…”�”}”(hjT0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jP0h´M1hjQ0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj50ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jP0h´M1hj‡/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjk/ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjv0h]”hŒ Description”…”�”}”(hjx0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjt0ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´M3hjk/ubhÎ)�”}”(hX�This function creates a new framebuffer object described by :c:type:`drm_mode_fb_cmd2`. This description includes handles for the buffer(s) backing the framebuffer. drm_atomic_helper_dirtyfb() is used for the dirty callback giving framebuffer flushing through the atomic machinery. Use drm_gem_fb_create() if you don't need the dirty callback. The function does buffer size validation.”h]”(hŒ` callback. The ADDFB2 IOCTL calls into this callback.”h]”(hŒDrivers can use this as their ”…”�”}”(hjÍ0h²hh³Nh´Nubh)�”}”(hŒA:c:type:`drm_mode_config_funcs.fb_create `”h]”jˆ )�”}”(hj×0h]”hŒdrm_mode_config_funcs.fb_create”…”�”}”(hjÙ0h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÕ0ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_mode_config_funcs”uh1hh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´M<hjÍ0ubhŒ5 callback. The ADDFB2 IOCTL calls into this callback.”…”�”}”(hjÍ0h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jô0h´M<hjk/ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj1h]”hŒReturn”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÿ0ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´M?hjk/ubhÎ)�”}”(hŒQPointer to a :c:type:`drm_framebuffer` on success or an error pointer on failure.”h]”(hŒ Pointer to a ”…”�”}”(hj1h²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_framebuffer`”h]”jˆ )�”}”(hj!1h]”hŒdrm_framebuffer”…”�”}”(hj#1h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj1ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_framebuffer”uh1hh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´M@hj1ubhŒ+ on success or an error pointer on failure.”…”�”}”(hj1h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j>1h´M@hjk/ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÖh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_gem_fb_vmap (C function)”Œc.drm_gem_fb_vmap”hNt”auh1j† hjÖh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ_int drm_gem_fb_vmap (struct drm_framebuffer *fb, struct iosys_map *map, struct iosys_map *data)”h]”j¤ )�”}”(hŒ^int drm_gem_fb_vmap(struct drm_framebuffer *fb, struct iosys_map *map, struct iosys_map *data)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hji1h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hje1h²hh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´MNubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjx1h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hje1h²hh³jw1h´MNubjÍ )�”}”(hŒdrm_gem_fb_vmap”h]”jÓ )�”}”(hŒdrm_gem_fb_vmap”h]”hŒdrm_gem_fb_vmap”…”�”}”(hjŠ1h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj†1ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hje1h²hh³jw1h´MNubjÞ)�”}”(hŒK(struct drm_framebuffer *fb, struct iosys_map *map, struct iosys_map *data)”h]”(jä)�”}”(hŒstruct drm_framebuffer *fb”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj¦1h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj¢1ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³1h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¢1ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_framebuffer”h]”hŒdrm_framebuffer”…”�”}”(hjÄ1h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÁ1ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jÆ1Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjŒ1sbŒc.drm_gem_fb_vmap”†”asbuh1hhj¢1ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjä1h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¢1ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjò1h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¢1ubjÓ )�”}”(hŒfb”h]”hŒfb”…”�”}”(hjÿ1h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¢1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjž1ubjä)�”}”(hŒstruct iosys_map *map”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj2ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%2h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj2ubh)�”}”(hhh]”jÓ )�”}”(hŒ iosys_map”h]”hŒ iosys_map”…”�”}”(hj62h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj32ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j82Œmodname”NŒ classname”Njé jì )�”}”jï ]”jà1Œc.drm_gem_fb_vmap”†”asbuh1hhj2ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjT2h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj2ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjb2h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj2ubjÓ )�”}”(hŒmap”h]”hŒmap”…”�”}”(hjo2h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjž1ubjä)�”}”(hŒstruct iosys_map *data”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjˆ2h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj„2ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•2h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj„2ubh)�”}”(hhh]”jÓ )�”}”(hŒ iosys_map”h]”hŒ iosys_map”…”�”}”(hj¦2h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj£2ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j¨2Œmodname”NŒ classname”Njé jì )�”}”jï ]”jà1Œc.drm_gem_fb_vmap”†”asbuh1hhj„2ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄ2h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj„2ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÒ2h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj„2ubjÓ )�”}”(hŒdata”h]”hŒdata”…”�”}”(hjß2h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj„2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjž1ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhje1h²hh³jw1h´MNubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hja1h²hh³jw1h´MNubah}”(h]”j\1ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jw1h´MNhj^1h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ2maps all framebuffer BOs into kernel address space”h]”hŒ2maps all framebuffer BOs into kernel address space”…”�”}”(hj 3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´MNhj3h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj^1h²hh³jw1h´MNubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j!3j$ j!3j% ‰j& ‰j' ‰uh1j˜ h²hhjÖh³Nh´Nubj) )�”}”(hX‚**Parameters** ``struct drm_framebuffer *fb`` the framebuffer ``struct iosys_map *map`` returns the mapping's address for each BO ``struct iosys_map *data`` returns the data address for each BO, can be NULL **Description** This function maps all buffer objects of the given framebuffer into kernel address space and stores them in struct iosys_map. If the mapping operation fails for one of the BOs, the function unmaps the already established mappings automatically. Callers that want to access a BO's stored data should pass **data**. The argument returns the addresses of the data stored in each BO. This is different from **map** if the framebuffer's offsets field is non-zero. Both, **map** and **data**, must each refer to arrays with at least fb->format->num_planes elements. See drm_gem_fb_vunmap() for unmapping. **Return** 0 on success, or a negative errno code otherwise.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj+3h]”hŒ Parameters”…”�”}”(hj-3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj)3ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´MRhj%3ubjw )�”}”(hhh]”(j| )�”}”(hŒ/``struct drm_framebuffer *fb`` the framebuffer ”h]”(j‚ )�”}”(hŒ``struct drm_framebuffer *fb``”h]”jˆ )�”}”(hjJ3h]”hŒstruct drm_framebuffer *fb”…”�”}”(hjL3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjH3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´MOhjD3ubjž )�”}”(hhh]”hÎ)�”}”(hŒthe framebuffer”h]”hŒthe framebuffer”…”�”}”(hjc3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j_3h´MOhj`3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjD3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j_3h´MOhjA3ubj| )�”}”(hŒD``struct iosys_map *map`` returns the mapping's address for each BO ”h]”(j‚ )�”}”(hŒ``struct iosys_map *map``”h]”jˆ )�”}”(hjƒ3h]”hŒstruct iosys_map *map”…”�”}”(hj…3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj�3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´MPhj}3ubjž )�”}”(hhh]”hÎ)�”}”(hŒ)returns the mapping's address for each BO”h]”hŒ+returns the mapping’s address for each BO”…”�”}”(hjœ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j˜3h´MPhj™3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj}3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j˜3h´MPhjA3ubj| )�”}”(hŒM``struct iosys_map *data`` returns the data address for each BO, can be NULL ”h]”(j‚ )�”}”(hŒ``struct iosys_map *data``”h]”jˆ )�”}”(hj¼3h]”hŒstruct iosys_map *data”…”�”}”(hj¾3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjº3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´MQhj¶3ubjž )�”}”(hhh]”hÎ)�”}”(hŒ1returns the data address for each BO, can be NULL”h]”hŒ1returns the data address for each BO, can be NULL”…”�”}”(hjÕ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÑ3h´MQhjÒ3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¶3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÑ3h´MQhjA3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj%3ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj÷3h]”hŒ Description”…”�”}”(hjù3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjõ3ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´MShj%3ubhÎ)�”}”(hŒôThis function maps all buffer objects of the given framebuffer into kernel address space and stores them in struct iosys_map. If the mapping operation fails for one of the BOs, the function unmaps the already established mappings automatically.”h]”hŒôThis function maps all buffer objects of the given framebuffer into kernel address space and stores them in struct iosys_map. If the mapping operation fails for one of the BOs, the function unmaps the already established mappings automatically.”…”�”}”(hj 4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´MRhj%3ubhÎ)�”}”(hŒÕCallers that want to access a BO's stored data should pass **data**. The argument returns the addresses of the data stored in each BO. This is different from **map** if the framebuffer's offsets field is non-zero.”h]”(hŒ=Callers that want to access a BO’s stored data should pass ”…”�”}”(hj4h²hh³Nh´Nubj3 )�”}”(hŒ**data**”h]”hŒdata”…”�”}”(hj$4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj4ubhŒ[. The argument returns the addresses of the data stored in each BO. This is different from ”…”�”}”(hj4h²hh³Nh´Nubj3 )�”}”(hŒ**map**”h]”hŒmap”…”�”}”(hj64h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj4ubhŒ2 if the framebuffer’s offsets field is non-zero.”…”�”}”(hj4h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´MWhj%3ubhÎ)�”}”(hŒdBoth, **map** and **data**, must each refer to arrays with at least fb->format->num_planes elements.”h]”(hŒBoth, ”…”�”}”(hjO4h²hh³Nh´Nubj3 )�”}”(hŒ**map**”h]”hŒmap”…”�”}”(hjW4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjO4ubhŒ and ”…”�”}”(hjO4h²hh³Nh´Nubj3 )�”}”(hŒ**data**”h]”hŒdata”…”�”}”(hji4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjO4ubhŒJ, must each refer to arrays with at least fb->format->num_planes elements.”…”�”}”(hjO4h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´M[hj%3ubhÎ)�”}”(hŒ&See drm_gem_fb_vunmap() for unmapping.”h]”hŒ&See drm_gem_fb_vunmap() for unmapping.”…”�”}”(hj‚4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´M^hj%3ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj“4h]”hŒReturn”…”�”}”(hj•4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj‘4ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´M`hj%3ubhÎ)�”}”(hŒ10 on success, or a negative errno code otherwise.”h]”hŒ10 on success, or a negative errno code otherwise.”…”�”}”(hj©4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´Mahj%3ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÖh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_gem_fb_vunmap (C function)”Œc.drm_gem_fb_vunmap”hNt”auh1j† hjÖh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒJvoid drm_gem_fb_vunmap (struct drm_framebuffer *fb, struct iosys_map *map)”h]”j¤ )�”}”(hŒIvoid drm_gem_fb_vunmap(struct drm_framebuffer *fb, struct iosys_map *map)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjØ4h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjÔ4h²hh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´MŽubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjç4h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÔ4h²hh³jæ4h´MŽubjÍ )�”}”(hŒdrm_gem_fb_vunmap”h]”jÓ )�”}”(hŒdrm_gem_fb_vunmap”h]”hŒdrm_gem_fb_vunmap”…”�”}”(hjù4h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjõ4ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÔ4h²hh³jæ4h´MŽubjÞ)�”}”(hŒ3(struct drm_framebuffer *fb, struct iosys_map *map)”h]”(jä)�”}”(hŒstruct drm_framebuffer *fb”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj5ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"5h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj5ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_framebuffer”h]”hŒdrm_framebuffer”…”�”}”(hj35h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj05ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j55Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjû4sbŒc.drm_gem_fb_vunmap”†”asbuh1hhj5ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjS5h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj5ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hja5h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj5ubjÓ )�”}”(hŒfb”h]”hŒfb”…”�”}”(hjn5h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj5ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj 5ubjä)�”}”(hŒstruct iosys_map *map”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj‡5h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjƒ5ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”5h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjƒ5ubh)�”}”(hhh]”jÓ )�”}”(hŒ iosys_map”h]”hŒ iosys_map”…”�”}”(hj¥5h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¢5ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j§5Œmodname”NŒ classname”Njé jì )�”}”jï ]”jO5Œc.drm_gem_fb_vunmap”†”asbuh1hhjƒ5ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃ5h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjƒ5ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÑ5h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjƒ5ubjÓ )�”}”(hŒmap”h]”hŒmap”…”�”}”(hjÞ5h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjƒ5ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj 5ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjÔ4h²hh³jæ4h´MŽubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjÐ4h²hh³jæ4h´MŽubah}”(h]”jË4ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jæ4h´MŽhjÍ4h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ0unmaps framebuffer BOs from kernel address space”h]”hŒ0unmaps framebuffer BOs from kernel address space”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´MŽhj6h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÍ4h²hh³jæ4h´MŽubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j 6j$ j 6j% ‰j& ‰j' ‰uh1j˜ h²hhjÖh³Nh´Nubj) )�”}”(hX**Parameters** ``struct drm_framebuffer *fb`` the framebuffer ``struct iosys_map *map`` mapping addresses as returned by drm_gem_fb_vmap() **Description** This function unmaps all buffer objects of the given framebuffer. See drm_gem_fb_vmap() for more information.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj*6h]”hŒ Parameters”…”�”}”(hj,6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj(6ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´M’hj$6ubjw )�”}”(hhh]”(j| )�”}”(hŒ/``struct drm_framebuffer *fb`` the framebuffer ”h]”(j‚ )�”}”(hŒ``struct drm_framebuffer *fb``”h]”jˆ )�”}”(hjI6h]”hŒstruct drm_framebuffer *fb”…”�”}”(hjK6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjG6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´M�hjC6ubjž )�”}”(hhh]”hÎ)�”}”(hŒthe framebuffer”h]”hŒthe framebuffer”…”�”}”(hjb6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j^6h´M�hj_6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjC6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j^6h´M�hj@6ubj| )�”}”(hŒM``struct iosys_map *map`` mapping addresses as returned by drm_gem_fb_vmap() ”h]”(j‚ )�”}”(hŒ``struct iosys_map *map``”h]”jˆ )�”}”(hj‚6h]”hŒstruct iosys_map *map”…”�”}”(hj„6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj€6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´M�hj|6ubjž )�”}”(hhh]”hÎ)�”}”(hŒ2mapping addresses as returned by drm_gem_fb_vmap()”h]”hŒ2mapping addresses as returned by drm_gem_fb_vmap()”…”�”}”(hj›6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j—6h´M�hj˜6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj|6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j—6h´M�hj@6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj$6ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj½6h]”hŒ Description”…”�”}”(hj¿6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj»6ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´M’hj$6ubhÎ)�”}”(hŒAThis function unmaps all buffer objects of the given framebuffer.”h]”hŒAThis function unmaps all buffer objects of the given framebuffer.”…”�”}”(hjÓ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´M‘hj$6ubhÎ)�”}”(hŒ+See drm_gem_fb_vmap() for more information.”h]”hŒ+See drm_gem_fb_vmap() for more information.”…”�”}”(hjâ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´M“hj$6ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÖh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ(drm_gem_fb_begin_cpu_access (C function)”Œc.drm_gem_fb_begin_cpu_access”hNt”auh1j† hjÖh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒYint drm_gem_fb_begin_cpu_access (struct drm_framebuffer *fb, enum dma_data_direction dir)”h]”j¤ )�”}”(hŒXint drm_gem_fb_begin_cpu_access(struct drm_framebuffer *fb, enum dma_data_direction dir)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj 7h²hh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´M¾ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj 7h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj 7h²hh³j7h´M¾ubjÍ )�”}”(hŒdrm_gem_fb_begin_cpu_access”h]”jÓ )�”}”(hŒdrm_gem_fb_begin_cpu_access”h]”hŒdrm_gem_fb_begin_cpu_access”…”�”}”(hj27h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj.7ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj 7h²hh³j7h´M¾ubjÞ)�”}”(hŒ9(struct drm_framebuffer *fb, enum dma_data_direction dir)”h]”(jä)�”}”(hŒstruct drm_framebuffer *fb”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjN7h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjJ7ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[7h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjJ7ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_framebuffer”h]”hŒdrm_framebuffer”…”�”}”(hjl7h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hji7ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jn7Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj47sbŒc.drm_gem_fb_begin_cpu_access”†”asbuh1hhjJ7ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒ7h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjJ7ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjš7h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjJ7ubjÓ )�”}”(hŒfb”h]”hŒfb”…”�”}”(hj§7h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjJ7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjF7ubjä)�”}”(hŒenum dma_data_direction dir”h]”(jª )�”}”(hŒenum”h]”hŒenum”…”�”}”(hjÀ7h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj¼7ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÎ7h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¼7ubh)�”}”(hhh]”jÓ )�”}”(hŒdma_data_direction”h]”hŒdma_data_direction”…”�”}”(hjß7h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÜ7ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”já7Œmodname”NŒ classname”Njé jì )�”}”jï ]”jˆ7Œc.drm_gem_fb_begin_cpu_access”†”asbuh1hhj¼7ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjý7h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¼7ubjÓ )�”}”(hŒdir”h]”hŒdir”…”�”}”(hj 8h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¼7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjF7ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj 7h²hh³j7h´M¾ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj 7h²hh³j7h´M¾ubah}”(h]”j7ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j7h´M¾hj7h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ*prepares GEM buffer objects for CPU access”h]”hŒ*prepares GEM buffer objects for CPU access”…”�”}”(hj58h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´M¾hj28h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj7h²hh³j7h´M¾ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jM8j$ jM8j% ‰j& ‰j' ‰uh1j˜ h²hhjÖh³Nh´Nubj) )�”}”(hXÑ**Parameters** ``struct drm_framebuffer *fb`` the framebuffer ``enum dma_data_direction dir`` access mode **Description** Prepares a framebuffer's GEM buffer objects for CPU access. This function must be called before accessing the BO data within the kernel. For imported BOs, the function calls dma_buf_begin_cpu_access(). See drm_gem_fb_end_cpu_access() for signalling the end of CPU access. **Return** 0 on success, or a negative errno code otherwise.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjW8h]”hŒ Parameters”…”�”}”(hjY8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjU8ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´MÂhjQ8ubjw )�”}”(hhh]”(j| )�”}”(hŒ/``struct drm_framebuffer *fb`` the framebuffer ”h]”(j‚ )�”}”(hŒ``struct drm_framebuffer *fb``”h]”jˆ )�”}”(hjv8h]”hŒstruct drm_framebuffer *fb”…”�”}”(hjx8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjt8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´M¿hjp8ubjž )�”}”(hhh]”hÎ)�”}”(hŒthe framebuffer”h]”hŒthe framebuffer”…”�”}”(hj�8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j‹8h´M¿hjŒ8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjp8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j‹8h´M¿hjm8ubj| )�”}”(hŒ,``enum dma_data_direction dir`` access mode ”h]”(j‚ )�”}”(hŒ``enum dma_data_direction dir``”h]”jˆ )�”}”(hj¯8h]”hŒenum dma_data_direction dir”…”�”}”(hj±8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj­8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´MÀhj©8ubjž )�”}”(hhh]”hÎ)�”}”(hŒ access mode”h]”hŒ access mode”…”�”}”(hjÈ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÄ8h´MÀhjÅ8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj©8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÄ8h´MÀhjm8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjQ8ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjê8h]”hŒ Description”…”�”}”(hjì8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjè8ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´MÂhjQ8ubhÎ)�”}”(hŒÉPrepares a framebuffer's GEM buffer objects for CPU access. This function must be called before accessing the BO data within the kernel. For imported BOs, the function calls dma_buf_begin_cpu_access().”h]”hŒËPrepares a framebuffer’s GEM buffer objects for CPU access. This function must be called before accessing the BO data within the kernel. For imported BOs, the function calls dma_buf_begin_cpu_access().”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´MÁhjQ8ubhÎ)�”}”(hŒESee drm_gem_fb_end_cpu_access() for signalling the end of CPU access.”h]”hŒESee drm_gem_fb_end_cpu_access() for signalling the end of CPU access.”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´MÅhjQ8ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj 9h]”hŒReturn”…”�”}”(hj"9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´MÇhjQ8ubhÎ)�”}”(hŒ10 on success, or a negative errno code otherwise.”h]”hŒ10 on success, or a negative errno code otherwise.”…”�”}”(hj69h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´MÈhjQ8ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÖh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ&drm_gem_fb_end_cpu_access (C function)”Œc.drm_gem_fb_end_cpu_access”hNt”auh1j† hjÖh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒXvoid drm_gem_fb_end_cpu_access (struct drm_framebuffer *fb, enum dma_data_direction dir)”h]”j¤ )�”}”(hŒWvoid drm_gem_fb_end_cpu_access(struct drm_framebuffer *fb, enum dma_data_direction dir)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hje9h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hja9h²hh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´Méubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjt9h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hja9h²hh³js9h´MéubjÍ )�”}”(hŒdrm_gem_fb_end_cpu_access”h]”jÓ )�”}”(hŒdrm_gem_fb_end_cpu_access”h]”hŒdrm_gem_fb_end_cpu_access”…”�”}”(hj†9h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj‚9ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hja9h²hh³js9h´MéubjÞ)�”}”(hŒ9(struct drm_framebuffer *fb, enum dma_data_direction dir)”h]”(jä)�”}”(hŒstruct drm_framebuffer *fb”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj¢9h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjž9ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯9h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjž9ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_framebuffer”h]”hŒdrm_framebuffer”…”�”}”(hjÀ9h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj½9ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jÂ9Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjˆ9sbŒc.drm_gem_fb_end_cpu_access”†”asbuh1hhjž9ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjà9h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjž9ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjî9h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjž9ubjÓ )�”}”(hŒfb”h]”hŒfb”…”�”}”(hjû9h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjž9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjš9ubjä)�”}”(hŒenum dma_data_direction dir”h]”(jª )�”}”(hjÂ7h]”hŒenum”…”�”}”(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Œdma_data_direction”h]”hŒdma_data_direction”…”�”}”(hj2:h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj/:ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j4:Œmodname”NŒ classname”Njé jì )�”}”jï ]”jÜ9Œc.drm_gem_fb_end_cpu_access”†”asbuh1hhj:ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjP:h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj:ubjÓ )�”}”(hŒdir”h]”hŒdir”…”�”}”(hj^:h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj:ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjš9ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhja9h²hh³js9h´Méubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj]9h²hh³js9h´Méubah}”(h]”jX9ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³js9h´MéhjZ9h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ/signals end of CPU access to GEM buffer objects”h]”hŒ/signals end of CPU access to GEM buffer objects”…”�”}”(hjˆ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´Méhj…:h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjZ9h²hh³js9h´Méubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j :j$ j :j% ‰j& ‰j' ‰uh1j˜ h²hhjÖh³Nh´Nubj) )�”}”(hX�**Parameters** ``struct drm_framebuffer *fb`` the framebuffer ``enum dma_data_direction dir`` access mode **Description** Signals the end of CPU access to the given framebuffer's GEM buffer objects. This function must be paired with a corresponding call to drm_gem_fb_begin_cpu_access(). For imported BOs, the function calls dma_buf_end_cpu_access(). See also drm_gem_fb_begin_cpu_access().”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjª:h]”hŒ Parameters”…”�”}”(hj¬:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¨:ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´Míhj¤:ubjw )�”}”(hhh]”(j| )�”}”(hŒ/``struct drm_framebuffer *fb`` the framebuffer ”h]”(j‚ )�”}”(hŒ``struct drm_framebuffer *fb``”h]”jˆ )�”}”(hjÉ:h]”hŒstruct drm_framebuffer *fb”…”�”}”(hjË:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÇ:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´MêhjÃ:ubjž )�”}”(hhh]”hÎ)�”}”(hŒthe framebuffer”h]”hŒthe framebuffer”…”�”}”(hjâ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÞ:h´Mêhjß:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÃ:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÞ:h´MêhjÀ:ubj| )�”}”(hŒ,``enum dma_data_direction dir`` access mode ”h]”(j‚ )�”}”(hŒ``enum dma_data_direction dir``”h]”jˆ )�”}”(hj;h]”hŒenum dma_data_direction dir”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´Mëhjü:ubjž )�”}”(hhh]”hÎ)�”}”(hŒ access mode”h]”hŒ access mode”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j;h´Mëhj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjü:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j;h´MëhjÀ:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj¤:ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj=;h]”hŒ Description”…”�”}”(hj?;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj;;ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´Míhj¤:ubhÎ)�”}”(hŒäSignals the end of CPU access to the given framebuffer's GEM buffer objects. This function must be paired with a corresponding call to drm_gem_fb_begin_cpu_access(). For imported BOs, the function calls dma_buf_end_cpu_access().”h]”hŒæSignals the end of CPU access to the given framebuffer’s GEM buffer objects. This function must be paired with a corresponding call to drm_gem_fb_begin_cpu_access(). For imported BOs, the function calls dma_buf_end_cpu_access().”…”�”}”(hjS;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´Mìhj¤:ubhÎ)�”}”(hŒ'See also drm_gem_fb_begin_cpu_access().”h]”hŒ'See also drm_gem_fb_begin_cpu_access().”…”�”}”(hjb;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´Mðhj¤:ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÖh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ!drm_gem_fb_afbc_init (C function)”Œc.drm_gem_fb_afbc_init”hNt”auh1j† hjÖh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ¤int drm_gem_fb_afbc_init (struct drm_device *dev, const struct drm_format_info *info, const struct drm_mode_fb_cmd2 *mode_cmd, struct drm_afbc_framebuffer *afbc_fb)”h]”j¤ )�”}”(hŒ£int drm_gem_fb_afbc_init(struct drm_device *dev, const struct drm_format_info *info, const struct drm_mode_fb_cmd2 *mode_cmd, struct drm_afbc_framebuffer *afbc_fb)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj‘;h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj�;h²hh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´MEubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ;h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj�;h²hh³jŸ;h´MEubjÍ )�”}”(hŒdrm_gem_fb_afbc_init”h]”jÓ )�”}”(hŒdrm_gem_fb_afbc_init”h]”hŒdrm_gem_fb_afbc_init”…”�”}”(hj²;h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj®;ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj�;h²hh³jŸ;h´MEubjÞ)�”}”(hŒ‹(struct drm_device *dev, const struct drm_format_info *info, const struct drm_mode_fb_cmd2 *mode_cmd, struct drm_afbc_framebuffer *afbc_fb)”h]”(jä)�”}”(hŒstruct drm_device *dev”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Œ drm_device”h]”hŒ drm_device”…”�”}”(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%)�”}”jj´;sbŒc.drm_gem_fb_afbc_init”†”asbuh1hhjÊ;ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj <h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÊ;ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÊ;ubjÓ )�”}”(hŒdev”h]”hŒdev”…”�”}”(hj'<h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÊ;ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÆ;ubjä)�”}”(hŒ"const struct drm_format_info *info”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hj@<h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj<<ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjM<h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj<<ubjª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj[<h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj<<ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh<h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj<<ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_format_info”h]”hŒdrm_format_info”…”�”}”(hjy<h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjv<ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j{<Œmodname”•üNŒ classname”Njé jì )�”}”jï ]”j<Œc.drm_gem_fb_afbc_init”†”asbuh1hhj<<ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—<h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj<<ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj¥<h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj<<ubjÓ )�”}”(hŒinfo”h]”hŒinfo”…”�”}”(hj²<h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj<<ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÆ;ubjä)�”}”(hŒ'const struct drm_mode_fb_cmd2 *mode_cmd”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(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Œdrm_mode_fb_cmd2”h]”hŒdrm_mode_fb_cmd2”…”�”}”(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.drm_gem_fb_afbc_init”†”asbuh1hhjÇ<ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"=h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÇ<ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj0=h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÇ<ubjÓ )�”}”(hŒmode_cmd”h]”hŒmode_cmd”…”�”}”(hj==h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÇ<ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÆ;ubjä)�”}”(hŒ$struct drm_afbc_framebuffer *afbc_fb”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjV=h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjR=ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjc=h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjR=ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_afbc_framebuffer”h]”hŒdrm_afbc_framebuffer”…”�”}”(hjt=h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjq=ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jv=Œmodname”NŒ classname”Njé jì )�”}”jï ]”j<Œc.drm_gem_fb_afbc_init”†”asbuh1hhjR=ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’=h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjR=ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj =h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjR=ubjÓ )�”}”(hŒafbc_fb”h]”hŒafbc_fb”…”�”}”(hj­=h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjR=ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÆ;ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj�;h²hh³jŸ;h´MEubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj‰;h²hh³jŸ;h´MEubah}”(h]”j„;ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jŸ;h´MEhj†;h²hubj )�”}”(hhh]”hÎ)�”}”(hŒuHelper function for drivers using afbc to fill and validate all the afbc-specific struct drm_afbc_framebuffer members”h]”hŒuHelper function for drivers using afbc to fill and validate all the afbc-specific struct drm_afbc_framebuffer members”…”�”}”(hj×=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´MEhjÔ=h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj†;h²hh³jŸ;h´MEubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jï=j$ jï=j% ‰j& ‰j' ‰uh1j˜ h²hhjÖh³Nh´Nubj) )�”}”(hX¦**Parameters** ``struct drm_device *dev`` DRM device ``const struct drm_format_info *info`` pixel format information ``const struct drm_mode_fb_cmd2 *mode_cmd`` Metadata from the userspace framebuffer creation request ``struct drm_afbc_framebuffer *afbc_fb`` afbc framebuffer **Description** This function can be used by drivers which support afbc to complete the preparation of struct drm_afbc_framebuffer. It must be called after allocating the said struct and calling drm_gem_fb_init_with_funcs(). It is caller's responsibility to put afbc_fb->base.obj objects in case the call is unsuccessful. **Return** Zero on success or a negative error value on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjù=h]”hŒ Parameters”…”�”}”(hjû=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj÷=ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´MIhjó=ubjw )�”}”(hhh]”(j| )�”}”(hŒ&``struct drm_device *dev`` DRM device ”h]”(j‚ )�”}”(hŒ``struct drm_device *dev``”h]”jˆ )�”}”(hj>h]”hŒstruct drm_device *dev”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´MIhj>ubjž )�”}”(hhh]”hÎ)�”}”(hŒ DRM device”h]”hŒ DRM device”…”�”}”(hj1>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j->h´MIhj.>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j->h´MIhj>ubj| )�”}”(hŒ@``const struct drm_format_info *info`` pixel format information ”h]”(j‚ )�”}”(hŒ&``const struct drm_format_info *info``”h]”jˆ )�”}”(hjQ>h]”hŒ"const struct drm_format_info *info”…”�”}”(hjS>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjO>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´MKhjK>ubjž )�”}”(hhh]”hÎ)�”}”(hŒpixel format information”h]”hŒpixel format information”…”�”}”(hjj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jf>h´MKhjg>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjK>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jf>h´MKhj>ubj| )�”}”(hŒe``const struct drm_mode_fb_cmd2 *mode_cmd`` Metadata from the userspace framebuffer creation request ”h]”(j‚ )�”}”(hŒ+``const struct drm_mode_fb_cmd2 *mode_cmd``”h]”jˆ )�”}”(hjŠ>h]”hŒ'const struct drm_mode_fb_cmd2 *mode_cmd”…”�”}”(hjŒ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjˆ>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´MLhj„>ubjž )�”}”(hhh]”hÎ)�”}”(hŒ8Metadata from the userspace framebuffer creation request”h]”hŒ8Metadata from the userspace framebuffer creation request”…”�”}”(hj£>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jŸ>h´MLhj >ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj„>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jŸ>h´MLhj>ubj| )�”}”(hŒ:``struct drm_afbc_framebuffer *afbc_fb`` afbc framebuffer ”h]”(j‚ )�”}”(hŒ(``struct drm_afbc_framebuffer *afbc_fb``”h]”jˆ )�”}”(hjÃ>h]”hŒ$struct drm_afbc_framebuffer *afbc_fb”…”�”}”(hjÅ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÁ>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´MMhj½>ubjž )�”}”(hhh]”hÎ)�”}”(hŒafbc framebuffer”h]”hŒafbc framebuffer”…”�”}”(hjÜ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jØ>h´MMhjÙ>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj½>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jØ>h´MMhj>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjó=ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjþ>h]”hŒ Description”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjü>ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´MOhjó=ubhÎ)�”}”(hX1This function can be used by drivers which support afbc to complete the preparation of struct drm_afbc_framebuffer. It must be called after allocating the said struct and calling drm_gem_fb_init_with_funcs(). It is caller's responsibility to put afbc_fb->base.obj objects in case the call is unsuccessful.”h]”hX3This function can be used by drivers which support afbc to complete the preparation of struct drm_afbc_framebuffer. It must be called after allocating the said struct and calling drm_gem_fb_init_with_funcs(). It is caller’s responsibility to put afbc_fb->base.obj objects in case the call is unsuccessful.”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´MNhjó=ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj%?h]”hŒReturn”…”�”}”(hj'?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj#?ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´MThjó=ubhÎ)�”}”(hŒ5Zero on success or a negative error value on failure.”h]”hŒ5Zero on success or a negative error value on failure.”…”�”}”(hj;?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:142: ./drivers/gpu/drm/drm_gem_framebuffer_helper.c”h´MUhjó=ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÖh²hh³Nh´Nubj€B)�”}”(hŒ.. _drm_bridges:”h]”h}”(h]”h ]”h"]”h$]”h&]”hÊŒ drm-bridges”uh1jBh´K‘hjÖh²hh³hÌubeh}”(h]”j=ah ]”h"]”Œ framebuffer gem helper reference”ah$]”h&]”uh1hµhh·h²hh³hÌh´K‰ubh¶)�”}”(hhh]”(h»)�”}”(hŒBridges”h]”hŒBridges”…”�”}”(hjf?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÊjYuh1hºhjc?h²hh³hÌh´K”ubh¶)�”}”(hhh]”(h»)�”}”(hŒOverview”h]”hŒOverview”…”�”}”(hjw?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÊjxuh1hºhjt?h²hh³hÌh´K—ubhÎ)�”}”(hŒÉ:c:type:`struct drm_bridge ` represents a device that hangs on to an encoder. These are handy when a regular :c:type:`drm_encoder` entity isn't enough to represent the entire encoder chain.”h]”(h)�”}”(hŒ(:c:type:`struct drm_bridge `”h]”jˆ )�”}”(hj‹?h]”hŒstruct drm_bridge”…”�”}”(hj�?h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj‰?ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_bridge”uh1hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:153: ./drivers/gpu/drm/drm_bridge.c”h´K,hj…?ubhŒQ represents a device that hangs on to an encoder. These are handy when a regular ”…”�”}”(hj…?h²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_encoder`”h]”jˆ )�”}”(hj¯?h]”hŒ drm_encoder”…”�”}”(hj±?h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj­?ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œ drm_encoder”uh1hh³j¨?h´K,hj…?ubhŒ= entity isn’t enough to represent the entire encoder chain.”…”�”}”(hj…?h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¨?h´K,hjt?h²hubhÎ)�”}”(hŒ”A bridge is always attached to a single :c:type:`drm_encoder` at a time, but can be either connected to it directly, or through a chain of bridges::”h]”(hŒ(A bridge is always attached to a single ”…”�”}”(hjÖ?h²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_encoder`”h]”jˆ )�”}”(hjà?h]”hŒ drm_encoder”…”�”}”(hjâ?h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÞ?ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œ drm_encoder”uh1hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:153: ./drivers/gpu/drm/drm_bridge.c”h´K0hjÖ?ubhŒV at a time, but can be either connected to it directly, or through a chain of bridges:”…”�”}”(hjÖ?h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jý?h´K0hjt?h²hubjN )�”}”(hŒ1[ CRTC ---> ] Encoder ---> Bridge A ---> Bridge B”h]”hŒ1[ CRTC ---> ] Encoder ---> Bridge A ---> Bridge B”…”�”}”hj@sbah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jM h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:153: ./drivers/gpu/drm/drm_bridge.c”h´K3hjt?h²hubhÎ)�”}”(hXHere, the output of the encoder feeds to bridge A, and that furthers feeds to bridge B. Bridge chains can be arbitrarily long, and shall be fully linear: Chaining multiple bridges to the output of a bridge, or the same bridge to the output of different bridges, is not supported.”h]”hXHere, the output of the encoder feeds to bridge A, and that furthers feeds to bridge B. Bridge chains can be arbitrarily long, and shall be fully linear: Chaining multiple bridges to the output of a bridge, or the same bridge to the output of different bridges, is not supported.”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:153: ./drivers/gpu/drm/drm_bridge.c”h´K5hjt?h²hubhÎ)�”}”(hX :c:type:`drm_bridge`, like :c:type:`drm_panel`, aren't :c:type:`drm_mode_object` entities like planes, CRTCs, encoders or connectors and hence are not visible to userspace. They just provide additional hooks to get the desired output at the end of the encoder chain.”h]”(h)�”}”(hŒ:c:type:`drm_bridge`”h]”jˆ )�”}”(hj,@h]”hŒ drm_bridge”…”�”}”(hj.@h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj*@ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œ drm_bridge”uh1hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:153: ./drivers/gpu/drm/drm_bridge.c”h´K:hj&@ubhŒ, like ”…”�”}”(hj&@h²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_panel`”h]”jˆ )�”}”(hjP@h]”hŒ drm_panel”…”�”}”(hjR@h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjN@ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œ drm_panel”uh1hh³jI@h´K:hj&@ubhŒ , aren’t ”…”�”}”(hj&@h²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_mode_object`”h]”jˆ )�”}”(hjs@h]”hŒdrm_mode_object”…”�”}”(hju@h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjq@ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_mode_object”uh1hh³jI@h´K:hj&@ubhŒº entities like planes, CRTCs, encoders or connectors and hence are not visible to userspace. They just provide additional hooks to get the desired output at the end of the encoder chain.”…”�”}”(hj&@h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jI@h´K:hjt?h²hubeh}”(h]”j~ah ]”h"]”h$]”j‚Cah&]”uh1hµhjc?h²hh³hÌh´K—j„CKubh¶)�”}”(hhh]”(h»)�”}”(hŒDisplay Driver Integration”h]”hŒDisplay Driver Integration”…”�”}”(hj£@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÊjšuh1hºhj @h²hh³hÌh´K�ubhÎ)�”}”(hXDisplay drivers are responsible for linking encoders with the first bridge in the chains. This is done by acquiring the appropriate bridge with devm_drm_of_get_bridge(). Once acquired, the bridge shall be attached to the encoder with a call to drm_bridge_attach().”h]”hXDisplay drivers are responsible for linking encoders with the first bridge in the chains. This is done by acquiring the appropriate bridge with devm_drm_of_get_bridge(). Once acquired, the bridge shall be attached to the encoder with a call to drm_bridge_attach().”…”�”}”(hj±@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:159: ./drivers/gpu/drm/drm_bridge.c”h´KChj @h²hubhÎ)�”}”(hŒúBridges are responsible for linking themselves with the next bridge in the chain, if any. This is done the same way as for encoders, with the call to drm_bridge_attach() occurring in the :c:type:`drm_bridge_funcs.attach ` operation.”h]”(hŒ»Bridges are responsible for linking themselves with the next bridge in the chain, if any. This is done the same way as for encoders, with the call to drm_bridge_attach() occurring in the ”…”�”}”(hjÀ@h²hh³Nh´Nubh)�”}”(hŒ4:c:type:`drm_bridge_funcs.attach `”h]”jˆ )�”}”(hjÊ@h]”hŒdrm_bridge_funcs.attach”…”�”}”(hjÌ@h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÈ@ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:159: ./drivers/gpu/drm/drm_bridge.c”h´KHhjÀ@ubhŒ operation.”…”�”}”(hjÀ@h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jç@h´KHhj @h²hubhÎ)�”}”(hX>Once these links are created, the bridges can participate along with encoder functions to perform mode validation and fixup (through drm_bridge_chain_mode_valid() and drm_atomic_bridge_chain_check()), mode setting (through drm_bridge_chain_mode_set()), enable (through drm_atomic_bridge_chain_pre_enable() and drm_atomic_bridge_chain_enable()) and disable (through drm_atomic_bridge_chain_disable() and drm_atomic_bridge_chain_post_disable()). Those functions call the corresponding operations provided in :c:type:`drm_bridge_funcs` in sequence for all bridges in the chain.”h]”(hXúOnce these links are created, the bridges can participate along with encoder functions to perform mode validation and fixup (through drm_bridge_chain_mode_valid() and drm_atomic_bridge_chain_check()), mode setting (through drm_bridge_chain_mode_set()), enable (through drm_atomic_bridge_chain_pre_enable() and drm_atomic_bridge_chain_enable()) and disable (through drm_atomic_bridge_chain_disable() and drm_atomic_bridge_chain_post_disable()). Those functions call the corresponding operations provided in ”…”�”}”(hjò@h²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_bridge_funcs`”h]”jˆ )�”}”(hjü@h]”hŒdrm_bridge_funcs”…”�”}”(hjþ@h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjú@ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:159: ./drivers/gpu/drm/drm_bridge.c”h´KLhjò@ubhŒ* in sequence for all bridges in the chain.”…”�”}”(hjò@h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jAh´KLhj @h²hubhÎ)�”}”(hXFor display drivers that use the atomic helpers drm_atomic_helper_check_modeset(), drm_atomic_helper_commit_modeset_enables() and drm_atomic_helper_commit_modeset_disables() (either directly in hand-rolled commit check and commit tail handlers, or through the higher-level drm_atomic_helper_check() and drm_atomic_helper_commit_tail() or drm_atomic_helper_commit_tail_rpm() helpers), this is done transparently and requires no intervention from the driver. For other drivers, the relevant DRM bridge chain functions shall be called manually.”h]”hXFor display drivers that use the atomic helpers drm_atomic_helper_check_modeset(), drm_atomic_helper_commit_modeset_enables() and drm_atomic_helper_commit_modeset_disables() (either directly in hand-rolled commit check and commit tail handlers, or through the higher-level drm_atomic_helper_check() and drm_atomic_helper_commit_tail() or drm_atomic_helper_commit_tail_rpm() helpers), this is done transparently and requires no intervention from the driver. For other drivers, the relevant DRM bridge chain functions shall be called manually.”…”�”}”(hj$Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:159: ./drivers/gpu/drm/drm_bridge.c”h´KVhj @h²hubhÎ)�”}”(hXlBridges also participate in implementing the :c:type:`drm_connector` at the end of the bridge chain. Display drivers may use the drm_bridge_connector_init() helper to create the :c:type:`drm_connector`, or implement it manually on top of the connector-related operations exposed by the bridge (see the overview documentation of bridge operations for more details).”h]”(hŒ-Bridges also participate in implementing the ”…”�”}”(hj3Ah²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_connector`”h]”jˆ )�”}”(hj=Ah]”hŒ drm_connector”…”�”}”(hj?Ah²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj;Aubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œ drm_connector”uh1hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:159: ./drivers/gpu/drm/drm_bridge.c”h´K`hj3AubhŒn at the end of the bridge chain. Display drivers may use the drm_bridge_connector_init() helper to create the ”…”�”}”(hj3Ah²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_connector`”h]”jˆ )�”}”(hjaAh]”hŒ drm_connector”…”�”}”(hjcAh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj_Aubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œ drm_connector”uh1hh³jZAh´K`hj3AubhŒ£, or implement it manually on top of the connector-related operations exposed by the bridge (see the overview documentation of bridge operations for more details).”…”�”}”(hj3Ah²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jZAh´K`hj @h²hubeh}”(h]”j ah ]”h"]”Œdisplay driver integration”ah$]”h&]”uh1hµhjc?h²hh³hÌh´K�ubh¶)�”}”(hhh]”(h»)�”}”(hŒ"Special Care with MIPI-DSI bridges”h]”hŒ"Special Care with MIPI-DSI bridges”…”�”}”(hj’Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÊj¼uh1hºhj�Ah²hh³hÌh´K£ubhÎ)�”}”(hŒÍThe interaction between the bridges and other frameworks involved in the probing of the upstream driver and the bridge driver can be challenging. Indeed, there's multiple cases that needs to be considered:”h]”hŒÏThe interaction between the bridges and other frameworks involved in the probing of the upstream driver and the bridge driver can be challenging. Indeed, there’s multiple cases that needs to be considered:”…”�”}”(hj Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:165: ./drivers/gpu/drm/drm_bridge.c”h´Kjhj�Ah²hubhú)�”}”(hhh]”(hÿ)�”}”(hXThe upstream driver doesn't use the component framework and isn't a MIPI-DSI host. In this case, the bridge driver will probe at some point and the upstream driver should try to probe again by returning EPROBE_DEFER as long as the bridge driver hasn't probed. ”h]”hÎ)�”}”(hXThe upstream driver doesn't use the component framework and isn't a MIPI-DSI host. In this case, the bridge driver will probe at some point and the upstream driver should try to probe again by returning EPROBE_DEFER as long as the bridge driver hasn't probed.”h]”hX The upstream driver doesn’t use the component framework and isn’t a MIPI-DSI host. In this case, the bridge driver will probe at some point and the upstream driver should try to probe again by returning EPROBE_DEFER as long as the bridge driver hasn’t probed.”…”�”}”(hj¶Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:165: ./drivers/gpu/drm/drm_bridge.c”h´Kohj²Aubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj¯Aubhÿ)�”}”(hX«The upstream driver doesn't use the component framework, but is a MIPI-DSI host. The bridge device uses the MIPI-DCS commands to be controlled. In this case, the bridge device is a child of the display device and when it will probe it's assured that the display device (and MIPI-DSI host) is present. The upstream driver will be assured that the bridge driver is connected between the :c:type:`mipi_dsi_host_ops.attach ` and :c:type:`mipi_dsi_host_ops.detach ` operations. Therefore, it must run mipi_dsi_host_register() in its probe function, and then run drm_bridge_attach() in its :c:type:`mipi_dsi_host_ops.attach ` hook. ”h]”hÎ)�”}”(hXªThe upstream driver doesn't use the component framework, but is a MIPI-DSI host. The bridge device uses the MIPI-DCS commands to be controlled. In this case, the bridge device is a child of the display device and when it will probe it's assured that the display device (and MIPI-DSI host) is present. The upstream driver will be assured that the bridge driver is connected between the :c:type:`mipi_dsi_host_ops.attach ` and :c:type:`mipi_dsi_host_ops.detach ` operations. Therefore, it must run mipi_dsi_host_register() in its probe function, and then run drm_bridge_attach() in its :c:type:`mipi_dsi_host_ops.attach ` hook.”h]”(hX…The upstream driver doesn’t use the component framework, but is a MIPI-DSI host. The bridge device uses the MIPI-DCS commands to be controlled. In this case, the bridge device is a child of the display device and when it will probe it’s assured that the display device (and MIPI-DSI host) is present. The upstream driver will be assured that the bridge driver is connected between the ”…”�”}”(hjÏAh²hh³Nh´Nubh)�”}”(hŒ6:c:type:`mipi_dsi_host_ops.attach `”h]”jˆ )�”}”(hjÙAh]”hŒmipi_dsi_host_ops.attach”…”�”}”(hjÛAh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj×Aubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œmipi_dsi_host_ops”uh1hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:165: ./drivers/gpu/drm/drm_bridge.c”h´KthjÏAubhŒ and ”…”�”}”(hjÏAh²hh³Nh´Nubh)�”}”(hŒ6:c:type:`mipi_dsi_host_ops.detach `”h]”jˆ )�”}”(hjýAh]”hŒmipi_dsi_host_ops.detach”…”�”}”(hjÿAh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjûAubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œmipi_dsi_host_ops”uh1hh³jöAh´KthjÏAubhŒ| operations. Therefore, it must run mipi_dsi_host_register() in its probe function, and then run drm_bridge_attach() in its ”…”�”}”(hjÏAh²hh³Nh´Nubh)�”}”(hŒ6:c:type:`mipi_dsi_host_ops.attach `”h]”jˆ )�”}”(hj Bh]”hŒmipi_dsi_host_ops.attach”…”�”}”(hj"Bh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjBubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œmipi_dsi_host_ops”uh1hh³jöAh´KthjÏAubhŒ hook.”…”�”}”(hjÏAh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jöAh´KthjËAubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj¯Aubhÿ)�”}”(hŒ÷The upstream driver uses the component framework and is a MIPI-DSI host. The bridge device uses the MIPI-DCS commands to be controlled. This is the same situation than above, and can run mipi_dsi_host_register() in either its probe or bind hooks. ”h]”hÎ)�”}”(hŒöThe upstream driver uses the component framework and is a MIPI-DSI host. The bridge device uses the MIPI-DCS commands to be controlled. This is the same situation than above, and can run mipi_dsi_host_register() in either its probe or bind hooks.”h]”hŒöThe upstream driver uses the component framework and is a MIPI-DSI host. The bridge device uses the MIPI-DCS commands to be controlled. This is the same situation than above, and can run mipi_dsi_host_register() in either its probe or bind hooks.”…”�”}”(hjQBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:165: ./drivers/gpu/drm/drm_bridge.c”h´KhjMBubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj¯Aubhÿ)�”}”(hXXThe upstream driver uses the component framework and is a MIPI-DSI host. The bridge device uses a separate bus (such as I2C) to be controlled. In this case, there's no correlation between the probe of the bridge and upstream drivers, so care must be taken to avoid an endless EPROBE_DEFER loop, with each driver waiting for the other to probe. ”h]”hÎ)�”}”(hXWThe upstream driver uses the component framework and is a MIPI-DSI host. The bridge device uses a separate bus (such as I2C) to be controlled. In this case, there's no correlation between the probe of the bridge and upstream drivers, so care must be taken to avoid an endless EPROBE_DEFER loop, with each driver waiting for the other to probe.”h]”hXYThe upstream driver uses the component framework and is a MIPI-DSI host. The bridge device uses a separate bus (such as I2C) to be controlled. In this case, there’s no correlation between the probe of the bridge and upstream drivers, so care must be taken to avoid an endless EPROBE_DEFER loop, with each driver waiting for the other to probe.”…”�”}”(hjjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:165: ./drivers/gpu/drm/drm_bridge.c”h´K„hjfBubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj¯Aubeh}”(h]”h ]”h"]”h$]”h&]”jNjÅ<uh1hùh³jÄAh´Kohj�Ah²hubhÎ)�”}”(hŒ„The ideal pattern to cover the last item (and all the others in the MIPI-DSI host driver case) is to split the operations like this:”h]”hŒ„The ideal pattern to cover the last item (and all the others in the MIPI-DSI host driver case) is to split the operations like this:”…”�”}”(hj…Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:165: ./drivers/gpu/drm/drm_bridge.c”h´K‹hj�Ah²hubhú)�”}”(hhh]”(hÿ)�”}”(hŒ°The MIPI-DSI host driver must run mipi_dsi_host_register() in its probe hook. It will make sure that the MIPI-DSI host sticks around, and that the driver's bind can be called. ”h]”hÎ)�”}”(hŒ¯The MIPI-DSI host driver must run mipi_dsi_host_register() in its probe hook. It will make sure that the MIPI-DSI host sticks around, and that the driver's bind can be called.”h]”hŒ±The MIPI-DSI host driver must run mipi_dsi_host_register() in its probe hook. It will make sure that the MIPI-DSI host sticks around, and that the driver’s bind can be called.”…”�”}”(hj›Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:165: ./drivers/gpu/drm/drm_bridge.c”h´KŽhj—Bubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj”Bubhÿ)�”}”(hŒ¸In its probe hook, the bridge driver must try to find its MIPI-DSI host, register as a MIPI-DSI device and attach the MIPI-DSI device to its host. The bridge driver is now functional. ”h]”hÎ)�”}”(hŒ·In its probe hook, the bridge driver must try to find its MIPI-DSI host, register as a MIPI-DSI device and attach the MIPI-DSI device to its host. The bridge driver is now functional.”h]”hŒ·In its probe hook, the bridge driver must try to find its MIPI-DSI host, register as a MIPI-DSI device and attach the MIPI-DSI device to its host. The bridge driver is now functional.”…”�”}”(hj´Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:165: ./drivers/gpu/drm/drm_bridge.c”h´K’hj°Bubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj”Bubhÿ)�”}”(hŒôIn its :c:type:`struct mipi_dsi_host_ops `.attach hook, the MIPI-DSI host can now add its component. Its bind hook will now be called and since the bridge driver is attached and registered, we can now look for and attach it. ”h]”hÎ)�”}”(hŒóIn its :c:type:`struct mipi_dsi_host_ops `.attach hook, the MIPI-DSI host can now add its component. Its bind hook will now be called and since the bridge driver is attached and registered, we can now look for and attach it.”h]”(hŒIn its ”…”�”}”(hjÍBh²hh³Nh´Nubh)�”}”(hŒ6:c:type:`struct mipi_dsi_host_ops `”h]”jˆ )�”}”(hj×Bh]”hŒstruct mipi_dsi_host_ops”…”�”}”(hjÙBh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÕBubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œmipi_dsi_host_ops”uh1hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:165: ./drivers/gpu/drm/drm_bridge.c”h´K–hjÍBubhŒ¶.attach hook, the MIPI-DSI host can now add its component. Its bind hook will now be called and since the bridge driver is attached and registered, we can now look for and attach it.”…”�”}”(hjÍBh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jôBh´K–hjÉBubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj”Bubeh}”(h]”h ]”h"]”h$]”h&]”jNjÅ<uh1hùh³j©Bh´KŽhj�Ah²hubhÎ)�”}”(hŒ�At this point, we're now certain that both the upstream driver and the bridge driver are functional and we can't have a deadlock-like situation when probing.”h]”hŒ¡At this point, we’re now certain that both the upstream driver and the bridge driver are functional and we can’t have a deadlock-like situation when probing.”…”�”}”(hj Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:165: ./drivers/gpu/drm/drm_bridge.c”h´K›hj�Ah²hubeh}”(h]”jÂah ]”h"]”Œ"special care with mipi-dsi bridges”ah$]”h&]”uh1hµhjc?h²hh³hÌh´K£ubh¶)�”}”(hhh]”(h»)�”}”(hŒBridge Operations”h]”hŒBridge Operations”…”�”}”(hj$Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÊjÞuh1hºhj!Ch²hh³hÌh´K©ubhÎ)�”}”(hX&Bridge drivers expose operations through the :c:type:`drm_bridge_funcs` structure. The DRM internals (atomic and CRTC helpers) use the helpers defined in drm_bridge.c to call bridge operations. Those operations are divided in three big categories to support different parts of the bridge usage.”h]”(hŒ-Bridge drivers expose operations through the ”…”�”}”(hj2Ch²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_bridge_funcs`”h]”jˆ )�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj:Cubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:171: ./drivers/gpu/drm/drm_bridge.c”h´M¤hj2CubhŒß structure. The DRM internals (atomic and CRTC helpers) use the helpers defined in drm_bridge.c to call bridge operations. Those operations are divided in three big categories to support different parts of the bridge usage.”…”�”}”(hj2Ch²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jYCh´M¤hj!Ch²hubhú)�”}”(hhh]”(hÿ)�”}”(hXfThe encoder-related operations support control of the bridges in the chain, and are roughly counterparts to the :c:type:`drm_encoder_helper_funcs` operations. They are used by the legacy CRTC and the atomic modeset helpers to perform mode validation, fixup and setting, and enable and disable the bridge automatically. The enable and disable operations are split in :c:type:`drm_bridge_funcs.atomic_pre_enable `, :c:type:`drm_bridge_funcs.atomic_enable `, :c:type:`drm_bridge_funcs.atomic_disable ` and :c:type:`drm_bridge_funcs.atomic_post_disable ` to provide finer-grained control. Bridge drivers may implement the legacy version of those operations, or the atomic version (prefixed with atomic\_), in which case they shall also implement the atomic state bookkeeping operations (:c:type:`drm_bridge_funcs.atomic_duplicate_state `, :c:type:`drm_bridge_funcs.atomic_destroy_state ` and :c:type:`drm_bridge_funcs.reset `). Mixing atomic and non-atomic versions of the operations is not supported. ”h]”(hÎ)�”}”(hX>The encoder-related operations support control of the bridges in the chain, and are roughly counterparts to the :c:type:`drm_encoder_helper_funcs` operations. They are used by the legacy CRTC and the atomic modeset helpers to perform mode validation, fixup and setting, and enable and disable the bridge automatically.”h]”(hŒpThe encoder-related operations support control of the bridges in the chain, and are roughly counterparts to the ”…”�”}”(hjkCh²hh³Nh´Nubh)�”}”(hŒ":c:type:`drm_encoder_helper_funcs`”h]”jˆ )�”}”(hjuCh]”hŒdrm_encoder_helper_funcs”…”�”}”(hjwCh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjsCubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_encoder_helper_funcs”uh1hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:171: ./drivers/gpu/drm/drm_bridge.c”h´M©hjkCubhŒ¬ operations. They are used by the legacy CRTC and the atomic modeset helpers to perform mode validation, fixup and setting, and enable and disable the bridge automatically.”…”�”}”(hjkCh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j’Ch´M©hjgCubhÎ)�”}”(hXQThe enable and disable operations are split in :c:type:`drm_bridge_funcs.atomic_pre_enable `, :c:type:`drm_bridge_funcs.atomic_enable `, :c:type:`drm_bridge_funcs.atomic_disable ` and :c:type:`drm_bridge_funcs.atomic_post_disable ` to provide finer-grained control.”h]”(hŒ/The enable and disable operations are split in ”…”�”}”(hj�Ch²hh³Nh´Nubh)�”}”(hŒ?:c:type:`drm_bridge_funcs.atomic_pre_enable `”h]”jˆ )�”}”(hj§Ch]”hŒ"drm_bridge_funcs.atomic_pre_enable”…”�”}”(hj©Ch²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj¥Cubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:171: ./drivers/gpu/drm/drm_bridge.c”h´M¯hj�CubhŒ, ”…”�”}”(hj�Ch²hh³Nh´Nubh)�”}”(hŒ;:c:type:`drm_bridge_funcs.atomic_enable `”h]”jˆ )�”}”(hjËCh]”hŒdrm_bridge_funcs.atomic_enable”…”�”}”(hjÍCh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÉCubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³jÄCh´M¯hj�CubhŒ, ”…”�”}”(hj�Ch²hh³Nh´Nubh)�”}”(hŒ<:c:type:`drm_bridge_funcs.atomic_disable `”h]”jˆ )�”}”(hjîCh]”hŒdrm_bridge_funcs.atomic_disable”…”�”}”(hjðCh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjìCubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³jÄCh´M¯hj�CubhŒ and ”…”�”}”(hj�Ch²hh³Nh´Nubh)�”}”(hŒA:c:type:`drm_bridge_funcs.atomic_post_disable `”h]”jˆ )�”}”(hjDh]”hŒ$drm_bridge_funcs.atomic_post_disable”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjDubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³jÄCh´M¯hj�CubhŒ" to provide finer-grained control.”…”�”}”(hj�Ch²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÄCh´M¯hjgCubhÎ)�”}”(hXÒBridge drivers may implement the legacy version of those operations, or the atomic version (prefixed with atomic\_), in which case they shall also implement the atomic state bookkeeping operations (:c:type:`drm_bridge_funcs.atomic_duplicate_state `, :c:type:`drm_bridge_funcs.atomic_destroy_state ` and :c:type:`drm_bridge_funcs.reset `). Mixing atomic and non-atomic versions of the operations is not supported.”h]”(hŒÆBridge drivers may implement the legacy version of those operations, or the atomic version (prefixed with atomic_), in which case they shall also implement the atomic state bookkeeping operations (”…”�”}”(hj8Dh²hh³Nh´Nubh)�”}”(hŒD:c:type:`drm_bridge_funcs.atomic_duplicate_state `”h]”jˆ )�”}”(hjBDh]”hŒ'drm_bridge_funcs.atomic_duplicate_state”…”�”}”(hjDDh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj@Dubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:171: ./drivers/gpu/drm/drm_bridge.c”h´M´hj8DubhŒ, ”…”�”}”(hj8Dh²hh³Nh´Nubh)�”}”(hŒB:c:type:`drm_bridge_funcs.atomic_destroy_state `”h]”jˆ )�”}”(hjfDh]”hŒ%drm_bridge_funcs.atomic_destroy_state”…”�”}”(hjhDh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjdDubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³j_Dh´M´hj8DubhŒ and ”…”�”}”(hj8Dh²hh³Nh´Nubh)�”}”(hŒ3:c:type:`drm_bridge_funcs.reset `”h]”jˆ )�”}”(hj‰Dh]”hŒdrm_bridge_funcs.reset”…”�”}”(hj‹Dh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj‡Dubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³j_Dh´M´hj8DubhŒL). Mixing atomic and non-atomic versions of the operations is not supported.”…”�”}”(hj8Dh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j_Dh´M´hjgCubeh}”(h]”h ]”h"]”h$]”h&]”uh1hþhjdCubhÿ)�”}”(hX‚The bus format negotiation operations :c:type:`drm_bridge_funcs.atomic_get_output_bus_fmts ` and :c:type:`drm_bridge_funcs.atomic_get_input_bus_fmts ` allow bridge drivers to negotiate the formats transmitted between bridges in the chain when multiple formats are supported. Negotiation for formats is performed transparently for display drivers by the atomic modeset helpers. Only atomic versions of those operations exist, bridge drivers that need to implement them shall thus also implement the atomic version of the encoder-related operations. This feature is not supported by the legacy CRTC helpers. ”h]”hÎ)�”}”(hX�The bus format negotiation operations :c:type:`drm_bridge_funcs.atomic_get_output_bus_fmts ` and :c:type:`drm_bridge_funcs.atomic_get_input_bus_fmts ` allow bridge drivers to negotiate the formats transmitted between bridges in the chain when multiple formats are supported. Negotiation for formats is performed transparently for display drivers by the atomic modeset helpers. Only atomic versions of those operations exist, bridge drivers that need to implement them shall thus also implement the atomic version of the encoder-related operations. This feature is not supported by the legacy CRTC helpers.”h]”(hŒ&The bus format negotiation operations ”…”�”}”(hjºDh²hh³Nh´Nubh)�”}”(hŒH:c:type:`drm_bridge_funcs.atomic_get_output_bus_fmts `”h]”jˆ )�”}”(hjÄDh]”hŒ+drm_bridge_funcs.atomic_get_output_bus_fmts”…”�”}”(hjÆDh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÂDubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:171: ./drivers/gpu/drm/drm_bridge.c”h´M»hjºDubhŒ and ”…”�”}”(hjºDh²hh³Nh´Nubh)�”}”(hŒG:c:type:`drm_bridge_funcs.atomic_get_input_bus_fmts `”h]”jˆ )�”}”(hjèDh]”hŒ*drm_bridge_funcs.atomic_get_input_bus_fmts”…”�”}”(hjêDh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjæDubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³jáDh´M»hjºDubhXÇ allow bridge drivers to negotiate the formats transmitted between bridges in the chain when multiple formats are supported. Negotiation for formats is performed transparently for display drivers by the atomic modeset helpers. Only atomic versions of those operations exist, bridge drivers that need to implement them shall thus also implement the atomic version of the encoder-related operations. This feature is not supported by the legacy CRTC helpers.”…”�”}”(hjºDh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jáDh´M»hj¶Dubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjdCubhÿ)�”}”(hXô The connector-related operations support implementing a :c:type:`drm_connector` based on a chain of bridges. DRM bridges traditionally create a :c:type:`drm_connector` for bridges meant to be used at the end of the chain. This puts additional burden on bridge drivers, especially for bridges that may be used in the middle of a chain or at the end of it. Furthermore, it requires all operations of the :c:type:`drm_connector` to be handled by a single bridge, which doesn't always match the hardware architecture. To simplify bridge drivers and make the connector implementation more flexible, a new model allows bridges to unconditionally skip creation of :c:type:`drm_connector` and instead expose :c:type:`drm_bridge_funcs` operations to support an externally-implemented :c:type:`drm_connector`. Those operations are :c:type:`drm_bridge_funcs.detect `, :c:type:`drm_bridge_funcs.get_modes `, :c:type:`drm_bridge_funcs.get_edid `, :c:type:`drm_bridge_funcs.hpd_notify `, :c:type:`drm_bridge_funcs.hpd_enable ` and :c:type:`drm_bridge_funcs.hpd_disable `. When implemented, display drivers shall create a :c:type:`drm_connector` instance for each chain of bridges, and implement those connector instances based on the bridge connector operations. Bridge drivers shall implement the connector-related operations for all the features that the bridge hardware support. For instance, if a bridge supports reading EDID, the :c:type:`drm_bridge_funcs.get_edid ` shall be implemented. This however doesn't mean that the DDC lines are wired to the bridge on a particular platform, as they could also be connected to an I2C controller of the SoC. Support for the connector-related operations on the running platform is reported through the :c:type:`drm_bridge.ops ` flags. Bridge drivers shall detect which operations they can support on the platform (usually this information is provided by ACPI or DT), and set the :c:type:`drm_bridge.ops ` flags for all supported operations. A flag shall only be set if the corresponding :c:type:`drm_bridge_funcs` operation is implemented, but an implemented operation doesn't necessarily imply that the corresponding flag will be set. Display drivers shall use the :c:type:`drm_bridge.ops ` flags to decide which bridge to delegate a connector operation to. This mechanism allows providing a single static const :c:type:`drm_bridge_funcs` instance in bridge drivers, improving security by storing function pointers in read-only memory. In order to ease transition, bridge drivers may support both the old and new models by making connector creation optional and implementing the connected-related bridge operations. Connector creation is then controlled by the flags argument to the drm_bridge_attach() function. Display drivers that support the new model and create connectors themselves shall set the ``DRM_BRIDGE_ATTACH_NO_CONNECTOR`` flag, and bridge drivers shall then skip connector creation. For intermediate bridges in the chain, the flag shall be passed to the drm_bridge_attach() call for the downstream bridge. Bridge drivers that implement the new model only shall return an error from their :c:type:`drm_bridge_funcs.attach ` handler when the ``DRM_BRIDGE_ATTACH_NO_CONNECTOR`` flag is not set. New display drivers should use the new model, and convert the bridge drivers they use if needed, in order to gradually transition to the new model. ”h]”(hÎ)�”}”(hXThe connector-related operations support implementing a :c:type:`drm_connector` based on a chain of bridges. DRM bridges traditionally create a :c:type:`drm_connector` for bridges meant to be used at the end of the chain. This puts additional burden on bridge drivers, especially for bridges that may be used in the middle of a chain or at the end of it. Furthermore, it requires all operations of the :c:type:`drm_connector` to be handled by a single bridge, which doesn't always match the hardware architecture.”h]”(hŒ8The connector-related operations support implementing a ”…”�”}”(hjEh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_connector`”h]”jˆ )�”}”(hj#Eh]”hŒ drm_connector”…”�”}”(hj%Eh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj!Eubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œ drm_connector”uh1hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:171: ./drivers/gpu/drm/drm_bridge.c”h´MÆhjEubhŒA based on a chain of bridges. DRM bridges traditionally create a ”…”�”}”(hjEh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_connector`”h]”jˆ )�”}”(hjGEh]”hŒ drm_connector”…”�”}”(hjIEh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjEEubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œ drm_connector”uh1hh³j@Eh´MÆhjEubhŒë for bridges meant to be used at the end of the chain. This puts additional burden on bridge drivers, especially for bridges that may be used in the middle of a chain or at the end of it. Furthermore, it requires all operations of the ”…”�”}”(hjEh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_connector`”h]”jˆ )�”}”(hjjEh]”hŒ drm_connector”…”�”}”(hjlEh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjhEubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œ drm_connector”uh1hh³j@Eh´MÆhjEubhŒZ to be handled by a single bridge, which doesn’t always match the hardware architecture.”…”�”}”(hjEh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j@Eh´MÆhjEubhÎ)�”}”(hXJTo simplify bridge drivers and make the connector implementation more flexible, a new model allows bridges to unconditionally skip creation of :c:type:`drm_connector` and instead expose :c:type:`drm_bridge_funcs` operations to support an externally-implemented :c:type:`drm_connector`. Those operations are :c:type:`drm_bridge_funcs.detect `, :c:type:`drm_bridge_funcs.get_modes `, :c:type:`drm_bridge_funcs.get_edid `, :c:type:`drm_bridge_funcs.hpd_notify `, :c:type:`drm_bridge_funcs.hpd_enable ` and :c:type:`drm_bridge_funcs.hpd_disable `. When implemented, display drivers shall create a :c:type:`drm_connector` instance for each chain of bridges, and implement those connector instances based on the bridge connector operations.”h]”(hŒ�To simplify bridge drivers and make the connector implementation more flexible, a new model allows bridges to unconditionally skip creation of ”…”�”}”(hj‘Eh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_connector`”h]”jˆ )�”}”(hj›Eh]”hŒ drm_connector”…”�”}”(hj�Eh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj™Eubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œ drm_connector”uh1hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:171: ./drivers/gpu/drm/drm_bridge.c”h´MÎhj‘EubhŒ and instead expose ”…”�”}”(hj‘Eh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_bridge_funcs`”h]”jˆ )�”}”(hj¿Eh]”hŒdrm_bridge_funcs”…”�”}”(hjÁEh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj½Eubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³j¸Eh´MÎhj‘EubhŒ1 operations to support an externally-implemented ”…”�”}”(hj‘Eh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_connector`”h]”jˆ )�”}”(hjâEh]”hŒ drm_connector”…”�”}”(hjäEh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjàEubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œ drm_connector”uh1hh³j¸Eh´MÎhj‘EubhŒ. Those operations are ”…”�”}”(hj‘Eh²hh³Nh´Nubh)�”}”(hŒ4:c:type:`drm_bridge_funcs.detect `”h]”jˆ )�”}”(hjFh]”hŒdrm_bridge_funcs.detect”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjFubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³j¸Eh´MÎhj‘EubhŒ, ”…”�”}”(hj‘Eh²hh³Nh´Nubh)�”}”(hŒ7:c:type:`drm_bridge_funcs.get_modes `”h]”jˆ )�”}”(hj(Fh]”hŒdrm_bridge_funcs.get_modes”…”�”}”(hj*Fh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj&Fubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³j¸Eh´MÎhj‘EubhŒ, ”…”�”}”(hj‘Eh²hh³Nh´Nubh)�”}”(hŒ6:c:type:`drm_bridge_funcs.get_edid `”h]”jˆ )�”}”(hjKFh]”hŒdrm_bridge_funcs.get_edid”…”�”}”(hjMFh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjIFubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³j¸Eh´MÎhj‘EubhŒ, ”…”�”}”hj‘Esbh)�”}”(hŒ8:c:type:`drm_bridge_funcs.hpd_notify `”h]”jˆ )�”}”(hjnFh]”hŒdrm_bridge_funcs.hpd_notify”…”�”}”(hjpFh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjlFubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³j¸Eh´MÎhj‘EubhŒ, ”…”�”}”hj‘Esbh)�”}”(hŒ8:c:type:`drm_bridge_funcs.hpd_enable `”h]”jˆ )�”}”(hj‘Fh]”hŒdrm_bridge_funcs.hpd_enable”…”�”}”(hj“Fh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj�Fubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³j¸Eh´MÎhj‘EubhŒ and ”…”�”}”(hj‘Eh²hh³Nh´Nubh)�”}”(hŒ9:c:type:`drm_bridge_funcs.hpd_disable `”h]”jˆ )�”}”(hj´Fh]”hŒdrm_bridge_funcs.hpd_disable”…”�”}”(hj¶Fh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj²Fubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³j¸Eh´MÎhj‘EubhŒ3. When implemented, display drivers shall create a ”…”�”}”(hj‘Eh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_connector`”h]”jˆ )�”}”(hj×Fh]”hŒ drm_connector”…”�”}”(hjÙFh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÕFubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œ drm_connector”uh1hh³j¸Eh´MÎhj‘EubhŒv instance for each chain of bridges, and implement those connector instances based on the bridge connector operations.”…”�”}”(hj‘Eh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¸Eh´MÎhjEubhÎ)�”}”(hXøBridge drivers shall implement the connector-related operations for all the features that the bridge hardware support. For instance, if a bridge supports reading EDID, the :c:type:`drm_bridge_funcs.get_edid ` shall be implemented. This however doesn't mean that the DDC lines are wired to the bridge on a particular platform, as they could also be connected to an I2C controller of the SoC. Support for the connector-related operations on the running platform is reported through the :c:type:`drm_bridge.ops ` flags. Bridge drivers shall detect which operations they can support on the platform (usually this information is provided by ACPI or DT), and set the :c:type:`drm_bridge.ops ` flags for all supported operations. A flag shall only be set if the corresponding :c:type:`drm_bridge_funcs` operation is implemented, but an implemented operation doesn't necessarily imply that the corresponding flag will be set. Display drivers shall use the :c:type:`drm_bridge.ops ` flags to decide which bridge to delegate a connector operation to. This mechanism allows providing a single static const :c:type:`drm_bridge_funcs` instance in bridge drivers, improving security by storing function pointers in read-only memory.”h]”(hŒ¬Bridge drivers shall implement the connector-related operations for all the features that the bridge hardware support. For instance, if a bridge supports reading EDID, the ”…”�”}”(hjþFh²hh³Nh´Nubh)�”}”(hŒ6:c:type:`drm_bridge_funcs.get_edid `”h]”jˆ )�”}”(hjGh]”hŒdrm_bridge_funcs.get_edid”…”�”}”(hj Gh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjGubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:171: ./drivers/gpu/drm/drm_bridge.c”h´MÙhjþFubhX shall be implemented. This however doesn’t mean that the DDC lines are wired to the bridge on a particular platform, as they could also be connected to an I2C controller of the SoC. Support for the connector-related operations on the running platform is reported through the ”…”�”}”(hjþFh²hh³Nh´Nubh)�”}”(hŒ%:c:type:`drm_bridge.ops `”h]”jˆ )�”}”(hj,Gh]”hŒdrm_bridge.ops”…”�”}”(hj.Gh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj*Gubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_bridge”uh1hh³j%Gh´MÙhjþFubhŒ˜ flags. Bridge drivers shall detect which operations they can support on the platform (usually this information is provided by ACPI or DT), and set the ”…”�”}”(hjþFh²hh³Nh´Nubh)�”}”(hŒ%:c:type:`drm_bridge.ops `”h]”jˆ )�”}”(hjOGh]”hŒdrm_bridge.ops”…”�”}”(hjQGh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjMGubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_bridge”uh1hh³j%Gh´MÙhjþFubhŒS flags for all supported operations. A flag shall only be set if the corresponding ”…”�”}”(hjþFh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_bridge_funcs`”h]”jˆ )�”}”(hjrGh]”hŒdrm_bridge_funcs”…”�”}”(hjtGh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjpGubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³j%Gh´MÙhjþFubhŒ› operation is implemented, but an implemented operation doesn’t necessarily imply that the corresponding flag will be set. Display drivers shall use the ”…”�”}”(hjþFh²hh³Nh´Nubh)�”}”(hŒ%:c:type:`drm_bridge.ops `”h]”jˆ )�”}”(hj•Gh]”hŒdrm_bridge.ops”…”�”}”(hj—Gh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj“Gubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_bridge”uh1hh³j%Gh´MÙhjþFubhŒz flags to decide which bridge to delegate a connector operation to. This mechanism allows providing a single static const ”…”�”}”(hjþFh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_bridge_funcs`”h]”jˆ )�”}”(hj¸Gh]”hŒdrm_bridge_funcs”…”�”}”(hjºGh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj¶Gubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³j%Gh´MÙhjþFubhŒa instance in bridge drivers, improving security by storing function pointers in read-only memory.”…”�”}”(hjþFh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j%Gh´MÙhjEubhÎ)�”}”(hX©In order to ease transition, bridge drivers may support both the old and new models by making connector creation optional and implementing the connected-related bridge operations. Connector creation is then controlled by the flags argument to the drm_bridge_attach() function. Display drivers that support the new model and create connectors themselves shall set the ``DRM_BRIDGE_ATTACH_NO_CONNECTOR`` flag, and bridge drivers shall then skip connector creation. For intermediate bridges in the chain, the flag shall be passed to the drm_bridge_attach() call for the downstream bridge. Bridge drivers that implement the new model only shall return an error from their :c:type:`drm_bridge_funcs.attach ` handler when the ``DRM_BRIDGE_ATTACH_NO_CONNECTOR`` flag is not set. New display drivers should use the new model, and convert the bridge drivers they use if needed, in order to gradually transition to the new model.”h]”(hXoIn order to ease transition, bridge drivers may support both the old and new models by making connector creation optional and implementing the connected-related bridge operations. Connector creation is then controlled by the flags argument to the drm_bridge_attach() function. Display drivers that support the new model and create connectors themselves shall set the ”…”�”}”(hjßGh²hh³Nh´Nubjˆ )�”}”(hŒ"``DRM_BRIDGE_ATTACH_NO_CONNECTOR``”h]”hŒDRM_BRIDGE_ATTACH_NO_CONNECTOR”…”�”}”(hjçGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjßGubhX  flag, and bridge drivers shall then skip connector creation. For intermediate bridges in the chain, the flag shall be passed to the drm_bridge_attach() call for the downstream bridge. Bridge drivers that implement the new model only shall return an error from their ”…”�”}”(hjßGh²hh³Nh´Nubh)�”}”(hŒ4:c:type:`drm_bridge_funcs.attach `”h]”jˆ )�”}”(hjûGh]”hŒdrm_bridge_funcs.attach”…”�”}”(hjýGh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjùGubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:171: ./drivers/gpu/drm/drm_bridge.c”h´MëhjßGubhŒ handler when the ”…”�”}”(hjßGh²hh³Nh´Nubjˆ )�”}”(hŒ"``DRM_BRIDGE_ATTACH_NO_CONNECTOR``”h]”hŒDRM_BRIDGE_ATTACH_NO_CONNECTOR”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjßGubhŒ¥ flag is not set. New display drivers should use the new model, and convert the bridge drivers they use if needed, in order to gradually transition to the new model.”…”�”}”(hjßGh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jHh´MëhjEubeh}”(h]”h ]”h"]”h$]”h&]”uh1hþhjdCubeh}”(h]”h ]”h"]”h$]”h&]”jNjÅ<uh1hùh³j’Ch´M©hj!Ch²hubeh}”(h]”jäah ]”h"]”Œbridge operations”ah$]”h&]”uh1hµhjc?h²hh³hÌh´K©ubh¶)�”}”(hhh]”(h»)�”}”(hŒBridge Chain Format Selection”h]”hŒBridge Chain Format Selection”…”�”}”(hjKHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÊjuh1hºhjHHh²hh³hÌh´K¯ubhÎ)�”}”(hX~A bridge chain, from display output processor to connector, may contain bridges capable of converting between bus formats on their inputs, and output formats on their outputs. For example, a bridge may be able to convert from RGB to YCbCr 4:4:4, and pass through YCbCr 4:2:0 as-is, but not convert from RGB to YCbCr 4:2:0. This means not all input formats map to all output formats.”h]”hX~A bridge chain, from display output processor to connector, may contain bridges capable of converting between bus formats on their inputs, and output formats on their outputs. For example, a bridge may be able to convert from RGB to YCbCr 4:4:4, and pass through YCbCr 4:2:0 as-is, but not convert from RGB to YCbCr 4:2:0. This means not all input formats map to all output formats.”…”�”}”(hjYHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:177: ./drivers/gpu/drm/drm_bridge.c”h´KÊhjHHh²hubhÎ)�”}”(hXJFurther adding to this, a desired output color format, as specified with the "color format" DRM property, might not correspond 1:1 to what the display driver should set at its output. The bridge chain it feeds into may only be able to reach the desired output format, if a conversion from a different starting format is performed.”h]”hXNFurther adding to this, a desired output color format, as specified with the “color formatâ€� DRM property, might not correspond 1:1 to what the display driver should set at its output. The bridge chain it feeds into may only be able to reach the desired output format, if a conversion from a different starting format is performed.”…”�”}”(hjhHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:177: ./drivers/gpu/drm/drm_bridge.c”h´KÑhjHHh²hubhÎ)�”}”(hŒúTo deal with this complexity, the recursive bridge chain bus format selection logic starts with the last bridge in the chain, usually the connector, and then recursively walks the chain of bridges backwards to the first bridge, trying to find a path.”h]”hŒúTo deal with this complexity, the recursive bridge chain bus format selection logic starts with the last bridge in the chain, usually the connector, and then recursively walks the chain of bridges backwards to the first bridge, trying to find a path.”…”�”}”(hjwHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:177: ./drivers/gpu/drm/drm_bridge.c”h´K×hjHHh²hubhÎ)�”}”(hXFor a display driver to work in such a scenario, it should read the first bridge's bridge state to figure out which bus format the chain resolved to. If the first bridge's input format resolved to ``MEDIA_BUS_FMT_FIXED``, then its output format should be used.”•$h]”(hŒÉFor a display driver to work in such a scenario, it should read the first bridge’s bridge state to figure out which bus format the chain resolved to. If the first bridge’s input format resolved to ”…”�”}”(hj†Hh²hh³Nh´Nubjˆ )�”}”(hŒ``MEDIA_BUS_FMT_FIXED``”h]”hŒMEDIA_BUS_FMT_FIXED”…”�”}”(hjŽHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj†HubhŒ(, then its output format should be used.”…”�”}”(hj†Hh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:177: ./drivers/gpu/drm/drm_bridge.c”h´KÜhjHHh²hubhÎ)�”}”(hXïSpecial handling is done for HDMI as it relates to format selection. Instead of directly using the "color format" DRM property for bridge chains that end in HDMI bridges, the bridge chain format selection logic will trust the logic that set the HDMI output format. For the common HDMI state helper functionality, this means that ``DRM_CONNECTOR_COLOR_FORMAT_AUTO`` will allow fallbacks to YCBCr 4:2:0 if the bandwidth requirements would otherwise be too high but the mode and connector allow it.”h]”(hXMSpecial handling is done for HDMI as it relates to format selection. Instead of directly using the “color formatâ€� DRM property for bridge chains that end in HDMI bridges, the bridge chain format selection logic will trust the logic that set the HDMI output format. For the common HDMI state helper functionality, this means that ”…”�”}”(hj§Hh²hh³Nh´Nubjˆ )�”}”(hŒ#``DRM_CONNECTOR_COLOR_FORMAT_AUTO``”h]”hŒDRM_CONNECTOR_COLOR_FORMAT_AUTO”…”�”}”(hj¯Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj§HubhŒƒ will allow fallbacks to YCBCr 4:2:0 if the bandwidth requirements would otherwise be too high but the mode and connector allow it.”…”�”}”(hj§Hh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:177: ./drivers/gpu/drm/drm_bridge.c”h´KáhjHHh²hubhÎ)�”}”(hŒÑFor bridge chains that do not end in an HDMI bridge, ``DRM_CONNECTOR_COLOR_FORMAT_AUTO`` will be satisfied with the first output format on the last bridge for which it can find a path back to the first bridge.”h]”(hŒ5For bridge chains that do not end in an HDMI bridge, ”…”�”}”(hjÈHh²hh³Nh´Nubjˆ )�”}”(hŒ#``DRM_CONNECTOR_COLOR_FORMAT_AUTO``”h]”hŒDRM_CONNECTOR_COLOR_FORMAT_AUTO”…”�”}”(hjÐHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÈHubhŒy will be satisfied with the first output format on the last bridge for which it can find a path back to the first bridge.”…”�”}”(hjÈHh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:177: ./drivers/gpu/drm/drm_bridge.c”h´KéhjHHh²hubeh}”(h]”jah ]”h"]”Œbridge chain format selection”ah$]”h&]”uh1hµhjc?h²hh³hÌh´K¯ubh¶)�”}”(hhh]”(h»)�”}”(hŒBridge Connector Helper”h]”hŒBridge Connector Helper”…”�”}”(hjóHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÊj"uh1hºhjðHh²hh³hÌh´KµubhÎ)�”}”(hXDThe DRM bridge connector helper object provides a DRM connector implementation that wraps a chain of :c:type:`struct drm_bridge `. The connector operations are fully implemented based on the operations of the bridges in the chain, and don't require any intervention from the display controller driver at runtime.”h]”(hŒeThe DRM bridge connector helper object provides a DRM connector implementation that wraps a chain of ”…”�”}”(hjIh²hh³Nh´Nubh)�”}”(hŒ(:c:type:`struct drm_bridge `”h]”jˆ )�”}”(hj Ih]”hŒstruct drm_bridge”…”�”}”(hj Ih²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj Iubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_bridge”uh1hh³Œs/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:183: ./drivers/gpu/drm/display/drm_bridge_connector.c”h´KhjIubhŒ¹. The connector operations are fully implemented based on the operations of the bridges in the chain, and don’t require any intervention from the display controller driver at runtime.”…”�”}”(hjIh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j(Ih´KhjðHh²hubhÎ)�”}”(hXHTo use the helper, display controller drivers create a bridge connector with a call to drm_bridge_connector_init(). This associates the newly created connector with the chain of bridges passed to the function and registers it with the DRM device. At that point the connector becomes fully usable, no further operation is needed.”h]”hXHTo use the helper, display controller drivers create a bridge connector with a call to drm_bridge_connector_init(). This associates the newly created connector with the chain of bridges passed to the function and registers it with the DRM device. At that point the connector becomes fully usable, no further operation is needed.”…”�”}”(hj3Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œs/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:183: ./drivers/gpu/drm/display/drm_bridge_connector.c”h´K$hjðHh²hubhÎ)�”}”(hXThe DRM bridge connector operations are implemented based on the operations provided by the bridges in the chain. Each connector operation is delegated to the bridge closest to the connector (at the end of the chain) that provides the relevant functionality.”h]”hXThe DRM bridge connector operations are implemented based on the operations provided by the bridges in the chain. Each connector operation is delegated to the bridge closest to the connector (at the end of the chain) that provides the relevant functionality.”…”�”}”(hjBIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œs/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:183: ./drivers/gpu/drm/display/drm_bridge_connector.c”h´K*hjðHh²hubhÎ)�”}”(hX:To make use of this helper, all bridges in the chain shall report bridge operation flags (:c:type:`drm_bridge->ops `) and bridge output type (:c:type:`drm_bridge->type `), as well as the DRM_BRIDGE_ATTACH_NO_CONNECTOR attach flag (none of the bridges shall create a DRM connector directly).”h]”(hŒZTo make use of this helper, all bridges in the chain shall report bridge operation flags (”…”�”}”(hjQIh²hh³Nh´Nubh)�”}”(hŒ&:c:type:`drm_bridge->ops `”h]”jˆ )�”}”(hj[Ih]”hŒdrm_bridge->ops”…”�”}”(hj]Ih²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjYIubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_bridge”uh1hh³Œs/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:183: ./drivers/gpu/drm/display/drm_bridge_connector.c”h´K/hjQIubhŒ) and bridge output type (”…”�”}”(hjQIh²hh³Nh´Nubh)�”}”(hŒ':c:type:`drm_bridge->type `”h]”jˆ )�”}”(hjIh]”hŒdrm_bridge->type”…”�”}”(hj�Ih²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj}Iubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_bridge”uh1hh³jxIh´K/hjQIubhŒy), as well as the DRM_BRIDGE_ATTACH_NO_CONNECTOR attach flag (none of the bridges shall create a DRM connector directly).”…”�”}”(hjQIh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jxIh´K/hjðHh²hubeh}”(h]”j(ah ]”h"]”Œbridge connector helper”ah$]”h&]”uh1hµhjc?h²hh³hÌh´Kµubh¶)�”}”(hhh]”(h»)�”}”(hŒBridge Helper Reference”h]”hŒBridge Helper Reference”…”�”}”(hj°Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÊjDuh1hºhj­Ih²hh³hÌh´K¼ubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ drm_bridge_attach_flags (C enum)”Œc.drm_bridge_attach_flags”hNt”auh1j† hj­Ih²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒdrm_bridge_attach_flags”h]”j¤ )�”}”(hŒenum drm_bridge_attach_flags”h]”(jª )�”}”(hjÂ7h]”hŒenum”…”�”}”(hj×Ih²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjÓIh²hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Kubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjåIh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÓIh²hh³jäIh´KubjÍ )�”}”(hŒdrm_bridge_attach_flags”h]”jÓ )�”}”(hjÑIh]”hŒdrm_bridge_attach_flags”…”�”}”(hj÷Ih²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjóIubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÓIh²hh³jäIh´Kubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjÏIh²hh³jäIh´Kubah}”(h]”jÊIah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jäIh´KhjÌIh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ>Flags for :c:type:`drm_bridge_funcs.attach `”h]”(hŒ Flags for ”…”�”}”(hjJh²hh³Nh´Nubh)�”}”(hŒ4:c:type:`drm_bridge_funcs.attach `”h]”jˆ )�”}”(hj#Jh]”hŒdrm_bridge_funcs.attach”…”�”}”(hj%Jh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj!Jubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jì )�”}”jï ]”j%)�”}”jjÑIsbŒc.drm_bridge_attach_flags”†”asbjñ Œdrm_bridge_funcs”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´KhjJubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´K3hjJh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÌIh²hh³jäIh´Kubeh}”(h]”h ]”(j Œenum”eh"]”h$]”h&]”j" j j# jXJj$ jXJj% ‰j& ‰j' ‰uh1j˜ h²hhj­Ih³Nh´Nubj) )�”}”(hŒx**Constants** ``DRM_BRIDGE_ATTACH_NO_CONNECTOR`` When this flag is set the bridge shall not create a drm_connector.”h]”(hÎ)�”}”(hŒ **Constants**”h]”j3 )�”}”(hjbJh]”hŒ Constants”…”�”}”(hjdJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj`Jubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´K7hj\Jubjw )�”}”(hhh]”j| )�”}”(hŒe``DRM_BRIDGE_ATTACH_NO_CONNECTOR`` When this flag is set the bridge shall not create a drm_connector.”h]”(j‚ )�”}”(hŒ"``DRM_BRIDGE_ATTACH_NO_CONNECTOR``”h]”jˆ )�”}”(hj�Jh]”hŒDRM_BRIDGE_ATTACH_NO_CONNECTOR”…”�”}”(hjƒJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjJubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´K:hj{Jubjž )�”}”(hhh]”hÎ)�”}”(hŒBWhen this flag is set the bridge shall not create a drm_connector.”h]”hŒBWhen this flag is set the bridge shall not create a drm_connector.”…”�”}”(hjšJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j–Jh´K:hj—Jubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj{Jubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j–Jh´K:hjxJubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj\Jubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj­Ih²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_bridge_funcs (C struct)”Œc.drm_bridge_funcs”hNt”auh1j† hj­Ih²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒdrm_bridge_funcs”h]”j¤ )�”}”(hŒstruct drm_bridge_funcs”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjÚJh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjÖJh²hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´K@ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjèJh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÖJh²hh³jçJh´K@ubjÍ )�”}”(hŒdrm_bridge_funcs”h]”jÓ )�”}”(hjÔJh]”hŒdrm_bridge_funcs”…”�”}”(hjúJh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjöJubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÖJh²hh³jçJh´K@ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjÒJh²hh³jçJh´K@ubah}”(h]”jÍJah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jçJh´K@hjÏJh²hubj )�”}”(hhh]”hÎ)�”}”(hŒdrm_bridge control functions”h]”hŒdrm_bridge control functions”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´K>hjKh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÏJh²hh³jçJh´K@ubeh}”(h]”h ]”(j Œstruct”eh"]”h$]”h&]”j" j j# j4Kj$ j4Kj% ‰j& ‰j' ‰uh1j˜ h²hhj­Ih³Nh´Nubj) )�”}”(hX­j**Definition**:: struct drm_bridge_funcs { int (*attach)(struct drm_bridge *bridge, struct drm_encoder *encoder, enum drm_bridge_attach_flags flags); void (*destroy)(struct drm_bridge *bridge); void (*detach)(struct drm_bridge *bridge); enum drm_mode_status (*mode_valid)(struct drm_bridge *bridge, const struct drm_display_info *info, const struct drm_display_mode *mode); bool (*mode_fixup)(struct drm_bridge *bridge, const struct drm_display_mode *mode, struct drm_display_mode *adjusted_mode); void (*mode_set)(struct drm_bridge *bridge, const struct drm_display_mode *mode, const struct drm_display_mode *adjusted_mode); void (*atomic_pre_enable)(struct drm_bridge *bridge, struct drm_atomic_commit *state); void (*atomic_enable)(struct drm_bridge *bridge, struct drm_atomic_commit *state); void (*atomic_disable)(struct drm_bridge *bridge, struct drm_atomic_commit *state); void (*atomic_post_disable)(struct drm_bridge *bridge, struct drm_atomic_commit *state); struct drm_bridge_state *(*atomic_duplicate_state)(struct drm_bridge *bridge); void (*atomic_destroy_state)(struct drm_bridge *bridge, struct drm_bridge_state *state); u32 *(*atomic_get_output_bus_fmts)(struct drm_bridge *bridge, struct drm_bridge_state *bridge_state, struct drm_crtc_state *crtc_state, struct drm_connector_state *conn_state, unsigned int *num_output_fmts); u32 *(*atomic_get_input_bus_fmts)(struct drm_bridge *bridge, struct drm_bridge_state *bridge_state, struct drm_crtc_state *crtc_state, struct drm_connector_state *conn_state, u32 output_fmt, unsigned int *num_input_fmts); int (*atomic_check)(struct drm_bridge *bridge, struct drm_bridge_state *bridge_state, struct drm_crtc_state *crtc_state, struct drm_connector_state *conn_state); struct drm_bridge_state *(*atomic_create_state)(struct drm_bridge *bridge); enum drm_connector_status (*detect)(struct drm_bridge *bridge, struct drm_connector *connector); int (*get_modes)(struct drm_bridge *bridge, struct drm_connector *connector); const struct drm_edid *(*edid_read)(struct drm_bridge *bridge, struct drm_connector *connector); void (*hpd_notify)(struct drm_bridge *bridge, struct drm_connector *connector, enum drm_connector_status status); void (*hpd_enable)(struct drm_bridge *bridge); void (*hpd_disable)(struct drm_bridge *bridge); enum drm_mode_status (*hdmi_tmds_char_rate_valid)(const struct drm_bridge *bridge, const struct drm_display_mode *mode, unsigned long long tmds_rate); int (*hdmi_clear_avi_infoframe)(struct drm_bridge *bridge); int (*hdmi_write_avi_infoframe)(struct drm_bridge *bridge, const u8 *buffer, size_t len); int (*hdmi_clear_hdmi_infoframe)(struct drm_bridge *bridge); int (*hdmi_write_hdmi_infoframe)(struct drm_bridge *bridge, const u8 *buffer, size_t len); int (*hdmi_clear_hdr_drm_infoframe)(struct drm_bridge *bridge); int (*hdmi_write_hdr_drm_infoframe)(struct drm_bridge *bridge, const u8 *buffer, size_t len); int (*hdmi_clear_spd_infoframe)(struct drm_bridge *bridge); int (*hdmi_write_spd_infoframe)(struct drm_bridge *bridge, const u8 *buffer, size_t len); int (*hdmi_clear_audio_infoframe)(struct drm_bridge *bridge); int (*hdmi_write_audio_infoframe)(struct drm_bridge *bridge, const u8 *buffer, size_t len); int (*hdmi_audio_startup)(struct drm_bridge *bridge, struct drm_connector *connector); int (*hdmi_audio_prepare)(struct drm_bridge *bridge, struct drm_connector *connector, struct hdmi_codec_daifmt *fmt, struct hdmi_codec_params *hparms); void (*hdmi_audio_shutdown)(struct drm_bridge *bridge, struct drm_connector *connector); int (*hdmi_audio_mute_stream)(struct drm_bridge *bridge, struct drm_connector *connector, bool enable, int direction); int (*hdmi_cec_init)(struct drm_bridge *bridge, struct drm_connector *connector); int (*hdmi_cec_enable)(struct drm_bridge *bridge, bool enable); int (*hdmi_cec_log_addr)(struct drm_bridge *bridge, u8 logical_addr); int (*hdmi_cec_transmit)(struct drm_bridge *bridge, u8 attempts, u32 signal_free_time, struct cec_msg *msg); int (*dp_audio_startup)(struct drm_bridge *bridge, struct drm_connector *connector); int (*dp_audio_prepare)(struct drm_bridge *bridge, struct drm_connector *connector, struct hdmi_codec_daifmt *fmt, struct hdmi_codec_params *hparms); void (*dp_audio_shutdown)(struct drm_bridge *bridge, struct drm_connector *connector); int (*dp_audio_mute_stream)(struct drm_bridge *bridge, struct drm_connector *connector, bool enable, int direction); void (*debugfs_init)(struct drm_bridge *bridge, struct dentry *root); }; **Members** ``attach`` This callback is invoked whenever our bridge is being attached to a :c:type:`drm_encoder`. The flags argument tunes the behaviour of the attach operation (see DRM_BRIDGE_ATTACH_*). The **attach** callback is optional. RETURNS: Zero on success, error code on failure. ``destroy`` This callback is invoked when the bridge is about to be deallocated. The **destroy** callback is optional. ``detach`` This callback is invoked whenever our bridge is being detached from a :c:type:`drm_encoder`. The **detach** callback is optional. ``mode_valid`` This callback is used to check if a specific mode is valid in this bridge. This should be implemented if the bridge has some sort of restriction in the modes it can display. For example, a given bridge may be responsible to set a clock value. If the clock can not produce all the values for the available modes then this callback can be used to restrict the number of modes to only the ones that can be displayed. This hook is used by the probe helpers to filter the mode list in drm_helper_probe_single_connector_modes(), and it is used by the atomic helpers to validate modes supplied by userspace in drm_atomic_helper_check_modeset(). The **mode_valid** callback is optional. NOTE: Since this function is both called from the check phase of an atomic commit, and the mode validation in the probe paths it is not allowed to look at anything else but the passed-in mode, and validate it against configuration-invariant hardware constraints. Any further limits which depend upon the configuration can only be checked in **mode_fixup**. RETURNS: drm_mode_status Enum ``mode_fixup`` This callback is used to validate and adjust a mode. The parameter mode is the display mode that should be fed to the next element in the display chain, either the final :c:type:`drm_connector` or the next :c:type:`drm_bridge`. The parameter adjusted_mode is the input mode the bridge requires. It can be modified by this callback and does not need to match mode. See also :c:type:`drm_crtc_state.adjusted_mode ` for more details. This is the only hook that allows a bridge to reject a modeset. If this function passes all other callbacks must succeed for this configuration. The mode_fixup callback is optional. :c:type:`drm_bridge_funcs.mode_fixup\(\) ` is not called when :c:type:`drm_bridge_funcs.atomic_check\(\) ` is implemented, so only one of them should be provided. NOTE: This function is called in the check phase of atomic modesets, which can be aborted for any reason (including on userspace's request to just check whether a configuration would be possible). Drivers MUST NOT touch any persistent state (hardware or software) or data structures except the passed in **state** parameter. Also beware that userspace can request its own custom modes, neither core nor helpers filter modes to the list of probe modes reported by the GETCONNECTOR IOCTL and stored in :c:type:`drm_connector.modes `. To ensure that modes are filtered consistently put any bridge constraints and limits checks into **mode_valid**. RETURNS: True if an acceptable configuration is possible, false if the modeset operation should be rejected. ``mode_set`` This callback should set the given mode on the bridge. It is called after the **mode_set** callback for the preceding element in the display pipeline has been called already. If the bridge is the first element then this would be :c:type:`drm_encoder_helper_funcs.mode_set `. The display pipe (i.e. clocks and timing signals) is off when this function is called. The adjusted_mode parameter is the mode output by the CRTC for the first bridge in the chain. It can be different from the mode parameter that contains the desired mode for the connector at the end of the bridges chain, for instance when the first bridge in the chain performs scaling. The adjusted mode is mostly useful for the first bridge in the chain and is likely irrelevant for the other bridges. For atomic drivers the adjusted_mode is the mode stored in :c:type:`drm_crtc_state.adjusted_mode `. NOTE: This is deprecated, do not use! New drivers shall set their mode in the :c:type:`drm_bridge_funcs.atomic_enable ` operation. ``atomic_pre_enable`` This callback should enable the bridge. It is called right before the preceding element in the display pipe is enabled. If the preceding element is a bridge this means it's called before that bridge's **atomic_pre_enable** or **pre_enable** function. If the preceding element is a :c:type:`drm_encoder` it's called right before the encoder's :c:type:`drm_encoder_helper_funcs.atomic_enable ` hook. The display pipe (i.e. clocks and timing signals) feeding this bridge will not yet be running when this callback is called. The bridge must not enable the display link feeding the next bridge in the chain (if there is one) when this callback is called. The **atomic_pre_enable** callback is optional. ``atomic_enable`` This callback should enable the bridge. It is called right after the preceding element in the display pipe is enabled. If the preceding element is a bridge this means it's called after that bridge's **atomic_enable** or **enable** function. If the preceding element is a :c:type:`drm_encoder` it's called right after the encoder's :c:type:`drm_encoder_helper_funcs.atomic_enable ` hook. The bridge can assume that the display pipe (i.e. clocks and timing signals) feeding it is running when this callback is called. This callback must enable the display link feeding the next bridge in the chain if there is one. The **atomic_enable** callback is optional. ``atomic_disable`` This callback should disable the bridge. It is called right before the preceding element in the display pipe is disabled. If the preceding element is a bridge this means it's called before that bridge's **atomic_disable** or **disable** vfunc. If the preceding element is a :c:type:`drm_encoder` it's called right before the :c:type:`drm_encoder_helper_funcs.atomic_disable ` hook. The bridge can assume that the display pipe (i.e. clocks and timing signals) feeding it is still running when this callback is called. The **atomic_disable** callback is optional. ``atomic_post_disable`` This callback should disable the bridge. It is called right after the preceding element in the display pipe is disabled. If the preceding element is a bridge this means it's called after that bridge's **atomic_post_disable** or **post_disable** function. If the preceding element is a :c:type:`drm_encoder` it's called right after the encoder's :c:type:`drm_encoder_helper_funcs.atomic_disable ` hook. The bridge must assume that the display pipe (i.e. clocks and timing signals) feeding it is no longer running when this callback is called. The **atomic_post_disable** callback is optional. ``atomic_duplicate_state`` Duplicate the current bridge state object (which is guaranteed to be non-NULL). The atomic_duplicate_state hook is mandatory if the bridge implements any of the atomic hooks, and should be left unassigned otherwise. For bridges that don't subclass :c:type:`drm_bridge_state`, the drm_atomic_helper_bridge_duplicate_state() helper function shall be used to implement this hook. RETURNS: A valid drm_bridge_state object or NULL if the allocation fails. ``atomic_destroy_state`` Destroy a bridge state object previously allocated by :c:type:`drm_bridge_funcs.atomic_duplicate_state\(\) `. The atomic_destroy_state hook is mandatory if the bridge implements any of the atomic hooks, and should be left unassigned otherwise. For bridges that don't subclass :c:type:`drm_bridge_state`, the drm_atomic_helper_bridge_destroy_state() helper function shall be used to implement this hook. ``atomic_get_output_bus_fmts`` Return the supported bus formats on the output end of a bridge. The returned array must be allocated with kmalloc() and will be freed by the caller. If the allocation fails, NULL should be returned. num_output_fmts must be set to the returned array size. Formats listed in the returned array should be listed in decreasing preference order (the core will try all formats until it finds one that works). This method is only called on the last element of the bridge chain as part of the bus format negotiation process that happens in :c:type:`drm_atomic_bridge_chain_select_bus_fmts`(). This method is optional. When not implemented, the core will fall back to :c:type:`drm_connector.display_info `.bus_formats[0] if :c:type:`drm_connector.display_info `.num_bus_formats > 0, or to MEDIA_BUS_FMT_FIXED otherwise. ``atomic_get_input_bus_fmts`` Return the supported bus formats on the input end of a bridge for a specific output bus format. The returned array must be allocated with kmalloc() and will be freed by the caller. If the allocation fails, NULL should be returned. num_input_fmts must be set to the returned array size. Formats listed in the returned array should be listed in decreasing preference order (the core will try all formats until it finds one that works). When the format is not supported NULL should be returned and num_input_fmts should be set to 0. This method is called on all elements of the bridge chain as part of the bus format negotiation process that happens in drm_atomic_bridge_chain_select_bus_fmts(). This method is optional. When not implemented, the core will bypass bus format negotiation on this element of the bridge without failing, and the previous element in the chain will be passed MEDIA_BUS_FMT_FIXED as its output bus format. Bridge drivers that need to support being linked to bridges that are not supporting bus format negotiation should handle the output_fmt == MEDIA_BUS_FMT_FIXED case appropriately, by selecting a sensible default value or extracting this information from somewhere else (FW property, :c:type:`drm_display_mode`, :c:type:`drm_display_info`, ...) Note: Even if input format selection on the first bridge has no impact on the negotiation process (bus format negotiation stops once we reach the first element of the chain), drivers are expected to return accurate input formats as the input format may be used to configure the CRTC output appropriately. ``atomic_check`` This method is responsible for checking bridge state correctness. It can also check the state of the surrounding components in chain to make sure the whole pipeline can work properly. :c:type:`drm_bridge_funcs.atomic_check\(\) ` hooks are called in reverse order (from the last to the first bridge). This method is optional. :c:type:`drm_bridge_funcs.mode_fixup\(\) ` is not called when :c:type:`drm_bridge_funcs.atomic_check\(\) ` is implemented, so only one of them should be provided. If drivers need to tweak :c:type:`drm_bridge_state.input_bus_cfg `.flags or :c:type:`drm_bridge_state.output_bus_cfg `.flags it should happen in this function. By default the :c:type:`drm_bridge_state.output_bus_cfg `.flags field is set to the next bridge :c:type:`drm_bridge_state.input_bus_cfg `.flags value or :c:type:`drm_connector.display_info `.bus_flags if the bridge is the last element in the chain. RETURNS: zero if the check passed, a negative error code otherwise. ``atomic_create_state`` Allocate a pristine, initialized, state for the bridge object and return it. This callback must have no side effects: in particular, the returned state must not be assigned to the object's state pointer and it must not affect the hardware state. RETURNS: A new, pristine, bridge state instance or an error pointer on failure. ``detect`` Check if anything is attached to the bridge output. This callback is optional, if not implemented the bridge will be considered as always having a component attached to its output. Bridges that implement this callback shall set the DRM_BRIDGE_OP_DETECT flag in their :c:type:`drm_bridge->ops `. RETURNS: drm_connector_status indicating the bridge output status. ``get_modes`` Fill all modes currently valid for the sink into the :c:type:`drm_connector` with drm_mode_probed_add(). The **get_modes** callback is mostly intended to support non-probeable displays such as many fixed panels. Bridges that support reading EDID shall leave **get_modes** unimplemented and implement the :c:type:`drm_bridge_funcs->edid_read ` callback instead. This callback is optional. Bridges that implement it shall set the DRM_BRIDGE_OP_MODES flag in their :c:type:`drm_bridge->ops `. The connector parameter shall be used for the sole purpose of filling modes, and shall not be stored internally by bridge drivers for future usage. RETURNS: The number of modes added by calling drm_mode_probed_add(). ``edid_read`` Read the EDID data of the connected display. The **edid_read** callback is the preferred way of reporting mode information for a display connected to the bridge output. Bridges that support reading EDID shall implement this callback and leave the **get_modes** callback unimplemented. The caller of this operation shall first verify the output connection status and refrain from reading EDID from a disconnected output. This callback is optional. Bridges that implement it shall set the DRM_BRIDGE_OP_EDID flag in their :c:type:`drm_bridge->ops `. The connector parameter shall be used for the sole purpose of EDID retrieval, and shall not be stored internally by bridge drivers for future usage. RETURNS: An edid structure newly allocated with drm_edid_alloc() or returned from drm_edid_read() family of functions on success, or NULL otherwise. The caller is responsible for freeing the returned edid structure with drm_edid_free(). ``hpd_notify`` Notify the bridge of hot plug detection. This callback is optional, it may be implemented by bridges that need to be notified of display connection or disconnection for internal reasons. One use case is to reset the internal state of CEC controllers for HDMI bridges. ``hpd_enable`` Enable hot plug detection. From now on the bridge shall call drm_bridge_hpd_notify() each time a change is detected in the output connection status, until hot plug detection gets disabled with **hpd_disable**. This callback is optional and shall only be implemented by bridges that support hot-plug notification without polling. Bridges that implement it shall also implement the **hpd_disable** callback and set the DRM_BRIDGE_OP_HPD flag in their :c:type:`drm_bridge->ops `. ``hpd_disable`` Disable hot plug detection. Once this function returns the bridge shall not call drm_bridge_hpd_notify() when a change in the output connection status occurs. This callback is optional and shall only be implemented by bridges that support hot-plug notification without polling. Bridges that implement it shall also implement the **hpd_enable** callback and set the DRM_BRIDGE_OP_HPD flag in their :c:type:`drm_bridge->ops `. ``hdmi_tmds_char_rate_valid`` Check whether a particular TMDS character rate is supported by the driver. This callback is optional and should only be implemented by the bridges that take part in the HDMI connector implementation. Bridges that implement it shall set the DRM_BRIDGE_OP_HDMI flag in their :c:type:`drm_bridge->ops `. Returns: Either :c:type:`drm_mode_status.MODE_OK ` or one of the failure reasons in :c:type:`enum drm_mode_status `. ``hdmi_clear_avi_infoframe`` This callback clears the infoframes in the hardware during commit. This callback is optional but it must be implemented by bridges that set the DRM_BRIDGE_OP_HDMI flag in their :c:type:`drm_bridge->ops `. ``hdmi_write_avi_infoframe`` Program the infoframe into the hardware. This callback is optional but it must be implemented by bridges that set the DRM_BRIDGE_OP_HDMI flag in their :c:type:`drm_bridge->ops `. ``hdmi_clear_hdmi_infoframe`` This callback clears the infoframes in the hardware during commit. This callback is optional but it must be implemented by bridges that set the DRM_BRIDGE_OP_HDMI flag in their :c:type:`drm_bridge->ops `. ``hdmi_write_hdmi_infoframe`` Program the infoframe into the hardware. This callback is optional but it must be implemented by bridges that set the DRM_BRIDGE_OP_HDMI flag in their :c:type:`drm_bridge->ops `. ``hdmi_clear_hdr_drm_infoframe`` This callback clears the infoframes in the hardware during commit. This callback is optional but it must be implemented by bridges that set the DRM_BRIDGE_OP_HDMI_HDR_DRM_INFOFRAME flag in their :c:type:`drm_bridge->ops `. ``hdmi_write_hdr_drm_infoframe`` Program the infoframe into the hardware. This callback is optional but it must be implemented by bridges that set the DRM_BRIDGE_OP_HDMI_HDR_DRM_INFOFRAME flag in their :c:type:`drm_bridge->ops `. ``hdmi_clear_spd_infoframe`` This callback clears the infoframes in the hardware during commit. This callback is optional but it must be implemented by bridges that set the DRM_BRIDGE_OP_HDMI_SPD_INFOFRAME flag in their :c:type:`drm_bridge->ops `. ``hdmi_write_spd_infoframe`` Program the infoframe into the hardware. This callback is optional but it must be implemented by bridges that set the DRM_BRIDGE_OP_HDMI_SPD_INFOFRAME flag in their :c:type:`drm_bridge->ops `. ``hdmi_clear_audio_infoframe`` This callback clears the infoframes in the hardware during commit. This callback is optional but it must be implemented by bridges that set the DRM_BRIDGE_OP_HDMI_AUDIO flag in their :c:type:`drm_bridge->ops `. ``hdmi_write_audio_infoframe`` Program the infoframe into the hardware. This callback is optional but it must be implemented by bridges that set the DRM_BRIDGE_OP_HDMI_AUDIO flag in their :c:type:`drm_bridge->ops `. ``hdmi_audio_startup`` Called when ASoC starts an audio stream setup. This callback is optional, it can be implemented by bridges that set the **DRM_BRIDGE_OP_HDMI_AUDIO** flag in their :c:type:`drm_bridge->ops `. Returns: 0 on success, a negative error code otherwise ``hdmi_audio_prepare`` Configures HDMI-encoder for audio stream. Can be called multiple times for each setup. This callback is optional but it must be implemented by bridges that set the **DRM_BRIDGE_OP_HDMI_AUDIO** flag in their :c:type:`drm_bridge->ops `. Returns: 0 on success, a negative error code otherwise ``hdmi_audio_shutdown`` Shut down the audio stream. This callback is optional but it must be implemented by bridges that set the **DRM_BRIDGE_OP_HDMI_AUDIO** flag in their :c:type:`drm_bridge->ops `. Returns: 0 on success, a negative error code otherwise ``hdmi_audio_mute_stream`` Mute/unmute HDMI audio stream. This callback is optional, it can be implemented by bridges that set the **DRM_BRIDGE_OP_HDMI_AUDIO** flag in their :c:type:`drm_bridge->ops `. Returns: 0 on success, a negative error code otherwise ``hdmi_cec_init`` Initialize CEC part of the bridge. This callback is optional, it can be implemented by bridges that set the **DRM_BRIDGE_OP_HDMI_CEC_ADAPTER** flag in their :c:type:`drm_bridge->ops `. Returns: 0 on success, a negative error code otherwise ``hdmi_cec_enable`` Enable or disable the CEC adapter inside the bridge. This callback is optional, it can be implemented by bridges that set the **DRM_BRIDGE_OP_HDMI_CEC_ADAPTER** flag in their :c:type:`drm_bridge->ops `. Returns: 0 on success, a negative error code otherwise ``hdmi_cec_log_addr`` Set the logical address of the CEC adapter inside the bridge. This callback is optional, it can be implemented by bridges that set the **DRM_BRIDGE_OP_HDMI_CEC_ADAPTER** flag in their :c:type:`drm_bridge->ops `. Returns: 0 on success, a negative error code otherwise ``hdmi_cec_transmit`` Transmit the message using the CEC adapter inside the bridge. This callback is optional, it can be implemented by bridges that set the **DRM_BRIDGE_OP_HDMI_CEC_ADAPTER** flag in their :c:type:`drm_bridge->ops `. Returns: 0 on success, a negative error code otherwise ``dp_audio_startup`` Called when ASoC starts a DisplayPort audio stream setup. This callback is optional, it can be implemented by bridges that set the **DRM_BRIDGE_OP_DP_AUDIO** flag in their :c:type:`drm_bridge->ops `. Returns: 0 on success, a negative error code otherwise ``dp_audio_prepare`` Configures DisplayPort audio stream. Can be called multiple times for each setup. This callback is optional but it must be implemented by bridges that set the **DRM_BRIDGE_OP_DP_AUDIO** flag in their :c:type:`drm_bridge->ops `. Returns: 0 on success, a negative error code otherwise ``dp_audio_shutdown`` Shut down the DisplayPort audio stream. This callback is optional but it must be implemented by bridges that set the **DRM_BRIDGE_OP_DP_AUDIO** flag in their :c:type:`drm_bridge->ops `. Returns: 0 on success, a negative error code otherwise ``dp_audio_mute_stream`` Mute/unmute DisplayPort audio stream. This callback is optional, it can be implemented by bridges that set the **DRM_BRIDGE_OP_DP_AUDIO** flag in their :c:type:`drm_bridge->ops `. Returns: 0 on success, a negative error code otherwise ``debugfs_init`` Allows bridges to create bridge-specific debugfs files.”h]”(hÎ)�”}”(hŒ**Definition**::”h]”(j3 )�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj@Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj` for more details. This is the only hook that allows a bridge to reject a modeset. If this function passes all other callbacks must succeed for this configuration. The mode_fixup callback is optional. :c:type:`drm_bridge_funcs.mode_fixup\(\) ` is not called when :c:type:`drm_bridge_funcs.atomic_check\(\) ` is implemented, so only one of them should be provided. NOTE: This function is called in the check phase of atomic modesets, which can be aborted for any reason (including on userspace's request to just check whether a configuration would be possible). Drivers MUST NOT touch any persistent state (hardware or software) or data structures except the passed in **state** parameter. Also beware that userspace can request its own custom modes, neither core nor helpers filter modes to the list of probe modes reported by the GETCONNECTOR IOCTL and stored in :c:type:`drm_connector.modes `. To ensure that modes are filtered consistently put any bridge constraints and limits checks into **mode_valid**. RETURNS: True if an acceptable configuration is possible, false if the modeset operation should be rejected. ”h]”(j‚ )�”}”(hŒ``mode_fixup``”h]”jˆ )�”}”(hj²Mh]”hŒ mode_fixup”…”�”}”(hj´Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj°Mubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Kªhj¬Mubjž )�”}”(hhh]”(hÎ)�”}”(hX¾This callback is used to validate and adjust a mode. The parameter mode is the display mode that should be fed to the next element in the display chain, either the final :c:type:`drm_connector` or the next :c:type:`drm_bridge`. The parameter adjusted_mode is the input mode the bridge requires. It can be modified by this callback and does not need to match mode. See also :c:type:`drm_crtc_state.adjusted_mode ` for more details.”h]”(hŒªThis callback is used to validate and adjust a mode. The parameter mode is the display mode that should be fed to the next element in the display chain, either the final ”…”�”}”(hjËMh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_connector`”h]”jˆ )�”}”(hjÕMh]”hŒ drm_connector”…”�”}”(hj×Mh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÓMubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œ drm_connector”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´KŠhjËMubhŒ or the next ”…”�”}”(hjËMh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_bridge`”h]”jˆ )�”}”(hjùMh]”hŒ drm_bridge”…”�”}”(hjûMh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj÷Mubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œ drm_bridge”uh1hh³jòMh´KŠhjËMubhŒ“. The parameter adjusted_mode is the input mode the bridge requires. It can be modified by this callback and does not need to match mode. See also ”…”�”}”(hjËMh²hh³Nh´Nubh)�”}”(hŒ7:c:type:`drm_crtc_state.adjusted_mode `”h]”jˆ )�”}”(hjNh]”hŒdrm_crtc_state.adjusted_mode”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjNubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_crtc_state”uh1hh³jòMh´KŠhjËMubhŒ for more details.”…”�”}”(hjËMh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jòMh´KŠhjÈMubhÎ)�”}”(hŒ�This is the only hook that allows a bridge to reject a modeset. If this function passes all other callbacks must succeed for this configuration.”h]”hŒ�This is the only hook that allows a bridge to reject a modeset. If this function passes all other callbacks must succeed for this configuration.”…”�”}”(hjCNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´K‘hjÈMubhÎ)�”}”(hŒëThe mode_fixup callback is optional. :c:type:`drm_bridge_funcs.mode_fixup\(\) ` is not called when :c:type:`drm_bridge_funcs.atomic_check\(\) ` is implemented, so only one of them should be provided.”h]”(hŒ%The mode_fixup callback is optional. ”…”�”}”(hjRNh²hh³Nh´Nubh)�”}”(hŒ<:c:type:`drm_bridge_funcs.mode_fixup\(\) `”h]”jˆ )�”}”(hj\Nh]”hŒdrm_bridge_funcs.mode_fixup()”…”�”}”(hj^Nh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjZNubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´K•hjRNubhŒ is not called when ”…”�”}”(hjRNh²hh³Nh´Nubh)�”}”(hŒ>:c:type:`drm_bridge_funcs.atomic_check\(\) `”h]”jˆ )�”}”(hj€Nh]”hŒdrm_bridge_funcs.atomic_check()”…”�”•}”(hj‚Nh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj~Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³jyNh´K•hjRNubhŒ8 is implemented, so only one of them should be provided.”…”�”}”(hjRNh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jyNh´K•hjÈMubhÎ)�”}”(hŒNOTE:”h]”hŒNOTE:”…”�”}”(hj§Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´K™hjÈMubhÎ)�”}”(hX>This function is called in the check phase of atomic modesets, which can be aborted for any reason (including on userspace's request to just check whether a configuration would be possible). Drivers MUST NOT touch any persistent state (hardware or software) or data structures except the passed in **state** parameter.”h]”(hX,This function is called in the check phase of atomic modesets, which can be aborted for any reason (including on userspace’s request to just check whether a configuration would be possible). Drivers MUST NOT touch any persistent state (hardware or software) or data structures except the passed in ”…”�”}”(hj¶Nh²hh³Nh´Nubj3 )�”}”(hŒ **state**”h]”hŒstate”…”�”}”(hj¾Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¶NubhŒ parameter.”…”�”}”(hj¶Nh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´K›hjÈMubhÎ)�”}”(hXNAlso beware that userspace can request its own custom modes, neither core nor helpers filter modes to the list of probe modes reported by the GETCONNECTOR IOCTL and stored in :c:type:`drm_connector.modes `. To ensure that modes are filtered consistently put any bridge constraints and limits checks into **mode_valid**.”h]”(hŒ¯Also beware that userspace can request its own custom modes, neither core nor helpers filter modes to the list of probe modes reported by the GETCONNECTOR IOCTL and stored in ”…”�”}”(hj×Nh²hh³Nh´Nubh)�”}”(hŒ-:c:type:`drm_connector.modes `”h]”jˆ )�”}”(hjáNh]”hŒdrm_connector.modes”…”�”}”(hjãNh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjßNubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_connector”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´K¡hj×NubhŒc. To ensure that modes are filtered consistently put any bridge constraints and limits checks into ”…”�”}”(hj×Nh²hh³Nh´Nubj3 )�”}”(hŒ**mode_valid**”h]”hŒ mode_valid”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj×NubhŒ.”…”�”}”(hj×Nh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jþNh´K¡hjÈMubhÎ)�”}”(hŒRETURNS:”h]”hŒRETURNS:”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´K§hjÈMubhÎ)�”}”(hŒcTrue if an acceptable configuration is possible, false if the modeset operation should be rejected.”h]”hŒcTrue if an acceptable configuration is possible, false if the modeset operation should be rejected.”…”�”}”(hj*Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´K©hjÈMubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¬Mubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÇMh´Kªhj€Kubj| )�”}”(hX2``mode_set`` This callback should set the given mode on the bridge. It is called after the **mode_set** callback for the preceding element in the display pipeline has been called already. If the bridge is the first element then this would be :c:type:`drm_encoder_helper_funcs.mode_set `. The display pipe (i.e. clocks and timing signals) is off when this function is called. The adjusted_mode parameter is the mode output by the CRTC for the first bridge in the chain. It can be different from the mode parameter that contains the desired mode for the connector at the end of the bridges chain, for instance when the first bridge in the chain performs scaling. The adjusted mode is mostly useful for the first bridge in the chain and is likely irrelevant for the other bridges. For atomic drivers the adjusted_mode is the mode stored in :c:type:`drm_crtc_state.adjusted_mode `. NOTE: This is deprecated, do not use! New drivers shall set their mode in the :c:type:`drm_bridge_funcs.atomic_enable ` operation. ”h]”(j‚ )�”}”(hŒ ``mode_set``”h]”jˆ )�”}”(hjKOh]”hŒmode_set”…”�”}”(hjMOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjIOubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´KÈhjEOubjž )�”}”(hhh]”(hÎ)�”}”(hX„This callback should set the given mode on the bridge. It is called after the **mode_set** callback for the preceding element in the display pipeline has been called already. If the bridge is the first element then this would be :c:type:`drm_encoder_helper_funcs.mode_set `. The display pipe (i.e. clocks and timing signals) is off when this function is called.”h]”(hŒNThis callback should set the given mode on the bridge. It is called after the ”…”�”}”(hjdOh²hh³Nh´Nubj3 )�”}”(hŒ **mode_set**”h]”hŒmode_set”…”�”}”(hjlOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjdOubhŒ‹ callback for the preceding element in the display pipeline has been called already. If the bridge is the first element then this would be ”…”�”}”(hjdOh²hh³Nh´Nubh)�”}”(hŒF:c:type:`drm_encoder_helper_funcs.mode_set `”h]”jˆ )�”}”(hj€Oh]”hŒ!drm_encoder_helper_funcs.mode_set”…”�”}”(hj‚Oh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj~Oubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_encoder_helper_funcs”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´K³hjdOubhŒY. The display pipe (i.e. clocks and timing signals) is off when this function is called.”…”�”}”(hjdOh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j�Oh´K³hjaOubhÎ)�”}”(hX’The adjusted_mode parameter is the mode output by the CRTC for the first bridge in the chain. It can be different from the mode parameter that contains the desired mode for the connector at the end of the bridges chain, for instance when the first bridge in the chain performs scaling. The adjusted mode is mostly useful for the first bridge in the chain and is likely irrelevant for the other bridges.”h]”hX’The adjusted_mode parameter is the mode output by the CRTC for the first bridge in the chain. It can be different from the mode parameter that contains the desired mode for the connector at the end of the bridges chain, for instance when the first bridge in the chain performs scaling. The adjusted mode is mostly useful for the first bridge in the chain and is likely irrelevant for the other bridges.”…”�”}”(hj¨Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´KºhjaOubhÎ)�”}”(hŒsFor atomic drivers the adjusted_mode is the mode stored in :c:type:`drm_crtc_state.adjusted_mode `.”h]”(hŒ;For atomic drivers the adjusted_mode is the mode stored in ”…”�”}”(hj·Oh²hh³Nh´Nubh)�”}”(hŒ7:c:type:`drm_crtc_state.adjusted_mode `”h]”jˆ )�”}”(hjÁOh]”hŒdrm_crtc_state.adjusted_mode”…”�”}”(hjÃOh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj¿Oubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_crtc_state”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´KÁhj·OubhŒ.”…”�”}”(hj·Oh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÞOh´KÁhjaOubhÎ)�”}”(hŒNOTE:”h]”hŒNOTE:”…”�”}”(hjéOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´KÄhjaOubhÎ)�”}”(hŒŽThis is deprecated, do not use! New drivers shall set their mode in the :c:type:`drm_bridge_funcs.atomic_enable ` operation.”h]”(hŒHThis is deprecated, do not use! New drivers shall set their mode in the ”…”�”}”(hjøOh²hh³Nh´Nubh)�”}”(hŒ;:c:type:`drm_bridge_funcs.atomic_enable `”h]”jˆ )�”}”(hjPh]”hŒdrm_bridge_funcs.atomic_enable”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjPubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´KÆhjøOubhŒ operation.”…”�”}”(hjøOh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jPh´KÆhjaOubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjEOubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j`Oh´KÈhj€Kubj| )�”}”(hXí``atomic_pre_enable`` This callback should enable the bridge. It is called right before the preceding element in the display pipe is enabled. If the preceding element is a bridge this means it's called before that bridge's **atomic_pre_enable** or **pre_enable** function. If the preceding element is a :c:type:`drm_encoder` it's called right before the encoder's :c:type:`drm_encoder_helper_funcs.atomic_enable ` hook. The display pipe (i.e. clocks and timing signals) feeding this bridge will not yet be running when this callback is called. The bridge must not enable the display link feeding the next bridge in the chain (if there is one) when this callback is called. The **atomic_pre_enable** callback is optional. ”h]”(j‚ )�”}”(hŒ``atomic_pre_enable``”h]”jˆ )�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj:Pubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´KÝhj6Pubjž )�”}”(hhh]”(hÎ)�”}”(hX§This callback should enable the bridge. It is called right before the preceding element in the display pipe is enabled. If the preceding element is a bridge this means it's called before that bridge's **atomic_pre_enable** or **pre_enable** function. If the preceding element is a :c:type:`drm_encoder` it's called right before the encoder's :c:type:`drm_encoder_helper_funcs.atomic_enable ` hook.”h]”(hŒÍThis callback should enable the bridge. It is called right before the preceding element in the display pipe is enabled. If the preceding element is a bridge this means it’s called before that bridge’s ”…”�”}”(hjUPh²hh³Nh´Nubj3 )�”}”(hŒ**atomic_pre_enable**”h]”hŒatomic_pre_enable”…”�”}”(hj]Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjUPubhŒ or ”…”�”}”(hjUPh²hh³Nh´Nubj3 )�”}”(hŒ**pre_enable**”h]”hŒ pre_enable”…”�”}”(hjoPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjUPubhŒ) function. If the preceding element is a ”…”�”}”(hjUPh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_encoder`”h]”jˆ )�”}”(hjƒPh]”hŒ drm_encoder”…”�”}”(hj…Ph²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj�Pubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œ drm_encoder”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´KÑhjUPubhŒ, it’s called right before the encoder’s ”…”�”}”(hjUPh²hh³Nh´Nubh)�”}”(hŒK:c:type:`drm_encoder_helper_funcs.atomic_enable `”h]”jˆ )�”}”(hj§Ph]”hŒ&drm_encoder_helper_funcs.atomic_enable”…”�”}”(hj©Ph²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj¥Pubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_encoder_helper_funcs”uh1hh³j Ph´KÑhjUPubhŒ hook.”…”�”}”(hjUPh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j Ph´KÑhjRPubhÎ)�”}”(hŒüThe display pipe (i.e. clocks and timing signals) feeding this bridge will not yet be running when this callback is called. The bridge must not enable the display link feeding the next bridge in the chain (if there is one) when this callback is called.”h]”hŒüThe display pipe (i.e. clocks and timing signals) feeding this bridge will not yet be running when this callback is called. The bridge must not enable the display link feeding the next bridge in the chain (if there is one) when this callback is called.”…”�”}”(hjÎPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´KØhjRPubhÎ)�”}”(hŒ/The **atomic_pre_enable** callback is optional.”h]”(hŒThe ”…”�”}”(hjÝPh²hh³Nh´Nubj3 )�”}”(hŒ**atomic_pre_enable**”h]”hŒatomic_pre_enable”…”�”}”(hjåPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÝPubhŒ callback is optional.”…”�”}”(hjÝPh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jQPh´KÝhjRPubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj6Pubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jQPh´KÝhj€Kubj| )�”}”(hX¿``atomic_enable`` This callback should enable the bridge. It is called right after the preceding element in the display pipe is enabled. If the preceding element is a bridge this means it's called after that bridge's **atomic_enable** or **enable** function. If the preceding element is a :c:type:`drm_encoder` it's called right after the encoder's :c:type:`drm_encoder_helper_funcs.atomic_enable ` hook. The bridge can assume that the display pipe (i.e. clocks and timing signals) feeding it is running when this callback is called. This callback must enable the display link feeding the next bridge in the chain if there is one. The **atomic_enable** callback is optional. ”h]”(j‚ )�”}”(hŒ``atomic_enable``”h]”jˆ )�”}”(hjQh]”hŒ atomic_enable”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj Qubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Kñhj Qubjž )�”}”(hhh]”(hÎ)�”}”(hXœThis callback should enable the bridge. It is called right after the preceding element in the display pipe is enabled. If the preceding element is a bridge this means it's called after that bridge's **atomic_enable** or **enable** function. If the preceding element is a :c:type:`drm_encoder` it's called right after the encoder's :c:type:`drm_encoder_helper_funcs.atomic_enable ` hook.”h]”(hŒËThis callback should enable the bridge. It is called right after the preceding element in the display pipe is enabled. If the preceding element is a bridge this means it’s called after that bridge’s ”…”�”}”(hj(Qh²hh³Nh´Nubj3 )�”}”(hŒ**atomic_enable**”h]”hŒ atomic_enable”…”�”}”(hj0Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj(QubhŒ or ”…”�”}”(hj(Qh²hh³Nh´Nubj3 )�”}”(hŒ **enable**”h]”hŒenable”…”�”}”(hjBQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj(QubhŒ) function. If the preceding element is a ”…”�”}”(hj(Qh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_encoder`”h]”jˆ )�”}”(hjVQh]”hŒ drm_encoder”…”�”}”(hjXQh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjTQubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œ drm_encoder”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Kåhj(QubhŒ+ it’s called right after the encoder’s ”…”�”}”(hj(Qh²hh³Nh´Nubh)�”}”(hŒK:c:type:`drm_encoder_helper_funcs.atomic_enable `”h]”jˆ )�”}”(hjzQh]”hŒ&drm_encoder_helper_funcs.atomic_enable”…”�”}”(hj|Qh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjxQubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_encoder_helper_funcs”uh1hh³jsQh´Kåhj(QubhŒ hook.”…”�”}”(hj(Qh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jsQh´Kåhj%QubhÎ)�”}”(hŒáThe bridge can assume that the display pipe (i.e. clocks and timing signals) feeding it is running when this callback is called. This callback must enable the display link feeding the next bridge in the chain if there is one.”h]”hŒáThe bridge can assume that the display pipe (i.e. clocks and timing signals) feeding it is running when this callback is called. This callback must enable the display link feeding the next bridge in the chain if there is one.”…”�”}”(hj¡Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Kìhj%QubhÎ)�”}”(hŒ+The **atomic_enable** callback is optional.”h]”(hŒThe ”…”�”}”(hj°Qh²hh³Nh´Nubj3 )�”}”(hŒ**atomic_enable**”h]”hŒ atomic_enable”…”�”}”(hj¸Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj°QubhŒ callback is optional.”…”�”}”(hj°Qh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j$Qh´Kñhj%Qubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj Qubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j$Qh´Kñhj€Kubj| )�”}”(hXa``atomic_disable`` This callback should disable the bridge. It is called right before the preceding element in the display pipe is disabled. If the preceding element is a bridge this means it's called before that bridge's **atomic_disable** or **disable** vfunc. If the preceding element is a :c:type:`drm_encoder` it's called right before the :c:type:`drm_encoder_helper_funcs.atomic_disable ` hook. The bridge can assume that the display pipe (i.e. clocks and timing signals) feeding it is still running when this callback is called. The **atomic_disable** callback is optional. ”h]”(j‚ )�”}”(hŒ``atomic_disable``”h]”jˆ )�”}”(hjâQh]”hŒatomic_disable”…”�”}”(hjäQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjàQubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MhjÜQubjž )�”}”(hhh]”(hÎ)�”}”(hX—This callback should disable the bridge. It is called right before the preceding element in the display pipe is disabled. If the preceding element is a bridge this means it's called before that bridge's **atomic_disable** or **disable** vfunc. If the preceding element is a :c:type:`drm_encoder` it's called right before the :c:type:`drm_encoder_helper_funcs.atomic_disable ` hook.”h]”(hŒÏThis callback should disable the bridge. It is called right before the preceding element in the display pipe is disabled. If the preceding element is a bridge this means it’s called before that bridge’s ”…”�”}”(hjûQh²hh³Nh´Nubj3 )�”}”(hŒ**atomic_disable**”h]”hŒatomic_disable”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjûQubhŒ or ”…”�”}”(hjûQh²hh³Nh´Nubj3 )�”}”(hŒ **disable**”h]”hŒdisable”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjûQubhŒ& vfunc. If the preceding element is a ”…”�”}”(hjûQh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_encoder`”h]”jˆ )�”}”(hj)Rh]”hŒ drm_encoder”…”�”}”(hj+Rh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj'Rubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œ drm_encoder”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´KøhjûQubhŒ it’s called right before the ”…”�”}”(hjûQh²hh³Nh´Nubh)�”}”(hŒL:c:type:`drm_encoder_helper_funcs.atomic_disable `”h]”jˆ )�”}”(hjMRh]”hŒ'drm_encoder_helper_funcs.atomic_disable”…”�”}”(hjORh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjKRubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_encoder_helper_funcs”uh1hh³jFRh´KøhjûQubhŒ hook.”…”�”}”(hjûQh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jFRh´KøhjøQubhÎ)�”}”(hŒ†The bridge can assume that the display pipe (i.e. clocks and timing signals) feeding it is still running when this callback is called.”h]”hŒ†The bridge can assume that the display pipe (i.e. clocks and timing signals) feeding it is still running when this callback is called.”…”�”}”(hjtRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´KÿhjøQubhÎ)�”}”(hŒ,The **atomic_disable** callback is optional.”h]”(hŒThe ”…”�”}”(hjƒRh²hh³Nh´Nubj3 )�”}”(hŒ**atomic_disable**”h]”hŒatomic_disable”…”�”}”(hj‹Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjƒRubhŒ callback is optional.”…”�”}”(hjƒRh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j÷Qh´MhjøQubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÜQubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j÷Qh´Mhj€Kubj| )�”}”(hX„``atomic_post_disable`` This callback should disable the bridge. It is called right after the preceding element in the display pipe is disabled. If the preceding element is a bridge this means it's called after that bridge's **atomic_post_disable** or **post_disable** function. If the preceding element is a :c:type:`drm_encoder` it's called right after the encoder's :c:type:`drm_encoder_helper_funcs.atomic_disable ` hook. The bridge must assume that the display pipe (i.e. clocks and timing signals) feeding it is no longer running when this callback is called. The **atomic_post_disable** callback is optional. ”h]”(j‚ )�”}”(hŒ``atomic_post_disable``”h]”jˆ )�”}”(hjµRh]”hŒatomic_post_disable”…”�”}”(hj·Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj³Rubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mhj¯Rubjž )�”}”(hhh]”(hÎ)�”}”(hX«This callback should disable the bridge. It is called right after the preceding element in the display pipe is disabled. If the preceding element is a bridge this means it's called after that bridge's **atomic_post_disable** or **post_disable** function. If the preceding element is a :c:type:`drm_encoder` it's called right after the encoder's :c:type:`drm_encoder_helper_funcs.atomic_disable ` hook.”h]”(hŒÍThis callback should disable the bridge. It is called right after the preceding element in the display pipe is disabled. If the preceding element is a bridge this means it’s called after that bridge’s ”…”�”}”(hjÎRh²hh³Nh´Nubj3 )�”}”(hŒ**atomic_post_disable**”h]”hŒatomic_post_disable”…”�”}”(hjÖRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÎRubhŒ or ”…”�”}”(hjÎRh²hh³Nh´Nubj3 )�”}”(hŒ**post_disable**”h]”hŒ post_disable”…”�”}”(hjèRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÎRubhŒ) function. If the preceding element is a ”…”�”}”(hjÎRh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_encoder`”h]”jˆ )�”}”(hjüRh]”hŒ drm_encoder”…”�”}”(hjþRh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjúRubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œ drm_encoder”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M hjÎRubhŒ+ it’s called right after the encoder’s ”…”�”}”(hjÎRh²hh³Nh´Nubh)�”}”(hŒL:c:type:`drm_encoder_helper_funcs.atomic_disable `”h]”jˆ )�”}”(hj Sh]”hŒ'drm_encoder_helper_funcs.atomic_disable”…”�”}”(hj"Sh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjSubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_encoder_helper_funcs”uh1hh³jSh´M hjÎRubhŒ hook.”…”�”}”(hjÎRh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jSh´M hjËRubhÎ)�”}”(hŒ‹The bridge must assume that the display pipe (i.e. clocks and timing signals) feeding it is no longer running when this callback is called.”h]”hŒ‹The bridge must assume that the display pipe (i.e. clocks and timing signals) feeding it is no longer running when this callback is called.”…”�”}”(hjGSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MhjËRubhÎ)�”}”(hŒ1The **atomic_post_disable** callback is optional.”h]”(hŒThe ”…”�”}”(hjVSh²hh³Nh´Nubj3 )�”}”(hŒ**atomic_post_disable**”h]”hŒatomic_post_disable”…”�”}”(hj^Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjVSubhŒ callback is optional.”…”�”}”(hjVSh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÊRh´MhjËRubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¯Rubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÊRh´Mhj€Kubj| )�”}”(hXà``atomic_duplicate_state`` Duplicate the current bridge state object (which is guaranteed to be non-NULL). The atomic_duplicate_state hook is mandatory if the bridge implements any of the atomic hooks, and should be left unassigned otherwise. For bridges that don't subclass :c:type:`drm_bridge_state`, the drm_atomic_helper_bridge_duplicate_state() helper function shall be used to implement this hook. RETURNS: A valid drm_bridge_state object or NULL if the allocation fails. ”h]”(j‚ )�”}”(hŒ``atomic_duplicate_state``”h]”jˆ )�”}”(hjˆSh]”hŒatomic_duplicate_state”…”�”}”(hjŠSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj†Subah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M'hj‚Subjž )�”}”(hhh]”(hÎ)�”}”(hŒODuplicate the current bridge state object (which is guaranteed to be non-NULL).”h]”hŒODuplicate the current bridge state object (which is guaranteed to be non-NULL).”…”�”}”(hj¡Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MhjžSubhÎ)�”}”(hX(The atomic_duplicate_state hook is mandatory if the bridge implements any of the atomic hooks, and should be left unassigned otherwise. For bridges that don't subclass :c:type:`drm_bridge_state`, the drm_atomic_helper_bridge_duplicate_state() helper function shall be used to implement this hook.”h]”(hŒªThe atomic_duplicate_state hook is mandatory if the bridge implements any of the atomic hooks, and should be left unassigned otherwise. For bridges that don’t subclass ”…”�”}”(hj°Sh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_bridge_state`”h]”jˆ )�”}”(hjºSh]”hŒdrm_bridge_state”…”�”}”(hj¼Sh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj¸Subah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_bridge_state”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M hj°SubhŒf, the drm_atomic_helper_bridge_duplicate_state() helper function shall be used to implement this hook.”…”�”}”(hj°Sh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j×Sh´M hjžSubhÎ)�”}”(hŒIRETURNS: A valid drm_bridge_state object or NULL if the allocation fails.”h]”hŒIRETURNS: A valid drm_bridge_state object or NULL if the allocation fails.”…”�”}”(hjâSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M&hjžSubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj‚Subeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j�Sh´M'hj€Kubj| )�”}”(hX¿``atomic_destroy_state`` Destroy a bridge state object previously allocated by :c:type:`drm_bridge_funcs.atomic_duplicate_state\(\) `. The atomic_destroy_state hook is mandatory if the bridge implements any of the atomic hooks, and should be left unassigned otherwise. For bridges that don't subclass :c:type:`drm_bridge_state`, the drm_atomic_helper_bridge_destroy_state() helper function shall be used to implement this hook. ”h]”(j‚ )�”}”(hŒ``atomic_destroy_state``”h]”jˆ )�”}”(hjTh]”hŒatomic_destroy_state”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjTubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M5hjýSubjž )�”}”(hhh]”(hÎ)�”}”(hŒDestroy a bridge state object previously allocated by :c:type:`drm_bridge_funcs.atomic_duplicate_state\(\) `.”h]”(hŒ6Destroy a bridge state object previously allocated by ”…”�”}”(hjTh²hh³Nh´Nubh)�”}”(hŒH:c:type:`drm_bridge_funcs.atomic_duplicate_state\(\) `”h]”jˆ )�”}”(hj&Th]”hŒ)drm_bridge_funcs.atomic_duplicate_state()”…”�”}”(hj(Th²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj$Tubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M.hjTubhŒ.”…”�”}”(hjTh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jCTh´M.hjTubhÎ)�”}”(hX$The atomic_destroy_state hook is mandatory if the bridge implements any of the atomic hooks, and should be left unassigned otherwise. For bridges that don't subclass :c:type:`drm_bridge_state`, the drm_atomic_helper_bridge_destroy_state() helper function shall be used to implement this hook.”h]”(hŒ¨The atomic_destroy_state hook is mandatory if the bridge implements any of the atomic hooks, and should be left unassigned otherwise. For bridges that don’t subclass ”…”�”}”(hjNTh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_bridge_state`”h]”jˆ )�”}”(hjXTh]”hŒdrm_bridge_state”…”�”}”(hjZTh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjVTubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_bridge_state”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M1hjNTubhŒd, the drm_atomic_helper_bridge_destroy_state() helper function shall be used to implement this hook.”…”�”}”(hjNTh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³juTh´M1hjTubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjýSubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jTh´M5hj€Kubj| )�”}”(hXi``atomic_get_output_bus_fmts`` Return the supported bus formats on the output end of a bridge. The returned array must be allocated with kmalloc() and will be freed by the caller. If the allocation fails, NULL should be returned. num_output_fmts must be set to the returned array size. Formats listed in the returned array should be listed in decreasing preference order (the core will try all formats until it finds one that works). This method is only called on the last element of the bridge chain as part of the bus format negotiation process that happens in :c:type:`drm_atomic_bridge_chain_select_bus_fmts`(). This method is optional. When not implemented, the core will fall back to :c:type:`drm_connector.display_info `.bus_formats[0] if :c:type:`drm_connector.display_info `.num_bus_formats > 0, or to MEDIA_BUS_FMT_FIXED otherwise. ”h]”(j‚ )�”}”(hŒ``atomic_get_output_bus_fmts``”h]”jˆ )�”}”(hj’Th]”hŒatomic_get_output_bus_fmts”…”�”}”(hj”Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj�Tubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MKhjŒTubjž )�”}”(hhh]”(hÎ)�”}”(hX’Return the supported bus formats on the output end of a bridge. The returned array must be allocated with kmalloc() and will be freed by the caller. If the allocation fails, NULL should be returned. num_output_fmts must be set to the returned array size. Formats listed in the returned array should be listed in decreasing preference order (the core will try all formats until it finds one that works).”h]”hX’Return the supported bus formats on the output end of a bridge. The returned array must be allocated with kmalloc() and will be freed by the caller. If the allocation fails, NULL should be returned. num_output_fmts must be set to the returned array size. Formats listed in the returned array should be listed in decreasing preference order (the core will try all formats until it finds one that works).”…”�”}”(hj«Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M=hj¨TubhÎ)�”}”(hXµThis method is only called on the last element of the bridge chain as part of the bus format negotiation process that happens in :c:type:`drm_atomic_bridge_chain_select_bus_fmts`(). This method is optional. When not implemented, the core will fall back to :c:type:`drm_connector.display_info `.bus_formats[0] if :c:type:`drm_connector.display_info `.num_bus_formats > 0, or to MEDIA_BUS_FMT_FIXED otherwise.”h]”(hŒ�This method is only called on the last element of the bridge chain as part of the bus format negotiation process that happens in ”…”�”}”(hjºTh²hh³Nh´Nubh)�”}”(hŒ³:c:type:`drm_atomic_bridge_chain_select_bus_fmts`(). This method is optional. When not implemented, the core will fall back to :c:type:`drm_connector.display_info `”h]”jˆ )�”}”(hjÄTh]”hŒ™drm_atomic_bridge_chain_select_bus_fmts`(). This method is optional. When not implemented, the core will fall back to :c:type:`drm_connector.display_info”…”�”}”(hjÆTh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÂTubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_connector”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MEhjºTubhŒ.bus_formats[0] if ”…”�”}”(hjºTh²hh³Nh´Nubh)�”}”(hŒ4:c:type:`drm_connector.display_info `”h]”jˆ )�”}”(hjèTh]”hŒdrm_connector.display_info”…”�”}”(hjêTh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjæTubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_connector”uh1hh³jáTh´MEhjºTubhŒ:.num_bus_formats > 0, or to MEDIA_BUS_FMT_FIXED otherwise.”…”�”}”(hjºTh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jáTh´MEhj¨Tubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjŒTubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j§Th´MKhj€Kubj| )�”}”(hXL``atomic_get_input_bus_fmts`` Return the supported bus formats on the input end of a bridge for a specific output bus format. The returned array must be allocated with kmalloc() and will be freed by the caller. If the allocation fails, NULL should be returned. num_input_fmts must be set to the returned array size. Formats listed in the returned array should be listed in decreasing preference order (the core will try all formats until it finds one that works). When the format is not supported NULL should be returned and num_input_fmts should be set to 0. This method is called on all elements of the bridge chain as part of the bus format negotiation process that happens in drm_atomic_bridge_chain_select_bus_fmts(). This method is optional. When not implemented, the core will bypass bus format negotiation on this element of the bridge without failing, and the previous element in the chain will be passed MEDIA_BUS_FMT_FIXED as its output bus format. Bridge drivers that need to support being linked to bridges that are not supporting bus format negotiation should handle the output_fmt == MEDIA_BUS_FMT_FIXED case appropriately, by selecting a sensible default value or extracting this information from somewhere else (FW property, :c:type:`drm_display_mode`, :c:type:`drm_display_info`, ...) Note: Even if input format selection on the first bridge has no impact on the negotiation process (bus format negotiation stops once we reach the first element of the chain), drivers are expected to return accurate input formats as the input format may be used to configure the CRTC output appropriately. ”h]”(j‚ )�”}”(hŒ``atomic_get_input_bus_fmts``”h]”jˆ )�”}”(hj!Uh]”hŒatomic_get_input_bus_fmts”…”�”}”(hj#Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjUubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MshjUubjž )�”}”(hhh]”(hÎ)�”}”(hŒ_Return the supported bus formats on the input end of a bridge for a specific output bus format.”h]”hŒ_Return the supported bus formats on the input end of a bridge for a specific output bus format.”…”�”}”(hj:Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MVhj7UubhÎ)�”}”(hX±The returned array must be allocated with kmalloc() and will be freed by the caller. If the allocation fails, NULL should be returned. num_input_fmts must be set to the returned array size. Formats listed in the returned array should be listed in decreasing preference order (the core will try all formats until it finds one that works). When the format is not supported NULL should be returned and num_input_fmts should be set to 0.”h]”hX±The returned array must be allocated with kmalloc() and will be freed by the caller. If the allocation fails, NULL should be returned. num_input_fmts must be set to the returned array size. Formats listed in the returned array should be listed in decreasing preference order (the core will try all formats until it finds one that works). When the format is not supported NULL should be returned and num_input_fmts should be set to 0.”…”�”}”(hjIUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MYhj7UubhÎ)�”}”(hX�This method is called on all elements of the bridge chain as part of the bus format negotiation process that happens in drm_atomic_bridge_chain_select_bus_fmts(). This method is optional. When not implemented, the core will bypass bus format negotiation on this element of the bridge without failing, and the previous element in the chain will be passed MEDIA_BUS_FMT_FIXED as its output bus format.”h]”hX�This method is called on all elements of the bridge chain as part of the bus format negotiation process that happens in drm_atomic_bridge_chain_select_bus_fmts(). This method is optional. When not implemented, the core will bypass bus format negotiation on this element of the bridge without failing, and the previous element in the chain will be passed MEDIA_BUS_FMT_FIXED as its output bus format.”…”�”}”(hjXUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mahj7UubhÎ)�”}”(hXVBridge drivers that need to support being linked to bridges that are not supporting bus format negotiation should handle the output_fmt == MEDIA_BUS_FMT_FIXED case appropriately, by selecting a sensible default value or extracting this information from somewhere else (FW property, :c:type:`drm_display_mode`, :c:type:`drm_display_info`, ...)”h]”(hXBridge drivers that need to support being linked to bridges that are not supporting bus format negotiation should handle the output_fmt == MEDIA_BUS_FMT_FIXED case appropriately, by selecting a sensible default value or extracting this information from somewhere else (FW property, ”…”�”}”(hjgUh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_display_mode`”h]”jˆ )�”}”(hjqUh]”hŒdrm_display_mode”…”�”}”(hjsUh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjoUubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_display_mode”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MihjgUubhŒ, ”…”�”}”(hjgUh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_display_info`”h]”jˆ )�”}”(hj•Uh]”hŒdrm_display_info”…”�”}”(hj—Uh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj“Uubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_display_info”uh1hh³jŽUh´MihjgUubhŒ, ...)”…”�”}”(hjgUh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jŽUh´Mihj7UubhÎ)�”}”(hX0Note: Even if input format selection on the first bridge has no impact on the negotiation process (bus format negotiation stops once we reach the first element of the chain), drivers are expected to return accurate input formats as the input format may be used to configure the CRTC output appropriately.”h]”hX0Note: Even if input format selection on the first bridge has no impact on the negotiation process (bus format negotiation stops once we reach the first element of the chain), drivers are expected to return accurate input formats as the input format may be used to configure the CRTC output appropriately.”…”�”}”(hj¼Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mohj7Uubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjUubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j6Uh´Mshj€Kubj| )�”}”(hXg``atomic_check`` This method is responsible for checking bridge state correctness. It can also check the state of the surrounding components in chain to make sure the whole pipeline can work properly. :c:type:`drm_bridge_funcs.atomic_check\(\) ` hooks are called in reverse order (from the last to the first bridge). This method is optional. :c:type:`drm_bridge_funcs.mode_fixup\(\) ` is not called when :c:type:`drm_bridge_funcs.atomic_check\(\) ` is implemented, so only one of them should be provided. If drivers need to tweak :c:type:`drm_bridge_state.input_bus_cfg `.flags or :c:type:`drm_bridge_state.output_bus_cfg `.flags it should happen in this function. By default the :c:type:`drm_bridge_state.output_bus_cfg `.flags field is set to the next bridge :c:type:`drm_bridge_state.input_bus_cfg `.flags value or :c:type:`drm_connector.display_info `.bus_flags if the bridge is the last element in the chain. RETURNS: zero if the check passed, a negative error code otherwise. ”h]”(j‚ )�”}”(hŒ``atomic_check``”h]”jˆ )�”}”(hjÝUh]”hŒ atomic_check”…”�”}”(hjßUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÛUubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M“hj×Uubjž )�”}”(hhh]”(hÎ)�”}”(hŒ·This method is responsible for checking bridge state correctness. It can also check the state of the surrounding components in chain to make sure the whole pipeline can work properly.”h]”hŒ·This method is responsible for checking bridge state correctness. It can also check the state of the surrounding components in chain to make sure the whole pipeline can work properly.”…”�”}”(hjöUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MhjóUubhÎ)�”}”(hŒ…:c:type:`drm_bridge_funcs.atomic_check\(\) ` hooks are called in reverse order (from the last to the first bridge).”h]”(h)�”}”(hŒ>:c:type:`drm_bridge_funcs.atomic_check\(\) `”h]”jˆ )�”}”(hj Vh]”hŒdrm_bridge_funcs.atomic_check()”…”�”}”(hj Vh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj Vubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MƒhjVubhŒG hooks are called in reverse order (from the last to the first bridge).”…”�”}”(hjVh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j(Vh´MƒhjóUubhÎ)�”}”(hŒßThis method is optional. :c:type:`drm_bridge_funcs.mode_fixup\(\) ` is not called when :c:type:`drm_bridge_funcs.atomic_check\(\) ` is implemented, so only one of them should be provided.”h]”(hŒThis method is optional. ”…”�”}”(hj3Vh²hh³Nh´Nubh)�”}”(hŒ<:c:type:`drm_bridge_funcs.mode_fixup\(\) `”h]”jˆ )�”}”(hj=Vh]”hŒdrm_bridge_funcs.mode_fixup()”…”�”}”(hj?Vh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj;Vubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M†hj3VubhŒ is not called when ”…”�”}”(hj3Vh²hh³Nh´Nubh)�”}”(hŒ>:c:type:`drm_bridge_funcs.atomic_check\(\) `”h]”jˆ )�”}”(hjaVh]”hŒdrm_bridge_funcs.atomic_check()”…”�”}”(hjcVh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj_Vubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³jZVh´M†hj3VubhŒ8 is implemented, so only one of them should be provided.”…”�”}”(hj3Vh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jZVh´M†hjóUubhÎ)�”}”(hXïIf drivers need to tweak :c:type:`drm_bridge_state.input_bus_cfg `.flags or :c:type:`drm_bridge_state.output_bus_cfg `.flags it should happen in this function. By default the :c:type:`drm_bridge_state.output_bus_cfg `.flags field is set to the next bridge :c:type:`drm_bridge_state.input_bus_cfg `.flags value or :c:type:`drm_connector.display_info `.bus_flags if the bridge is the last element in the chain.”h]”(hŒIf drivers need to tweak ”…”�”}”(hjˆVh²hh³Nh´Nubh)�”}”(hŒ;:c:type:`drm_bridge_state.input_bus_cfg `”h]”jˆ )�”}”(hj’Vh]”hŒdrm_bridge_state.input_bus_cfg”…”�”}”(hj”Vh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj�Vubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_state”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MŠhjˆVubhŒ .flags or ”…”�”}”(hjˆVh²hh³Nh´Nubh)�”}”(hŒ<:c:type:`drm_bridge_state.output_bus_cfg `”h]”jˆ )�”}”(hj¶Vh]”hŒdrm_bridge_state.output_bus_cfg”…”�”}”(hj¸Vh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj´Vubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_state”uh1hh³j¯Vh´MŠhjˆVubhŒ9.flags it should happen in this function. By default the ”…”�”}”(hjˆVh²hh³Nh´Nubh)�”}”(hŒ<:c:type:`drm_bridge_state.output_bus_cfg `”h]”jˆ )�”}”(hjÙVh]”hŒdrm_bridge_state.output_bus_cfg”…”�”}”(hjÛVh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj×Vubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_state”uh1hh³j¯Vh´MŠhjˆVubhŒ'.flags field is set to the next bridge ”…”�”}”(hjˆVh²hh³Nh´Nubh)�”}”(hŒ;:c:type:`drm_bridge_state.input_bus_cfg `”h]”jˆ )�”}”(hjüVh]”hŒdrm_bridge_state.input_bus_cfg”…”�”}”(hjþVh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjúVubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_state”uh1hh³j¯Vh´MŠhjˆVubhŒ.flags value or ”…”�”}”(hjˆVh²hh³Nh´Nubh)�”}”(hŒ4:c:type:`drm_connector.display_info `”h]”jˆ )�”}”(hjWh]”hŒdrm_connector.display_info”…”�”}”(hj!Wh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjWubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_connector”uh1hh³j¯Vh´MŠhjˆVubhŒ:.bus_flags if the bridge is the last element in the chain.”…”�”}”(hjˆVh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¯Vh´MŠhjóUubhÎ)�”}”(hŒCRETURNS: zero if the check passed, a negative error code otherwise.”h]”hŒCRETURNS: zero if the check passed, a negative error code otherwise.”…”�”}”(hjFWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M’hjóUubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj×Uubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jòUh´M“hj€Kubj| )�”}”(hX```atomic_create_state`` Allocate a pristine, initialized, state for the bridge object and return it. This callback must have no side effects: in particular, the returned state must not be assigned to the object's state pointer and it must not affect the hardware state. RETURNS: A new, pristine, bridge state instance or an error pointer on failure. ”h]”(j‚ )�”}”(hŒ``atomic_create_state``”h]”jˆ )�”}”(hjgWh]”hŒatomic_create_state”…”�”}”(hjiWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjeWubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M¦hjaWubjž )�”}”(hhh]”(hÎ)�”}”(hŒõAllocate a pristine, initialized, state for the bridge object and return it. This callback must have no side effects: in particular, the returned state must not be assigned to the object's state pointer and it must not affect the hardware state.”h]”hŒ÷Allocate a pristine, initialized, state for the bridge object and return it. This callback must have no side effects: in particular, the returned state must not be assigned to the object’s state pointer and it must not affect the hardware state.”…”�”}”(hj€Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M�hj}WubhÎ)�”}”(hŒRETURNS:”h]”hŒRETURNS:”…”�”}”(hj�Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M£hj}WubhÎ)�”}”(hŒFA new, pristine, bridge state instance or an error pointer on failure.”h]”hŒFA new, pristine, bridge state instance or an error pointer on failure.”…”�”}”(hjžWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M¥hj}Wubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjaWubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j|Wh´M¦hj€Kubj| )�”}”(hX„``detect`` Check if anything is attached to the bridge output. This callback is optional, if not implemented the bridge will be considered as always having a component attached to its output. Bridges that implement this callback shall set the DRM_BRIDGE_OP_DETECT flag in their :c:type:`drm_bridge->ops `. RETURNS: drm_connector_status indicating the bridge output status. ”h]”(j‚ )�”}”(hŒ ``detect``”h]”jˆ )�”}”(hj¿Wh]”hŒdetect”…”�”}”(hjÁWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj½Wubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M¶hj¹Wubjž )�”}”(hhh]”(hÎ)�”}”(hŒ3Check if anything is attached to the bridge output.”h]”hŒ3Check if anything is attached to the bridge output.”…”�”}”(hjØWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M­hjÕWubhÎ)�”}”(hŒþThis callback is optional, if not implemented the bridge will be considered as always having a component attached to its output. Bridges that implement this callback shall set the DRM_BRIDGE_OP_DETECT flag in their :c:type:`drm_bridge->ops `.”h]”(hŒ×This callback is optional, if not implemented the bridge will be considered as always having a component attached to its output. Bridges that implement this callback shall set the DRM_BRIDGE_OP_DETECT flag in their ”…”�”}”(hjçWh²hh³Nh´Nubh)�”}”(hŒ&:c:type:`drm_bridge->ops `”h]”jˆ )�”}”(hjñWh]”hŒdrm_bridge->ops”…”�”}”(hjóWh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjïWubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_bridge”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M¯hjçWubhŒ.”…”�”}”(hjçWh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jXh´M¯hjÕWubhÎ)�”}”(hŒRETURNS:”h]”hŒRETURNS:”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M´hjÕWubhÎ)�”}”(hŒ9drm_connector_status indicating the bridge output status.”h]”hŒ9drm_connector_status indicating the bridge output status.”…”�”}”(hj(Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÔWh´M¶hjÕWubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¹Wubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÔWh´M¶hj€Kubj| )�”}”(hXô``get_modes`` Fill all modes currently valid for the sink into the :c:type:`drm_connector` with drm_mode_probed_add(). The **get_modes** callback is mostly intended to support non-probeable displays such as many fixed panels. Bridges that support reading EDID shall leave **get_modes** unimplemented and implement the :c:type:`drm_bridge_funcs->edid_read ` callback instead. This callback is optional. Bridges that implement it shall set the DRM_BRIDGE_OP_MODES flag in their :c:type:`drm_bridge->ops `. The connector parameter shall be used for the sole purpose of filling modes, and shall not be stored internally by bridge drivers for future usage. RETURNS: The number of modes added by calling drm_mode_probed_add(). ”h]”(j‚ )�”}”(hŒ ``get_modes``”h]”jˆ )�”}”(hjHXh]”hŒ get_modes”…”�”}”(hjJXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjFXubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MÏhjBXubjž )�”}”(hhh]”(hÎ)�”}”(hŒhFill all modes currently valid for the sink into the :c:type:`drm_connector` with drm_mode_probed_add().”h]”(hŒ5Fill all modes currently valid for the sink into the ”…”�”}”(hjaXh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_connector`”h]”jˆ )�”}”(hjkXh]”hŒ drm_connector”…”�”}”(hjmXh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjiXubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œ drm_connector”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M¾hjaXubhŒ with drm_mode_probed_add().”…”�”}”(hjaXh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jˆXh´M¾hj^XubhÎ)�”}”(hXThe **get_modes** callback is mostly intended to support non-probeable displays such as many fixed panels. Bridges that support reading EDID shall leave **get_modes** unimplemented and implement the :c:type:`drm_bridge_funcs->edid_read ` callback instead.”h]”(hŒThe ”…”�”}”(hj“Xh²hh³Nh´Nubj3 )�”}”(hŒ **get_modes**”h]”hŒ get_modes”…”�”}”(hj›Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj“XubhŒˆ callback is mostly intended to support non-probeable displays such as many fixed panels. Bridges that support reading EDID shall leave ”…”�”}”(hj“Xh²hh³Nh´Nubj3 )�”}”(hŒ **get_modes**”h]”hŒ get_modes”…”�”}”(hj­Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj“XubhŒ! unimplemented and implement the ”…”�”}”(hj“Xh²hh³Nh´Nubh)�”}”(hŒ8:c:type:`drm_bridge_funcs->edid_read `”h]”jˆ )�”}”(hjÁXh]”hŒdrm_bridge_funcs->edid_read”…”�”}”(hjÃXh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj¿Xubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MÁhj“XubhŒ callback instead.”…”�”}”(hj“Xh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÞXh´MÁhj^XubhÎ)�”}”(hŒŒThis callback is optional. Bridges that implement it shall set the DRM_BRIDGE_OP_MODES flag in their :c:type:`drm_bridge->ops `.”h]”(hŒeThis callback is optional. Bridges that implement it shall set the DRM_BRIDGE_OP_MODES flag in their ”…”�”}”(hjéXh²hh³Nh´Nubh)�”}”(hŒ&:c:type:`drm_bridge->ops `”h]”jˆ )�”}”(hjóXh]”hŒdrm_bridge->ops”…”�”}”(hjõXh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjñXubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_bridge”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MÆhjéXubhŒ.”…”�”}”(hjéXh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jYh´MÆhj^XubhÎ)�”}”(hŒ“The connector parameter shall be used for the sole purpose of filling modes, and shall not be stored internally by bridge drivers for future usage.”h]”hŒ“The connector parameter shall be used for the sole purpose of filling modes, and shall not be stored internally by bridge drivers for future usage.”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MÉhj^XubhÎ)�”}”(hŒRETURNS:”h]”hŒRETURNS:”…”�”}”(hj*Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MÍhj^XubhÎ)�”}”(hŒ;The number of modes added by calling drm_mode_probed_add().”h]”hŒ;The number of modes added by calling drm_mode_probed_add().”…”�”}”(hj9Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j]Xh´MÏhj^Xubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjBXubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j]Xh´MÏhj€Kubj| )�”}”(hXÆ``edid_read`` Read the EDID data of the connected display. The **edid_read** callback is the preferred way of reporting mode information for a display connected to the bridge output. Bridges that support reading EDID shall implement this callback and leave the **get_modes** callback unimplemented. The caller of this operation shall first verify the output connection status and refrain from reading EDID from a disconnected output. This callback is optional. Bridges that implement it shall set the DRM_BRIDGE_OP_EDID flag in their :c:type:`drm_bridge->ops `. The connector parameter shall be used for the sole purpose of EDID retrieval, and shall not be stored internally by bridge drivers for future usage. RETURNS: An edid structure newly allocated with drm_edid_alloc() or returned from drm_edid_read() family of functions on success, or NULL otherwise. The caller is responsible for freeing the returned edid structure with drm_edid_free(). ”h]”(j‚ )�”}”(hŒ ``edid_read``”h]”jˆ )�”}”(hjYYh]”hŒ edid_read”…”�”}”(hj[Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjWYubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MîhjSYubjž )�”}”(hhh]”(hÎ)�”}”(hŒ,Read the EDID data of the connected display.”h]”hŒ,Read the EDID data of the connected display.”…”�”}”(hjrYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M×hjoYubhÎ)�”}”(hŒïThe **edid_read** callback is the preferred way of reporting mode information for a display connected to the bridge output. Bridges that support reading EDID shall implement this callback and leave the **get_modes** callback unimplemented.”h]”(hŒThe ”…”�”}”(hj�Yh²hh³Nh´Nubj3 )�”}”(hŒ **edid_read**”h]”hŒ edid_read”…”�”}”(hj‰Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj�YubhŒ¹ callback is the preferred way of reporting mode information for a display connected to the bridge output. Bridges that support reading EDID shall implement this callback and leave the ”…”�”}”(hj�Yh²hh³Nh´Nubj3 )�”}”(hŒ **get_modes**”h]”hŒ get_modes”…”�”}”(hj›Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj�YubhŒ callback unimplemented.”…”�”}”(hj�Yh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MÙhjoYubhÎ)�”}”(hŒ†The caller of this operation shall first verify the output connection status and refrain from reading EDID from a disconnected output.”h]”hŒ†The caller of this operation shall first verify the output connection status and refrain from reading EDID from a disconnected output.”…”�”}”(hj´Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MÞhjoYubhÎ)�”}”(hŒ‹This callback is optional. Bridges that implement it shall set the DRM_BRIDGE_OP_EDID flag in their :c:type:`drm_bridge->ops `.”h]”(hŒdThis callback is optional. Bridges that implement it shall set the DRM_BRIDGE_OP_EDID flag in their ”…”�”}”(hjÃYh²hh³Nh´Nubh)�”}”(hŒ&:c:type:`drm_bridge->ops `”h]”jˆ )�”}”(hjÍYh]”hŒdrm_bridge->ops”…”�”}”(hjÏYh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjËYubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_bridge”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MâhjÃYubhŒ.”…”�”}”(hjÃYh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jêYh´MâhjoYubhÎ)�”}”(hŒ”The connector parameter shall be used for the sole purpose of EDID retrieval, and shall not be stored internally by bridge drivers for future usage.”h]”hŒ”The connector parameter shall be used for the sole purpose of EDID retrieval, and shall not be stored internally by bridge drivers for future usage.”…”�”}”(hjõYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MåhjoYubhÎ)�”}”(hŒRETURNS:”h]”hŒRETURNS:”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MéhjoYubhÎ)�”}”(hŒãAn edid structure newly allocated with drm_edid_alloc() or returned from drm_edid_read() family of functions on success, or NULL otherwise. The caller is responsible for freeing the returned edid structure with drm_edid_free().”h]”hŒãAn edid structure newly allocated with drm_edid_alloc() or returned from drm_edid_read() family of functions on success, or NULL otherwise. The caller is responsible for freeing the returned edid structure with drm_edid_free().”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MëhjoYubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjSYubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jnYh´Mîhj€Kubj| )�”}”(hX``hpd_notify`` Notify the bridge of hot plug detection. This callback is optional, it may be implemented by bridges that need to be notified of display connection or disconnection for internal reasons. One use case is to reset the internal state of CEC controllers for HDMI bridges. ”h]”(j‚ )�”}”(hŒ``hpd_notify``”h]”jˆ )�”}”(hj4Zh]”hŒ hpd_notify”…”�”}”(hj6Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj2Zubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mûhj.Zubjž )�”}”(hhh]”(hÎ)�”}”(hŒ(Notify the bridge of hot plug detection.”h]”hŒ(Notify the bridge of hot plug detection.”…”�”}”(hjMZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MöhjJZubhÎ)�”}”(hŒâThis callback is optional, it may be implemented by bridges that need to be notified of display connection or disconnection for internal reasons. One use case is to reset the internal state of CEC controllers for HDMI bridges.”•h]”hŒâThis callback is optional, it may be implemented by bridges that need to be notified of display connection or disconnection for internal reasons. One use case is to reset the internal state of CEC controllers for HDMI bridges.”…”�”}”(hj\Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MøhjJZubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj.Zubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jIZh´Mûhj€Kubj| )�”}”(hXù``hpd_enable`` Enable hot plug detection. From now on the bridge shall call drm_bridge_hpd_notify() each time a change is detected in the output connection status, until hot plug detection gets disabled with **hpd_disable**. This callback is optional and shall only be implemented by bridges that support hot-plug notification without polling. Bridges that implement it shall also implement the **hpd_disable** callback and set the DRM_BRIDGE_OP_HPD flag in their :c:type:`drm_bridge->ops `. ”h]”(j‚ )�”}”(hŒ``hpd_enable``”h]”jˆ )�”}”(hj}Zh]”hŒ hpd_enable”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj{Zubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M hjwZubjž )�”}”(hhh]”(hÎ)�”}”(hŒÑEnable hot plug detection. From now on the bridge shall call drm_bridge_hpd_notify() each time a change is detected in the output connection status, until hot plug detection gets disabled with **hpd_disable**.”h]”(hŒÁEnable hot plug detection. From now on the bridge shall call drm_bridge_hpd_notify() each time a change is detected in the output connection status, until hot plug detection gets disabled with ”…”�”}”(hj–Zh²hh³Nh´Nubj3 )�”}”(hŒ**hpd_disable**”h]”hŒ hpd_disable”…”�”}”(hjžZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj–ZubhŒ.”…”�”}”(hj–Zh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mhj“ZubhÎ)�”}”(hXThis callback is optional and shall only be implemented by bridges that support hot-plug notification without polling. Bridges that implement it shall also implement the **hpd_disable** callback and set the DRM_BRIDGE_OP_HPD flag in their :c:type:`drm_bridge->ops `.”h]”(hŒªThis callback is optional and shall only be implemented by bridges that support hot-plug notification without polling. Bridges that implement it shall also implement the ”…”�”}”(hj·Zh²hh³Nh´Nubj3 )�”}”(hŒ**hpd_disable**”h]”hŒ hpd_disable”…”�”}”(hj¿Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj·ZubhŒ6 callback and set the DRM_BRIDGE_OP_HPD flag in their ”…”�”}”(hj·Zh²hh³Nh´Nubh)�”}”(hŒ&:c:type:`drm_bridge->ops `”h]”jˆ )�”}”(hjÓZh]”hŒdrm_bridge->ops”…”�”}”(hjÕZh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÑZubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_bridge”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M hj·ZubhŒ.”…”�”}”(hj·Zh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jðZh´M hj“Zubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjwZubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j’Zh´M hj€Kubj| )�”}”(hXÆ``hpd_disable`` Disable hot plug detection. Once this function returns the bridge shall not call drm_bridge_hpd_notify() when a change in the output connection status occurs. This callback is optional and shall only be implemented by bridges that support hot-plug notification without polling. Bridges that implement it shall also implement the **hpd_enable** callback and set the DRM_BRIDGE_OP_HPD flag in their :c:type:`drm_bridge->ops `. ”h]”(j‚ )�”}”(hŒ``hpd_disable``”h]”jˆ )�”}”(hj [h]”hŒ hpd_disable”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj [ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mhj[ubjž )�”}”(hhh]”(hÎ)�”}”(hŒžDisable hot plug detection. Once this function returns the bridge shall not call drm_bridge_hpd_notify() when a change in the output connection status occurs.”h]”hŒžDisable hot plug detection. Once this function returns the bridge shall not call drm_bridge_hpd_notify() when a change in the output connection status occurs.”…”�”}”(hj&[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mhj#[ubhÎ)�”}”(hXThis callback is optional and shall only be implemented by bridges that support hot-plug notification without polling. Bridges that implement it shall also implement the **hpd_enable** callback and set the DRM_BRIDGE_OP_HPD flag in their :c:type:`drm_bridge->ops `.”h]”(hŒªThis callback is optional and shall only be implemented by bridges that support hot-plug notification without polling. Bridges that implement it shall also implement the ”…”�”}”(hj5[h²hh³Nh´Nubj3 )�”}”(hŒ**hpd_enable**”h]”hŒ hpd_enable”…”�”}”(hj=[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj5[ubhŒ6 callback and set the DRM_BRIDGE_OP_HPD flag in their ”…”�”}”(hj5[h²hh³Nh´Nubh)�”}”(hŒ&:c:type:`drm_bridge->ops `”h]”jˆ )�”}”(hjQ[h]”hŒdrm_bridge->ops”…”�”}”(hjS[h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjO[ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_bridge”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mhj5[ubhŒ.”…”�”}”(hj5[h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jn[h´Mhj#[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j"[h´Mhj€Kubj| )�”}”(hXñ``hdmi_tmds_char_rate_valid`` Check whether a particular TMDS character rate is supported by the driver. This callback is optional and should only be implemented by the bridges that take part in the HDMI connector implementation. Bridges that implement it shall set the DRM_BRIDGE_OP_HDMI flag in their :c:type:`drm_bridge->ops `. Returns: Either :c:type:`drm_mode_status.MODE_OK ` or one of the failure reasons in :c:type:`enum drm_mode_status `. ”h]”(j‚ )�”}”(hŒ``hdmi_tmds_char_rate_valid``”h]”jˆ )�”}”(hj‹[h]”hŒhdmi_tmds_char_rate_valid”…”�”}”(hj�[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj‰[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M,hj…[ubjž )�”}”(hhh]”(hÎ)�”}”(hŒJCheck whether a particular TMDS character rate is supported by the driver.”h]”hŒJCheck whether a particular TMDS character rate is supported by the driver.”…”�”}”(hj¤[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M!hj¡[ubhÎ)�”}”(hŒíThis callback is optional and should only be implemented by the bridges that take part in the HDMI connector implementation. Bridges that implement it shall set the DRM_BRIDGE_OP_HDMI flag in their :c:type:`drm_bridge->ops `.”h]”(hŒÆThis callback is optional and should only be implemented by the bridges that take part in the HDMI connector implementation. Bridges that implement it shall set the DRM_BRIDGE_OP_HDMI flag in their ”…”�”}”(hj³[h²hh³Nh´Nubh)�”}”(hŒ&:c:type:`drm_bridge->ops `”h]”jˆ )�”}”(hj½[h]”hŒdrm_bridge->ops”…”�”}”(hj¿[h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj»[ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_bridge”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M$hj³[ubhŒ.”…”�”}”(hj³[h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÚ[h´M$hj¡[ubhÎ)�”}”(hŒReturns:”h]”hŒReturns:”…”�”}”(hjå[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M)hj¡[ubhÎ)�”}”(hŒ�Either :c:type:`drm_mode_status.MODE_OK ` or one of the failure reasons in :c:type:`enum drm_mode_status `.”h]”(hŒEither ”…”�”}”(hjô[h²hh³Nh´Nubh)�”}”(hŒ3:c:type:`drm_mode_status.MODE_OK `”h]”jˆ )�”}”(hjþ[h]”hŒdrm_mode_status.MODE_OK”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjü[ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_mode_status”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M+hjô[ubhŒ" or one of the failure reasons in ”…”�”}”(hjô[h²hh³Nh´Nubh)�”}”(hŒ0:c:type:`enum drm_mode_status `”h]”jˆ )�”}”(hj"\h]”hŒenum drm_mode_status”…”�”}”(hj$\h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj \ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_mode_status”uh1hh³j\h´M+hjô[ubhŒ.”…”�”}”(hjô[h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j\h´M+hj¡[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj…[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j [h´M,hj€Kubj| )�”}”(hŒ÷``hdmi_clear_avi_infoframe`` This callback clears the infoframes in the hardware during commit. This callback is optional but it must be implemented by bridges that set the DRM_BRIDGE_OP_HDMI flag in their :c:type:`drm_bridge->ops `. ”h]”(j‚ )�”}”(hŒ``hdmi_clear_avi_infoframe``”h]”jˆ )�”}”(hj[\h]”hŒhdmi_clear_avi_infoframe”…”�”}”(hj]\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjY\ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M9hjU\ubjž )�”}”(hhh]”(hÎ)�”}”(hŒBThis callback clears the infoframes in the hardware during commit.”h]”hŒBThis callback clears the infoframes in the hardware during commit.”…”�”}”(hjt\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M6hjq\ubhÎ)�”}”(hŒ•This callback is optional but it must be implemented by bridges that set the DRM_BRIDGE_OP_HDMI flag in their :c:type:`drm_bridge->ops `.”h]”(hŒnThis callback is optional but it must be implemented by bridges that set the DRM_BRIDGE_OP_HDMI flag in their ”…”�”}”(hjƒ\h²hh³Nh´Nubh)�”}”(hŒ&:c:type:`drm_bridge->ops `”h]”jˆ )�”}”(hj�\h]”hŒdrm_bridge->ops”…”�”}”(hj�\h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj‹\ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_bridge”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M8hjƒ\ubhŒ.”…”�”}”(hjƒ\h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jª\h´M8hjq\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjU\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jp\h´M9hj€Kubj| )�”}”(hŒÝ``hdmi_write_avi_infoframe`` Program the infoframe into the hardware. This callback is optional but it must be implemented by bridges that set the DRM_BRIDGE_OP_HDMI flag in their :c:type:`drm_bridge->ops `. ”h]”(j‚ )�”}”(hŒ``hdmi_write_avi_infoframe``”h]”jˆ )�”}”(hjÇ\h]”hŒhdmi_write_avi_infoframe”…”�”}”(hjÉ\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÅ\ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MChjÁ\ubjž )�”}”(hhh]”(hÎ)�”}”(hŒ(Program the infoframe into the hardware.”h]”hŒ(Program the infoframe into the hardware.”…”�”}”(hjà\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M@hjÝ\ubhÎ)�”}”(hŒ•This callback is optional but it must be implemented by bridges that set the DRM_BRIDGE_OP_HDMI flag in their :c:type:`drm_bridge->ops `.”h]”(hŒnThis callback is optional but it must be implemented by bridges that set the DRM_BRIDGE_OP_HDMI flag in their ”…”�”}”(hjï\h²hh³Nh´Nubh)�”}”(hŒ&:c:type:`drm_bridge->ops `”h]”jˆ )�”}”(hjù\h]”hŒdrm_bridge->ops”…”�”}”(hjû\h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj÷\ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_bridge”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MBhjï\ubhŒ.”…”�”}”(hjï\h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j]h´MBhjÝ\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÁ\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÜ\h´MChj€Kubj| )�”}”(hŒø``hdmi_clear_hdmi_infoframe`` This callback clears the infoframes in the hardware during commit. This callback is optional but it must be implemented by bridges that set the DRM_BRIDGE_OP_HDMI flag in their :c:type:`drm_bridge->ops `. ”h]”(j‚ )�”}”(hŒ``hdmi_clear_hdmi_infoframe``”h]”jˆ )�”}”(hj3]h]”hŒhdmi_clear_hdmi_infoframe”…”�”}”(hj5]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj1]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MNhj-]ubjž )�”}”(hhh]”(hÎ)�”}”(hŒBThis callback clears the infoframes in the hardware during commit.”h]”hŒBThis callback clears the infoframes in the hardware during commit.”…”�”}”(hjL]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MKhjI]ubhÎ)�”}”(hŒ•This callback is optional but it must be implemented by bridges that set the DRM_BRIDGE_OP_HDMI flag in their :c:type:`drm_bridge->ops `.”h]”(hŒnThis callback is optional but it must be implemented by bridges that set the DRM_BRIDGE_OP_HDMI flag in their ”…”�”}”(hj[]h²hh³Nh´Nubh)�”}”(hŒ&:c:type:`drm_bridge->ops `”h]”jˆ )�”}”(hje]h]”hŒdrm_bridge->ops”…”�”}”(hjg]h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjc]ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_bridge”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MMhj[]ubhŒ.”…”�”}”(hj[]h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j‚]h´MMhjI]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj-]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jH]h´MNhj€Kubj| )�”}”(hŒÞ``hdmi_write_hdmi_infoframe`` Program the infoframe into the hardware. This callback is optional but it must be implemented by bridges that set the DRM_BRIDGE_OP_HDMI flag in their :c:type:`drm_bridge->ops `. ”h]”(j‚ )�”}”(hŒ``hdmi_write_hdmi_infoframe``”h]”jˆ )�”}”(hjŸ]h]”hŒhdmi_write_hdmi_infoframe”…”�”}”(hj¡]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj�]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MXhj™]ubjž )�”}”(hhh]”(hÎ)�”}”(hŒ(Program the infoframe into the hardware.”h]”hŒ(Program the infoframe into the hardware.”…”�”}”(hj¸]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MUhjµ]ubhÎ)�”}”(hŒ•This callback is optional but it must be implemented by bridges that set the DRM_BRIDGE_OP_HDMI flag in their :c:type:`drm_bridge->ops `.”h]”(hŒnThis callback is optional but it must be implemented by bridges that set the DRM_BRIDGE_OP_HDMI flag in their ”…”�”}”(hjÇ]h²hh³Nh´Nubh)�”}”(hŒ&:c:type:`drm_bridge->ops `”h]”jˆ )�”}”(hjÑ]h]”hŒdrm_bridge->ops”…”�”}”(hjÓ]h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÏ]ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_bridge”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MWhjÇ]ubhŒ.”…”�”}”(hjÇ]h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jî]h´MWhjµ]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj™]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j´]h´MXhj€Kubj| )�”}”(hX ``hdmi_clear_hdr_drm_infoframe`` This callback clears the infoframes in the hardware during commit. This callback is optional but it must be implemented by bridges that set the DRM_BRIDGE_OP_HDMI_HDR_DRM_INFOFRAME flag in their :c:type:`drm_bridge->ops `. ”h]”(j‚ )�”}”(hŒ ``hdmi_clear_hdr_drm_infoframe``”h]”jˆ )�”}”(hj ^h]”hŒhdmi_clear_hdr_drm_infoframe”…”�”}”(hj ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj ^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mdhj^ubjž )�”}”(hhh]”(hÎ)�”}”(hŒBThis callback clears the infoframes in the hardware during commit.”h]”hŒBThis callback clears the infoframes in the hardware during commit.”…”�”}”(hj$^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M`hj!^ubhÎ)�”}”(hŒ§This callback is optional but it must be implemented by bridges that set the DRM_BRIDGE_OP_HDMI_HDR_DRM_INFOFRAME flag in their :c:type:`drm_bridge->ops `.”h]”(hŒ€This callback is optional but it must be implemented by bridges that set the DRM_BRIDGE_OP_HDMI_HDR_DRM_INFOFRAME flag in their ”…”�”}”(hj3^h²hh³Nh´Nubh)�”}”(hŒ&:c:type:`drm_bridge->ops `”h]”jˆ )�”}”(hj=^h]”hŒdrm_bridge->ops”…”�”}”(hj?^h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj;^ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_bridge”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mbhj3^ubhŒ.”…”�”}”(hj3^h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jZ^h´Mbhj!^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j ^h´Mdhj€Kubj| )�”}”(hŒó``hdmi_write_hdr_drm_infoframe`` Program the infoframe into the hardware. This callback is optional but it must be implemented by bridges that set the DRM_BRIDGE_OP_HDMI_HDR_DRM_INFOFRAME flag in their :c:type:`drm_bridge->ops `. ”h]”(j‚ )�”}”(hŒ ``hdmi_write_hdr_drm_infoframe``”h]”jˆ )�”}”(hjw^h]”hŒhdmi_write_hdr_drm_infoframe”…”�”}”(hjy^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hju^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mohjq^ubjž )�”}”(hhh]”(hÎ)�”}”(hŒ(Program the infoframe into the hardware.”h]”hŒ(Program the infoframe into the hardware.”…”�”}”(hj�^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mkhj�^ubhÎ)�”}”(hŒ§This callback is optional but it must be implemented by bridges that set the DRM_BRIDGE_OP_HDMI_HDR_DRM_INFOFRAME flag in their :c:type:`drm_bridge->ops `.”h]”(hŒ€This callback is optional but it must be implemented by bridges that set the DRM_BRIDGE_OP_HDMI_HDR_DRM_INFOFRAME flag in their ”…”�”}”(hjŸ^h²hh³Nh´Nubh)�”}”(hŒ&:c:type:`drm_bridge->ops `”h]”jˆ )�”}”(hj©^h]”hŒdrm_bridge->ops”…”�”}”(hj«^h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj§^ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_bridge”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MmhjŸ^ubhŒ.”…”�”}”(hjŸ^h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÆ^h´Mmhj�^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjq^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jŒ^h´Mohj€Kubj| )�”}”(hX``hdmi_clear_spd_infoframe`` This callback clears the infoframes in the hardware during commit. This callback is optional but it must be implemented by bridges that set the DRM_BRIDGE_OP_HDMI_SPD_INFOFRAME flag in their :c:type:`drm_bridge->ops `. ”h]”(j‚ )�”}”(hŒ``hdmi_clear_spd_infoframe``”h]”jˆ )�”}”(hjã^h]”hŒhdmi_clear_spd_infoframe”…”�”}”(hjå^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjá^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M{hjÝ^ubjž )�”}”(hhh]”(hÎ)�”}”(hŒBThis callback clears the infoframes in the hardware during commit.”h]”hŒBThis callback clears the infoframes in the hardware during commit.”…”�”}”(hjü^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mwhjù^ubhÎ)�”}”(hŒ£This callback is optional but it must be implemented by bridges that set the DRM_BRIDGE_OP_HDMI_SPD_INFOFRAME flag in their :c:type:`drm_bridge->ops `.”h]”(hŒ|This callback is optional but it must be implemented by bridges that set the DRM_BRIDGE_OP_HDMI_SPD_INFOFRAME flag in their ”…”�”}”(hj _h²hh³Nh´Nubh)�”}”(hŒ&:c:type:`drm_bridge->ops `”h]”jˆ )�”}”(hj_h]”hŒdrm_bridge->ops”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj_ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_bridge”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Myhj _ubhŒ.”…”�”}”(hj _h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j2_h´Myhjù^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÝ^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jø^h´M{hj€Kubj| )�”}”(hŒë``hdmi_write_spd_infoframe`` Program the infoframe into the hardware. This callback is optional but it must be implemented by bridges that set the DRM_BRIDGE_OP_HDMI_SPD_INFOFRAME flag in their :c:type:`drm_bridge->ops `. ”h]”(j‚ )�”}”(hŒ``hdmi_write_spd_infoframe``”h]”jˆ )�”}”(hjO_h]”hŒhdmi_write_spd_infoframe”…”�”}”(hjQ_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjM_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M†hjI_ubjž )�”}”(hhh]”(hÎ)�”}”(hŒ(Program the infoframe into the hardware.”h]”hŒ(Program the infoframe into the hardware.”…”�”}”(hjh_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M‚hje_ubhÎ)�”}”(hŒ£This callback is optional but it must be implemented by bridges that set the DRM_BRIDGE_OP_HDMI_SPD_INFOFRAME flag in their :c:type:`drm_bridge->ops `.”h]”(hŒ|This callback is optional but it must be implemented by bridges that set the DRM_BRIDGE_OP_HDMI_SPD_INFOFRAME flag in their ”…”�”}”(hjw_h²hh³Nh´Nubh)�”}”(hŒ&:c:type:`drm_bridge->ops `”h]”jˆ )�”}”(hj�_h]”hŒdrm_bridge->ops”…”�”}”(hjƒ_h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj_ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_bridge”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M„hjw_ubhŒ.”…”�”}”(hjw_h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jž_h´M„hje_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjI_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jd_h´M†hj€Kubj| )�”}”(hŒÿ``hdmi_clear_audio_infoframe`` This callback clears the infoframes in the hardware during commit. This callback is optional but it must be implemented by bridges that set the DRM_BRIDGE_OP_HDMI_AUDIO flag in their :c:type:`drm_bridge->ops `. ”h]”(j‚ )�”}”(hŒ``hdmi_clear_audio_infoframe``”h]”jˆ )�”}”(hj»_h]”hŒhdmi_clear_audio_infoframe”…”�”}”(hj½_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¹_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M‘hjµ_ubjž )�”}”(hhh]”(hÎ)�”}”(hŒBThis callback clears the infoframes in the hardware during commit.”h]”hŒBThis callback clears the infoframes in the hardware during commit.”…”�”}”(hjÔ_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MŽhjÑ_ubhÎ)�”}”(hŒ›This callback is optional but it must be implemented by bridges that set the DRM_BRIDGE_OP_HDMI_AUDIO flag in their :c:type:`drm_bridge->ops `.”h]”(hŒtThis callback is optional but it must be implemented by bridges that set the DRM_BRIDGE_OP_HDMI_AUDIO flag in their ”…”�”}”(hjã_h²hh³Nh´Nubh)�”}”(hŒ&:c:type:`drm_bridge->ops `”h]”jˆ )�”}”(hjí_h]”hŒdrm_bridge->ops”…”�”}”(hjï_h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjë_ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_bridge”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M�hjã_ubhŒ.”…”�”}”(hjã_h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j `h´M�hjÑ_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjµ_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÐ_h´M‘hj€Kubj| )�”}”(hŒå``hdmi_write_audio_infoframe`` Program the infoframe into the hardware. This callback is optional but it must be implemented by bridges that set the DRM_BRIDGE_OP_HDMI_AUDIO flag in their :c:type:`drm_bridge->ops `. ”h]”(j‚ )�”}”(hŒ``hdmi_write_audio_infoframe``”h]”jˆ )�”}”(hj'`h]”hŒhdmi_write_audio_infoframe”…”�”}”(hj)`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj%`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M›hj!`ubjž )�”}”(hhh]”(hÎ)�”}”(hŒ(Program the infoframe into the hardware.”h]”hŒ(Program the infoframe into the hardware.”…”�”}”(hj@`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M˜hj=`ubhÎ)�”}”(hŒ›This callback is optional but it must be implemented by bridges that set the DRM_BRIDGE_OP_HDMI_AUDIO flag in their :c:type:`drm_bridge->ops `.”h]”(hŒtThis callback is optional but it must be implemented by bridges that set the DRM_BRIDGE_OP_HDMI_AUDIO flag in their ”…”�”}”(hjO`h²hh³Nh´Nubh)�”}”(hŒ&:c:type:`drm_bridge->ops `”h]”jˆ )�”}”(hjY`h]”hŒdrm_bridge->ops”…”�”}”(hj[`h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjW`ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_bridge”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MšhjO`ubhŒ.”…”�”}”(hjO`h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jv`h´Mšhj=`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj!`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j<`h´M›hj€Kubj| )�”}”(hX``hdmi_audio_startup`` Called when ASoC starts an audio stream setup. This callback is optional, it can be implemented by bridges that set the **DRM_BRIDGE_OP_HDMI_AUDIO** flag in their :c:type:`drm_bridge->ops `. Returns: 0 on success, a negative error code otherwise ”h]”(j‚ )�”}”(hŒ``hdmi_audio_startup``”h]”jˆ )�”}”(hj“`h]”hŒhdmi_audio_startup”…”�”}”(hj•`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj‘`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M©hj�`ubjž )�”}”(hhh]”(hÎ)�”}”(hŒ.Called when ASoC starts an audio stream setup.”h]”hŒ.Called when ASoC starts an audio stream setup.”…”�”}”(hj¬`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M£hj©`ubhÎ)�”}”(hŒ›This callback is optional, it can be implemented by bridges that set the **DRM_BRIDGE_OP_HDMI_AUDIO** flag in their :c:type:`drm_bridge->ops `.”h]”(hŒIThis callback is optional, it can be implemented by bridges that set the ”…”�”}”(hj»`h²hh³Nh´Nubj3 )�”}”(hŒ**DRM_BRIDGE_OP_HDMI_AUDIO**”h]”hŒDRM_BRIDGE_OP_HDMI_AUDIO”…”�”}”(hjÃ`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj»`ubhŒ flag in their ”…”�”}”(hj»`h²hh³Nh´Nubh)�”}”(hŒ&:c:type:`drm_bridge->ops `”h]”jˆ )�”}”(hj×`h]”hŒdrm_bridge->ops”…”�”}”(hjÙ`h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÕ`ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_bridge”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M¥hj»`ubhŒ.”…”�”}”(hj»`h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jô`h´M¥hj©`ubhÎ)�”}”(hŒ6Returns: 0 on success, a negative error code otherwise”h]”hŒ6Returns: 0 on success, a negative error code otherwise”…”�”}”(hjÿ`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M¨hj©`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj�`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¨`h´M©hj€Kubj| )�”}”(hXG``hdmi_audio_prepare`` Configures HDMI-encoder for audio stream. Can be called multiple times for each setup. This callback is optional but it must be implemented by bridges that set the **DRM_BRIDGE_OP_HDMI_AUDIO** flag in their :c:type:`drm_bridge->ops `. Returns: 0 on success, a negative error code otherwise ”h]”(j‚ )�”}”(hŒ``hdmi_audio_prepare``”h]”jˆ )�”}”(hj ah]”hŒhdmi_audio_prepare”…”�”}”(hj"ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjaubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M¸hjaubjž )�”}”(hhh]”(hÎ)�”}”(hŒVConfigures HDMI-encoder for audio stream. Can be called multiple times for each setup.”h]”hŒVConfigures HDMI-encoder for audio stream. Can be called multiple times for each setup.”…”�”}”(hj9ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M±hj6aubhÎ)�”}”(hŒŸThis callback is optional but it must be implemented by bridges that set the **DRM_BRIDGE_OP_HDMI_AUDIO** flag in their :c:type:`drm_bridge->ops `.”h]”(hŒMThis callback is optional but it must be implemented by bridges that set the ”…”�”}”(hjHah²hh³Nh´Nubj3 )�”}”(hŒ**DRM_BRIDGE_OP_HDMI_AUDIO**”h]”hŒDRM_BRIDGE_OP_HDMI_AUDIO”…”�”}”(hjPah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjHaubhŒ flag in their ”…”�”}”(hjHah²hh³Nh´Nubh)�”}”(hŒ&:c:type:`drm_bridge->ops `”h]”jˆ )�”}”(hjdah]”hŒdrm_bridge->ops”…”�”}”(hjfah²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjbaubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_bridge”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M´hjHaubhŒ.”…”�”}”(hjHah²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j�ah´M´hj6aubhÎ)�”}”(hŒ6Returns: 0 on success, a negative error code otherwise”h]”hŒ6Returns: 0 on success, a negative error code otherwise”…”�”}”(hjŒah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M·hj6aubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjaubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j5ah´M¸hj€Kubj| )�”}”(hX ``hdmi_audio_shutdown`` Shut down the audio stream. This callback is optional but it must be implemented by bridges that set the **DRM_BRIDGE_OP_HDMI_AUDIO** flag in their :c:type:`drm_bridge->ops `. Returns: 0 on success, a negative error code otherwise ”h]”(j‚ )�”}”(hŒ``hdmi_audio_shutdown``”h]”jˆ )�”}”(hj­ah]”hŒhdmi_audio_shutdown”…”�”}”(hj¯ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj«aubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MÇhj§aubjž )�”}”(hhh]”(hÎ)�”}”(hŒShut down the audio stream.”h]”hŒShut down the audio stream.”…”�”}”(hjÆah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MÁhjÃaubhÎ)�”}”(hŒŸThis callback is optional but it must be implemented by bridges that set the **DRM_BRIDGE_OP_HDMI_AUDIO** flag in their :c:type:`drm_bridge->ops `.”h]”(hŒMThis callback is optional but it must be implemented by bridges that set the ”…”�”}”(hjÕah²hh³Nh´Nubj3 )�”}”(hŒ**DRM_BRIDGE_OP_HDMI_AUDIO**”h]”hŒDRM_BRIDGE_OP_HDMI_AUDIO”…”�”}”(hjÝah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÕaubhŒ flag in their ”…”�”}”(hjÕah²hh³Nh´Nubh)�”}”(hŒ&:c:type:`drm_bridge->ops `”h]”jˆ )�”}”(hjñah]”hŒdrm_bridge->ops”…”�”}”(hjóah²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjïaubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_bridge”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MÃhjÕaubhŒ.”…”�”}”(hjÕah²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jbh´MÃhjÃaubhÎ)�”}”(hŒ6Returns: 0 on success, a negative error code otherwise”h]”hŒ6Returns: 0 on success, a negative error code otherwise”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MÆhjÃaubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj§aubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÂah´MÇhj€Kubj| )�”}”(hX``hdmi_audio_mute_stream`` Mute/unmute HDMI audio stream. This callback is optional, it can be implemented by bridges that set the **DRM_BRIDGE_OP_HDMI_AUDIO** flag in their :c:type:`drm_bridge->ops `. Returns: 0 on success, a negative error code otherwise ”h]”(j‚ )�”}”(hŒ``hdmi_audio_mute_stream``”h]”jˆ )�”}”(hj:bh]”hŒhdmi_audio_mute_stream”…”�”}”(hjops `.”h]”(hŒIThis callback is optional, it can be implemented by bridges that set the ”…”�”}”(hjbbh²hh³Nh´Nubj3 )�”}”(hŒ**DRM_BRIDGE_OP_HDMI_AUDIO**”h]”hŒDRM_BRIDGE_OP_HDMI_AUDIO”…”�”}”(hjjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjbbubhŒ flag in their ”…”�”}”(hjbbh²hh³Nh´Nubh)�”}”(hŒ&:c:type:`drm_bridge->ops `”h]”jˆ )�”}”(hj~bh]”hŒdrm_bridge->ops”…”�”}”(hj€bh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj|bubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_bridge”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MÑhjbbubhŒ.”…”�”}”(hjbbh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j›bh´MÑhjPbubhÎ)�”}”(hŒ6Returns: 0 on success, a negative error code otherwise”h]”hŒ6Returns: 0 on success, a negative error code otherwise”…”�”}”(hj¦bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MÔhjPbubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj4bubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jObh´MÕhj€Kubj| )�”}”(hX``hdmi_cec_init`` Initialize CEC part of the bridge. This callback is optional, it can be implemented by bridges that set the **DRM_BRIDGE_OP_HDMI_CEC_ADAPTER** flag in their :c:type:`drm_bridge->ops `. Returns: 0 on success, a negative error code otherwise ”h]”(j‚ )�”}”(hŒ``hdmi_cec_init``”h]”jˆ )�”}”(hjÇbh]”hŒ hdmi_cec_init”…”�”}”(hjÉbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÅbubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MåhjÁbubjž )�”}”(hhh]”(hÎ)�”}”(hŒ"Initialize CEC part of the bridge.”h]”hŒ"Initialize CEC part of the bridge.”…”�”}”(hjàbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MÞhjÝbubhÎ)�”}”(hŒ¡This callback is optional, it can be implemented by bridges that set the **DRM_BRIDGE_OP_HDMI_CEC_ADAPTER** flag in their :c:type:`drm_bridge->ops `.”h]”(hŒIThis callback is optional, it can be implemented by bridges that set the ”…”�”}”(hjïbh²hh³Nh´Nubj3 )�”}”(hŒ"**DRM_BRIDGE_OP_HDMI_CEC_ADAPTER**”h]”hŒDRM_BRIDGE_OP_HDMI_CEC_ADAPTER”…”�”}”(hj÷bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjïbubhŒ flag in their ”…”�”}”(hjïbh²hh³Nh´Nubh)�”}”(hŒ&:c:type:`drm_bridge->ops `”h]”jˆ )�”}”(hj ch]”hŒdrm_bridge->ops”…”�”}”(hj ch²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj cubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_bridge”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MàhjïbubhŒ.”…”�”}”(hjïbh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j(ch´MàhjÝbubhÎ)�”}”(hŒ6Returns: 0 on success, a negative error code otherwise”h]”hŒ6Returns: 0 on success, a negative error code otherwise”…”�”}”(hj3ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MähjÝbubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÁbubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÜbh´Måhj€Kubj| )�”}”(hX$``hdmi_cec_enable`` Enable or disable the CEC adapter inside the bridge. This callback is optional, it can be implemented by bridges that set the **DRM_BRIDGE_OP_HDMI_CEC_ADAPTER** flag in their :c:type:`drm_bridge->ops `. Returns: 0 on success, a negative error code otherwise ”h]”(j‚ )�”}”(hŒ``hdmi_cec_enable``”h]”jˆ )�”}”(hjTch]”hŒhdmi_cec_enable”…”�”}”(hjVch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjRcubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MôhjNcubjž )�”}”(hhh]”(hÎ)�”}”(hŒ4Enable or disable the CEC adapter inside the bridge.”h]”hŒ4Enable or disable the CEC adapter inside the bridge.”…”�”}”(hjmch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MíhjjcubhÎ)�”}”(hŒ¡This callback is optional, it can be implemented by bridges that set the **DRM_BRIDGE_OP_HDMI_CEC_ADAPTER** flag in their :c:type:`drm_bridge->ops `.”h]”(hŒIThis callback is optional, it can be implemented by bridges that set the ”…”�”}”(hj|ch²hh³Nh´Nubj3 )�”}”(hŒ"**DRM_BRIDGE_OP_HDMI_CEC_ADAPTER**”h]”hŒDRM_BRIDGE_OP_HDMI_CEC_ADAPTER”…”�”}”(hj„ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj|cubhŒ flag in their ”…”�”}”(hj|ch²hh³Nh´Nubh)�”}”(hŒ&:c:type:`drm_bridge->ops `”h]”jˆ )�”}”(hj˜ch]”hŒdrm_bridge->ops”…”�”}”(hjšch²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj–cubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_bridge”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mïhj|cubhŒ.”…”�”}”(hj|ch²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jµch´MïhjjcubhÎ)�”}”(hŒ6Returns: 0 on success, a negative error code otherwise”h]”hŒ6Returns: 0 on success, a negative error code otherwise”…”�”}”(hjÀch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Móhjjcubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjNcubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jich´Môhj€Kubj| )�”}”(hX/``hdmi_cec_log_addr`` Set the logical address of the CEC adapter inside the bridge. This callback is optional, it can be implemented by bridges that set the **DRM_BRIDGE_OP_HDMI_CEC_ADAPTER** flag in their :c:type:`drm_bridge->ops `. Returns: 0 on success, a negative error code otherwise ”h]”(j‚ )�”}”(hŒ``hdmi_cec_log_addr``”h]”jˆ )�”}”(hjách]”hŒhdmi_cec_log_addr”…”�”}”(hjãch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjßcubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MhjÛcubjž )�”}”(hhh]”(hÎ)�”}”(hŒ=Set the logical address of the CEC adapter inside the bridge.”h]”hŒ=Set the logical address of the CEC adapter inside the bridge.”…”�”}”(hjúch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mûhj÷cubhÎ)�”}”(hŒ¡This callback is optional, it can be implemented by bridges that set the **DRM_BRIDGE_OP_HDMI_CEC_ADAPTER** flag in their :c:type:`drm_bridge->ops `.”h]”(hŒIThis callback is optional, it can be implemented by bridges that set the ”…”�”}”(hj dh²hh³Nh´Nubj3 )�”}”(hŒ"**DRM_BRIDGE_OP_HDMI_CEC_ADAPTER**”h]”hŒDRM_BRIDGE_OP_HDMI_CEC_ADAPTER”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj dubhŒ flag in their ”…”�”}”(hj dh²hh³Nh´Nubh)�”}”(hŒ&:c:type:`drm_bridge->ops `”h]”jˆ )�”}”(hj%dh]”hŒdrm_bridge->ops”…”�”}”(hj'dh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj#dubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_bridge”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mýhj dubhŒ.”…”�”}”(hj dh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jBdh´Mýhj÷cubhÎ)�”}”(hŒ6Returns: 0 on success, a negative error code otherwise”h]”hŒ6Returns: 0 on success, a negative error code otherwise”…”�”}”(hjMdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mhj÷cubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÛcubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jöch´Mhj€Kubj| )�”}”(hX/``hdmi_cec_transmit`` Transmit the message using the CEC adapter inside the bridge. This callback is optional, it can be implemented by bridges that set the **DRM_BRIDGE_OP_HDMI_CEC_ADAPTER** flag in their :c:type:`drm_bridge->ops `. Returns: 0 on success, a negative error code otherwise ”h]”(j‚ )�”}”(hŒ``hdmi_cec_transmit``”h]”jˆ )�”}”(hjndh]”hŒhdmi_cec_transmit”…”�”}”(hjpdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjldubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mhjhdubjž )�”}”(hhh]”(hÎ)�”}”(hŒ=Transmit the message using the CEC adapter inside the bridge.”h]”hŒ=Transmit the message using the CEC adapter inside the bridge.”…”�”}”(hj‡dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M hj„dubhÎ)�”}”(hŒ¡This callback is optional, it can be implemented by bridges that set the **DRM_BRIDGE_OP_HDMI_CEC_ADAPTER** flag in their :c:type:`drm_bridge->ops `.”h]”(hŒIThis callback is optional, it can be implemented by bridges that set the ”…”�”}”(hj–dh²hh³Nh´Nubj3 )�”}”(hŒ"**DRM_BRIDGE_OP_HDMI_CEC_ADAPTER**”h]”hŒDRM_BRIDGE_OP_HDMI_CEC_ADAPTER”…”�”}”(hjždh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj–dubhŒ flag in their ”…”�”}”(hj–dh²hh³Nh´Nubh)�”}”(hŒ&:c:type:`drm_bridge->ops `”h]”jˆ )�”}”(hj²dh]”hŒdrm_bridge->ops”…”�”}”(hj´dh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj°dubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_bridge”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M hj–dubhŒ.”…”�”}”(hj–dh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÏdh´M hj„dubhÎ)�”}”(hŒ6Returns: 0 on success, a negative error code otherwise”h]”hŒ6Returns: 0 on success, a negative error code otherwise”…”�”}”(hjÚdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mhj„dubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjhdubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jƒdh´Mhj€Kubj| )�”}”(hX"``dp_audio_startup`` Called when ASoC starts a DisplayPort audio stream setup. This callback is optional, it can be implemented by bridges that set the **DRM_BRIDGE_OP_DP_AUDIO** flag in their :c:type:`drm_bridge->ops `. Returns: 0 on success, a negative error code otherwise ”h]”(j‚ )�”}”(hŒ``dp_audio_startup``”h]”jˆ )�”}”(hjûdh]”hŒdp_audio_startup”…”�”}”(hjýdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjùdubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mhjõdubjž )�”}”(hhh]”(hÎ)�”}”(hŒ9Called when ASoC starts a DisplayPort audio stream setup.”h]”hŒ9Called when ASoC starts a DisplayPort audio stream setup.”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MhjeubhÎ)�”}”(hŒ™This callback is optional, it can be implemented by bridges that set the **DRM_BRIDGE_OP_DP_AUDIO** flag in their :c:type:`drm_bridge->ops `.”h]”(hŒIThis callback is optional, it can be implemented by bridges that set the ”…”�”}”(hj#eh²hh³Nh´Nubj3 )�”}”(hŒ**DRM_BRIDGE_OP_DP_AUDIO**”h]”hŒDRM_BRIDGE_OP_DP_AUDIO”…”�”}”(hj+eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj#eubhŒ flag in their ”…”�”}”(hj#eh²hh³Nh´Nubh)�”}”(hŒ&:c:type:`drm_bridge->ops `”h]”jˆ )�”}”(hj?eh]”hŒdrm_bridge->ops”…”�”}”(hjAeh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj=eubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_bridge”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mhj#eubhŒ.”…”�”}”(hj#eh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j\eh´MhjeubhÎ)�”}”(hŒ6Returns: 0 on success, a negative error code otherwise”h]”hŒ6Returns: 0 on success, a negative error code otherwise”…”�”}”(hjgeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mhjeubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjõdubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jeh´Mhj€Kubj| )�”}”(hX>``dp_audio_prepare`` Configures DisplayPort audio stream. Can be called multiple times for each setup. This callback is optional but it must be implemented by bridges that set the **DRM_BRIDGE_OP_DP_AUDIO** flag in their :c:type:`drm_bridge->ops `. Returns: 0 on success, a negative error code otherwise ”h]”(j‚ )�”}”(hŒ``dp_audio_prepare``”h]”jˆ )�”}”(hjˆeh]”hŒdp_audio_prepare”…”�”}”(hjŠeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj†eubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M-hj‚eubjž )�”}”(hhh]”(hÎ)�”}”(hŒQConfigures DisplayPort audio stream. Can be called multiple times for each setup.”h]”hŒQConfigures DisplayPort audio stream. Can be called multiple times for each setup.”…”�”}”(hj¡eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M&hjžeubhÎ)�”}”(hŒ�This callback is optional but it must be implemented by bridges that set the **DRM_BRIDGE_OP_DP_AUDIO** flag in their :c:type:`drm_bridge->ops `.”h]”(hŒMThis callback is optional but it must be implemented by bridges that set the ”…”�”}”(hj°eh²hh³Nh´Nubj3 )�”}”(hŒ**DRM_BRIDGE_OP_DP_AUDIO**”h]”hŒDRM_BRIDGE_OP_DP_AUDIO”…”�”}”(hj¸eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj°eubhŒ flag in their ”…”�”}”(hj°eh²hh³Nh´Nubh)�”}”(hŒ&:c:type:`drm_bridge->ops `”h]”jˆ )�”}”(hjÌeh]”hŒdrm_bridge->ops”…”�”}”(hjÎeh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÊeubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_bridge”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M)hj°eubhŒ.”…”�”}”(hj°eh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jéeh´M)hjžeubhÎ)�”}”(hŒ6Returns: 0 on success, a negative error code otherwise”h]”hŒ6Returns: 0 on success, a negative error code otherwise”…”�”}”(hjôeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M,hjžeubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj‚eubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j�eh´M-hj€Kubj| )�”}”(hX``dp_audio_shutdown`` Shut down the DisplayPort audio stream. This callback is optional but it must be implemented by bridges that set the **DRM_BRIDGE_OP_DP_AUDIO** flag in their :c:type:`drm_bridge->ops `. Returns: 0 on success, a negative error code otherwise ”h]”(j‚ )�”}”(hŒ``dp_audio_shutdown``”h]”jˆ )�”}”(hjfh]”hŒdp_audio_shutdown”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjfubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M<hjfubjž )�”}”(hhh]”(hÎ)�”}”(hŒ'Shut down the DisplayPort audio stream.”h]”hŒ'Shut down the DisplayPort audio stream.”…”�”}”(hj.fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M6hj+fubhÎ)�”}”(hŒ�This callback is optional but it must be implemented by bridges that set the **DRM_BRIDGE_OP_DP_AUDIO** flag in their :c:type:`drm_bridge->ops `.”h]”(hŒMThis callback is optional but it must be implemented by bridges that set the ”…”�”}”(hj=fh²hh³Nh´Nubj3 )�”}”(hŒ**DRM_BRIDGE_OP_DP_AUDIO**”h]”hŒDRM_BRIDGE_OP_DP_AUDIO”…”�”}”(hjEfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj=fubhŒ flag in their ”…”�”}”(hj=fh²hh³Nh´Nubh)�”}”(hŒ&:c:type:`drm_bridge->ops `”h]”jˆ )�”}”(hjYfh]”hŒdrm_bridge->ops”…”�”}”(hj[fh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjWfubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_bridge”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M8hj=fubhŒ.”…”�”}”(hj=fh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jvfh´M8hj+fubhÎ)�”}”(hŒ6Returns: 0 on success, a negative error code otherwise”h]”hŒ6Returns: 0 on success, a negative error code otherwise”…”�”}”(hj�fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M;hj+fubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjfubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j*fh´M<hj€Kubj| )�”}”(hX``dp_audio_mute_stream`` Mute/unmute DisplayPort audio stream. This callback is optional, it can be implemented by bridges that set the **DRM_BRIDGE_OP_DP_AUDIO** flag in their :c:type:`drm_bridge->ops `. Returns: 0 on success, a negative error code otherwise ”h]”(j‚ )�”}”(hŒ``dp_audio_mute_stream``”h]”jˆ )�”}”(hj¢fh]”hŒdp_audio_mute_stream”…”�”}”(hj¤fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj fubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MJhjœfubjž )�”}”(hhh]”(hÎ)�”}”(hŒ%Mute/unmute DisplayPort audio stream.”h]”hŒ%Mute/unmute DisplayPort audio stream.”…”�”}”(hj»fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MDhj¸fubhÎ)�”}”(hŒ™This callback is optional, it can be implemented by bridges that set the **DRM_BRIDGE_OP_DP_AUDIO** flag in their :c:type:`drm_bridge->ops `.”h]”(hŒIThis callback is optional, it can be implemented by bridges that set the ”…”�”}”(hjÊfh²hh³Nh´Nubj3 )�”}”(hŒ**DRM_BRIDGE_OP_DP_AUDIO**”h]”hŒDRM_BRIDGE_OP_DP_AUDIO”…”�”}”(hjÒfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÊfubhŒ flag in their ”…”�”}”(hjÊfh²hh³Nh´Nubh)�”}”(hŒ&:c:type:`drm_bridge->ops `”h]”jˆ )�”}”(hjæfh]”hŒdrm_bridge->ops”…”�”}”(hjèfh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjäfubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_bridge”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MFhjÊfubhŒ.”…”�”}”(hjÊfh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jgh´MFhj¸fubhÎ)�”}”(hŒ6Returns: 0 on success, a negative error code otherwise”h]”hŒ6Returns: 0 on success, a negative error code otherwise”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MIhj¸fubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjœfubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j·fh´MJhj€Kubj| )�”}”(hŒH``debugfs_init`` Allows bridges to create bridge-specific debugfs files.”h]”(j‚ )�”}”(hŒ``debugfs_init``”h]”jˆ )�”}”(hj/gh]”hŒ debugfs_init”…”�”}”(hj1gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj-gubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MRhj)gubjž )�”}”(hhh]”hÎ)�”}”(hŒ7Allows bridges to create bridge-specific debugfs files.”h]”hŒ7Allows bridges to create bridge-specific debugfs files.”…”�”}”(hjHgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MShjEgubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj)gubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jDgh´MRhj€Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj8Kubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj­Ih²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_bridge_timings (C struct)”Œc.drm_bridge_timings”hNt”auh1j† hj­Ih²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒdrm_bridge_timings”h]”j¤ )�”}”(hŒstruct drm_bridge_timings”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj‰gh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj…gh²hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MYubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—gh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj…gh²hh³j–gh´MYubjÍ )�”}”(hŒdrm_bridge_timings”h]”jÓ )�”}”(hjƒgh]”hŒdrm_bridge_timings”…”�”}”(hj©gh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¥gubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj…gh²hh³j–gh´MYubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj�gh²hh³j–gh´MYubah}”(h]”j|gah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j–gh´MYhj~gh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ!timing information for the bridge”h]”hŒ!timing information for the bridge”…”�”}”(hjËgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MZhjÈgh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj~gh²hh³j–gh´MYubeh}”(h]”h ]”(j Œstruct”eh"]”h$]”h&]”j" j j# jãgj$ jãgj% ‰j& ‰j' ‰uh1j˜ h²hhj­Ih³Nh´Nubj) )�”}”(hX2**Definition**:: struct drm_bridge_timings { u32 input_bus_flags; u32 setup_time_ps; u32 hold_time_ps; bool dual_link; }; **Members** ``input_bus_flags`` Tells what additional settings for the pixel data on the bus this bridge requires (like pixel signal polarity). See also :c:type:`drm_display_info->bus_flags `. ``setup_time_ps`` Defines the time in picoseconds the input data lines must be stable before the clock edge. ``hold_time_ps`` Defines the time in picoseconds taken for the bridge to sample the input signal after the clock edge. ``dual_link`` True if the bus operates in dual-link mode. The exact meaning is dependent on the bus type. For LVDS buses, this indicates that even- and odd-numbered pixels are received on separate links.”h]”(hÎ)�”}”(hŒ**Definition**::”h]”(j3 )�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjïgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjëgubhŒ:”…”�”}”(hjëgh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M^hjçgubjN )�”}”(hŒxstruct drm_bridge_timings { u32 input_bus_flags; u32 setup_time_ps; u32 hold_time_ps; bool dual_link; };”h]”hŒxstruct drm_bridge_timings { u32 input_bus_flags; u32 setup_time_ps; u32 hold_time_ps; bool dual_link; };”…”�”}”hjhsbah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jM h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M`hjçgubhÎ)�”}”(hŒ **Members**”h]”j3 )�”}”(hjhh]”hŒMembers”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjhubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mghjçgubjw )�”}”(hhh]”(j| )�”}”(hŒÇ``input_bus_flags`` Tells what additional settings for the pixel data on the bus this bridge requires (like pixel signal polarity). See also :c:type:`drm_display_info->bus_flags `. ”h]”(j‚ )�”}”(hŒ``input_bus_flags``”h]”jˆ )�”}”(hj8hh]”hŒinput_bus_flags”…”�”}”(hj:hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj6hubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mahj2hubjž )�”}”(hhh]”hÎ)�”}”(hŒ²Tells what additional settings for the pixel data on the bus this bridge requires (like pixel signal polarity). See also :c:type:`drm_display_info->bus_flags `.”h]”(hŒyTells what additional settings for the pixel data on the bus this bridge requires (like pixel signal polarity). See also ”…”�”}”(hjQhh²hh³Nh´Nubh)�”}”(hŒ8:c:type:`drm_display_info->bus_flags `”h]”jˆ )�”}”(hj[hh]”hŒdrm_display_info->bus_flags”…”�”}”(hj]hh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjYhubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_display_info”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M_hjQhubhŒ.”…”�”}”(hjQhh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jxhh´M_hjNhubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj2hubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jMhh´Mahj/hubj| )�”}”(hŒm``setup_time_ps`` Defines the time in picoseconds the input data lines must be stable before the clock edge. ”h]”(j‚ )�”}”(hŒ``setup_time_ps``”h]”jˆ )�”}”(hj•hh]”hŒ setup_time_ps”…”�”}”(hj—hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj“hubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mhhj�hubjž )�”}”(hhh]”hÎ)�”}”(hŒZDefines the time in picoseconds the input data lines must be stable before the clock edge.”h]”hŒZDefines the time in picoseconds the input data lines must be stable before the clock edge.”…”�”}”(hj®hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mghj«hubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj�hubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jªhh´Mhhj/hubj| )�”}”(hŒw``hold_time_ps`` Defines the time in picoseconds taken for the bridge to sample the input signal after the clock edge. ”h]”(j‚ )�”}”(hŒ``hold_time_ps``”h]”jˆ )�”}”(hjÏhh]”hŒ hold_time_ps”…”�”}”(hjÑhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÍhubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MohjÉhubjž )�”}”(hhh]”hÎ)�”}”(hŒeDefines the time in picoseconds taken for the bridge to sample the input signal after the clock edge.”h]”hŒeDefines the time in picoseconds taken for the bridge to sample the input signal after the clock edge.”…”�”}”(hjèhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mnhjåhubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÉhubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jähh´Mohj/hubj| )�”}”(hŒË``dual_link`` True if the bus operates in dual-link mode. The exact meaning is dependent on the bus type. For LVDS buses, this indicates that even- and odd-numbered pixels are received on separate links.”h]”(j‚ )�”}”(hŒ ``dual_link``”h]”jˆ )�”}”(hj ih]”hŒ dual_link”…”�”}”(hj ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjiubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mvhjiubjž )�”}”(hhh]”hÎ)�”}”(hŒ½True if the bus operates in dual-link mode. The exact meaning is dependent on the bus type. For LVDS buses, this indicates that even- and odd-numbered pixels are received on separate links.”h]”hŒ½True if the bus operates in dual-link mode. The exact meaning is dependent on the bus type. For LVDS buses, this indicates that even- and odd-numbered pixels are received on separate links.”…”�”}”(hj"ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Muhjiubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjiubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jih´Mvhj/hubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjçgubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj­Ih²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_bridge_ops (C enum)”Œc.drm_bridge_ops”hNt”auh1j† hj­Ih²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒdrm_bridge_ops”h]”j¤ )�”}”(hŒenum drm_bridge_ops”h]”(jª )�”}”(hjÂ7h]”hŒenum”…”�”}”(hjcih²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj_ih²hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M}ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjqih²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj_ih²hh³jpih´M}ubjÍ )�”}”(hŒdrm_bridge_ops”h]”jÓ )�”}”(hj]ih]”hŒdrm_bridge_ops”…”�”}”(hjƒih²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjiubah}”(h]”h ]”(jå jæ eh"]”h$•]”h&]”jê jë uh1jÌ hj_ih²hh³jpih´M}ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj[ih²hh³jpih´M}ubah}”(h]”jViah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jpih´M}hjXih²hubj )�”}”(hhh]”hÎ)�”}”(hŒ-Bitmask of operations supported by the bridge”h]”hŒ-Bitmask of operations supported by the bridge”…”�”}”(hj¥ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M~hj¢ih²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjXih²hh³jpih´M}ubeh}”(h]”h ]”(j Œenum”eh"]”h$]”h&]”j" j j# j½ij$ j½ij% ‰j& ‰j' ‰uh1j˜ h²hhj­Ih³Nh´Nubj) )�”}”(hX›**Constants** ``DRM_BRIDGE_OP_DETECT`` The bridge can detect displays connected to its output. Bridges that set this flag shall implement the :c:type:`drm_bridge_funcs->detect ` callback. ``DRM_BRIDGE_OP_EDID`` The bridge can retrieve the EDID of the display connected to its output. Bridges that set this flag shall implement the :c:type:`drm_bridge_funcs->edid_read ` callback. ``DRM_BRIDGE_OP_HPD`` The bridge can detect hot-plug and hot-unplug without requiring polling. Bridges that set this flag shall implement the :c:type:`drm_bridge_funcs->hpd_enable ` and :c:type:`drm_bridge_funcs->hpd_disable ` callbacks if they support enabling and disabling hot-plug detection dynamically. ``DRM_BRIDGE_OP_MODES`` The bridge can retrieve the modes supported by the display at its output. This does not include reading EDID which is separately covered by **DRM_BRIDGE_OP_EDID**. Bridges that set this flag shall implement the :c:type:`drm_bridge_funcs->get_modes ` callback. ``DRM_BRIDGE_OP_HDMI`` The bridge provides HDMI connector operations, including infoframes support. Bridges that set this flag must provide HDMI-related information and implement the :c:type:`drm_bridge_funcs->clear_avi_infoframe `, :c:type:`drm_bridge_funcs->write_avi_infoframe `, :c:type:`drm_bridge_funcs->clear_hdmi_infoframe ` and :c:type:`drm_bridge_funcs->write_hdmi_infoframe ` callbacks. Note: currently there can be at most one bridge in a chain that sets this bit. This is to simplify corresponding glue code in connector drivers. ``DRM_BRIDGE_OP_HDMI_AUDIO`` The bridge provides HDMI audio operations. Bridges that set this flag must implement the :c:type:`drm_bridge_funcs->hdmi_audio_prepare ` and :c:type:`drm_bridge_funcs->hdmi_audio_shutdown ` callbacks. If the bridge implements **DRM_BRIDGE_OP_HDMI**, it also must implement :c:type:`drm_bridge_funcs->hdmi_write_audio_infoframe ` and :c:type:`drm_bridge_funcs->hdmi_cleaer_audio_infoframe ` callbacks. Note: currently there can be at most one bridge in a chain that sets this bit. This is to simplify corresponding glue code in connector drivers. Also it is not possible to have a bridge in the chain that sets **DRM_BRIDGE_OP_DP_AUDIO** if there is a bridge that sets this flag. ``DRM_BRIDGE_OP_DP_AUDIO`` The bridge provides DisplayPort audio operations. Bridges that set this flag must implement the :c:type:`drm_bridge_funcs->dp_audio_prepare ` and :c:type:`drm_bridge_funcs->dp_audio_shutdown ` callbacks. Note: currently there can be at most one bridge in a chain that sets this bit. This is to simplify corresponding glue code in connector drivers. Also it is not possible to have a bridge in the chain that sets **DRM_BRIDGE_OP_HDMI_AUDIO** if there is a bridge that sets this flag. ``DRM_BRIDGE_OP_HDMI_CEC_NOTIFIER`` The bridge requires CEC notifier to be present. ``DRM_BRIDGE_OP_HDMI_CEC_ADAPTER`` The bridge requires CEC adapter to be present. ``DRM_BRIDGE_OP_HDMI_HDR_DRM_INFOFRAME`` The bridge supports :c:type:`drm_bridge_funcs->hdmi_write_hdr_drm_infoframe ` and :c:type:`drm_bridge_funcs->hdmi_clear_hdr_drm_infoframe ` callbacks. ``DRM_BRIDGE_OP_HDMI_SPD_INFOFRAME`` The bridge supports :c:type:`drm_bridge_funcs->hdmi_write_spd_infoframe ` and :c:type:`drm_bridge_funcs->hdmi_clear_spd_infoframe ` callbacks.”h]”(hÎ)�”}”(hŒ **Constants**”h]”j3 )�”}”(hjÇih]”hŒ Constants”…”�”}”(hjÉih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÅiubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M‚hjÁiubjw )�”}”(hhh]”(j| )�”}”(hŒÀ``DRM_BRIDGE_OP_DETECT`` The bridge can detect displays connected to its output. Bridges that set this flag shall implement the :c:type:`drm_bridge_funcs->detect ` callback. ”h]”(j‚ )�”}”(hŒ``DRM_BRIDGE_OP_DETECT``”h]”jˆ )�”}”(hjæih]”hŒDRM_BRIDGE_OP_DETECT”…”�”}”(hjèih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjäiubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M‡hjàiubjž )�”}”(hhh]”hÎ)�”}”(hŒ¦The bridge can detect displays connected to its output. Bridges that set this flag shall implement the :c:type:`drm_bridge_funcs->detect ` callback.”h]”(hŒgThe bridge can detect displays connected to its output. Bridges that set this flag shall implement the ”…”�”}”(hjÿih²hh³Nh´Nubh)�”}”(hŒ5:c:type:`drm_bridge_funcs->detect `”h]”jˆ )�”}”(hj jh]”hŒdrm_bridge_funcs->detect”…”�”}”(hj jh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M…hjÿiubhŒ callback.”…”�”}”(hjÿih²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j&jh´M…hjüiubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjàiubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jûih´M‡hjÝiubj| )�”}”(hŒÒ``DRM_BRIDGE_OP_EDID`` The bridge can retrieve the EDID of the display connected to its output. Bridges that set this flag shall implement the :c:type:`drm_bridge_funcs->edid_read ` callback. ”h]”(j‚ )�”}”(hŒ``DRM_BRIDGE_OP_EDID``”h]”jˆ )�”}”(hjCjh]”hŒDRM_BRIDGE_OP_EDID”…”�”}”(hjEjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjAjubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MŒhj=jubjž )�”}”(hhh]”hÎ)�”}”(hŒºThe bridge can retrieve the EDID of the display connected to its output. Bridges that set this flag shall implement the :c:type:`drm_bridge_funcs->edid_read ` callback.”h]”(hŒxThe bridge can retrieve the EDID of the display connected to its output. Bridges that set this flag shall implement the ”…”�”}”(hj\jh²hh³Nh´Nubh)�”}”(hŒ8:c:type:`drm_bridge_funcs->edid_read `”h]”jˆ )�”}”(hjfjh]”hŒdrm_bridge_funcs->edid_read”…”�”}”(hjhjh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjdjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MŠhj\jubhŒ callback.”…”�”}”(hj\jh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jƒjh´MŠhjYjubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj=jubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jXjh´MŒhjÝiubj| )�”}”(hXX``DRM_BRIDGE_OP_HPD`` The bridge can detect hot-plug and hot-unplug without requiring polling. Bridges that set this flag shall implement the :c:type:`drm_bridge_funcs->hpd_enable ` and :c:type:`drm_bridge_funcs->hpd_disable ` callbacks if they support enabling and disabling hot-plug detection dynamically. ”h]”(j‚ )�”}”(hŒ``DRM_BRIDGE_OP_HPD``”h]”jˆ )�”}”(hj jh]”hŒDRM_BRIDGE_OP_HPD”…”�”}”(hj¢jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjžjubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M“hjšjubjž )�”}”(hhh]”hÎ)�”}”(hXAThe bridge can detect hot-plug and hot-unplug without requiring polling. Bridges that set this flag shall implement the :c:type:`drm_bridge_funcs->hpd_enable ` and :c:type:`drm_bridge_funcs->hpd_disable ` callbacks if they support enabling and disabling hot-plug detection dynamically.”h]”(hŒxThe bridge can detect hot-plug and hot-unplug without requiring polling. Bridges that set this flag shall implement the ”…”�”}”(hj¹jh²hh³Nh´Nubh)�”}”(hŒ9:c:type:`drm_bridge_funcs->hpd_enable `”h]”jˆ )�”}”(hjÃjh]”hŒdrm_bridge_funcs->hpd_enable”…”�”}”(hjÅjh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÁjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M�hj¹jubhŒ and ”…”�”}”(hj¹jh²hh³Nh´Nubh)�”}”(hŒ::c:type:`drm_bridge_funcs->hpd_disable `”h]”jˆ )�”}”(hjçjh]”hŒdrm_bridge_funcs->hpd_disable”…”�”}”(hjéjh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjåjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³jàjh´M�hj¹jubhŒQ callbacks if they support enabling and disabling hot-plug detection dynamically.”…”�”}”(hj¹jh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jàjh´M�hj¶jubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjšjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jµjh´M“hjÝiubj| )�”}”(hX.``DRM_BRIDGE_OP_MODES`` The bridge can retrieve the modes supported by the display at its output. This does not include reading EDID which is separately covered by **DRM_BRIDGE_OP_EDID**. Bridges that set this flag shall implement the :c:type:`drm_bridge_funcs->get_modes ` callback. ”h]”(j‚ )�”}”(hŒ``DRM_BRIDGE_OP_MODES``”h]”jˆ )�”}”(hj kh]”hŒDRM_BRIDGE_OP_MODES”…”�”}”(hj"kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjkubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M™hjkubjž )�”}”(hhh]”hÎ)�”}”(hXThe bridge can retrieve the modes supported by the display at its output. This does not include reading EDID which is separately covered by **DRM_BRIDGE_OP_EDID**. Bridges that set this flag shall implement the :c:type:`drm_bridge_funcs->get_modes ` callback.”h]”(hŒŒThe bridge can retrieve the modes supported by the display at its output. This does not include reading EDID which is separately covered by ”…”�”}”(hj9kh²hh³Nh´Nubj3 )�”}”(hŒ**DRM_BRIDGE_OP_EDID**”h]”hŒDRM_BRIDGE_OP_EDID”…”�”}”(hjAkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj9kubhŒ1. Bridges that set this flag shall implement the ”…”�”}”(hj9kh²hh³Nh´Nubh)�”}”(hŒ8:c:type:`drm_bridge_funcs->get_modes `”h]”jˆ )�”}”(hjUkh]”hŒdrm_bridge_funcs->get_modes”…”�”}”(hjWkh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjSkubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M–hj9kubhŒ callback.”…”�”}”(hj9kh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jrkh´M–hj6kubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjkubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j5kh´M™hjÝiubj| )�”}”(hXh``DRM_BRIDGE_OP_HDMI`` The bridge provides HDMI connector operations, including infoframes support. Bridges that set this flag must provide HDMI-related information and implement the :c:type:`drm_bridge_funcs->clear_avi_infoframe `, :c:type:`drm_bridge_funcs->write_avi_infoframe `, :c:type:`drm_bridge_funcs->clear_hdmi_infoframe ` and :c:type:`drm_bridge_funcs->write_hdmi_infoframe ` callbacks. Note: currently there can be at most one bridge in a chain that sets this bit. This is to simplify corresponding glue code in connector drivers. ”h]”(j‚ )�”}”(hŒ``DRM_BRIDGE_OP_HDMI``”h]”jˆ )�”}”(hj�kh]”hŒDRM_BRIDGE_OP_HDMI”…”�”}”(hj‘kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj�kubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M¦hj‰kubjž )�”}”(hhh]”(hÎ)�”}”(hX¾The bridge provides HDMI connector operations, including infoframes support. Bridges that set this flag must provide HDMI-related information and implement the :c:type:`drm_bridge_funcs->clear_avi_infoframe `, :c:type:`drm_bridge_funcs->write_avi_infoframe `, :c:type:`drm_bridge_funcs->clear_hdmi_infoframe ` and :c:type:`drm_bridge_funcs->write_hdmi_infoframe ` callbacks.”h]”(hŒ The bridge provides HDMI connector operations, including infoframes support. Bridges that set this flag must provide HDMI-related information and implement the ”…”�”}”(hj¨kh²hh³Nh´Nubh)�”}”(hŒB:c:type:`drm_bridge_funcs->clear_avi_infoframe `”h]”jˆ )�”}”(hj²kh]”hŒ%drm_bridge_funcs->clear_avi_infoframe”…”�”}”(hj´kh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj°kubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mœhj¨kubhŒ, ”…”�”}”(hj¨kh²hh³Nh´Nubh)�”}”(hŒB:c:type:`drm_bridge_funcs->write_avi_infoframe `”h]”jˆ )�”}”(hjÖkh]”hŒ%drm_bridge_funcs->write_avi_infoframe”…”�”}”(hjØkh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÔkubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³jÏkh´Mœhj¨kubhŒ, ”…”�”}”hj¨ksbh)�”}”(hŒC:c:type:`drm_bridge_funcs->clear_hdmi_infoframe `”h]”jˆ )�”}”(hjùkh]”hŒ&drm_bridge_funcs->clear_hdmi_infoframe”…”�”}”(hjûkh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj÷kubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³jÏkh´Mœhj¨kubhŒ and ”…”�”}”(hj¨kh²hh³Nh´Nubh)�”}”(hŒC:c:type:`drm_bridge_funcs->write_hdmi_infoframe `”h]”jˆ )�”}”(hjlh]”hŒ&drm_bridge_funcs->write_hdmi_infoframe”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjlubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³jÏkh´Mœhj¨kubhŒ callbacks.”…”�”}”(hj¨kh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÏkh´Mœhj¥kubhÎ)�”}”(hŒ�Note: currently there can be at most one bridge in a chain that sets this bit. This is to simplify corresponding glue code in connector drivers.”h]”hŒ�Note: currently there can be at most one bridge in a chain that sets this bit. This is to simplify corresponding glue code in connector drivers.”…”�”}”(hjClh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M¤hj¥kubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj‰kubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¤kh´M¦hjÝiubj| )�”}”(hX ``DRM_BRIDGE_OP_HDMI_AUDIO`` The bridge provides HDMI audio operations. Bridges that set this flag must implement the :c:type:`drm_bridge_funcs->hdmi_audio_prepare ` and :c:type:`drm_bridge_funcs->hdmi_audio_shutdown ` callbacks. If the bridge implements **DRM_BRIDGE_OP_HDMI**, it also must implement :c:type:`drm_bridge_funcs->hdmi_write_audio_infoframe ` and :c:type:`drm_bridge_funcs->hdmi_cleaer_audio_infoframe ` callbacks. Note: currently there can be at most one bridge in a chain that sets this bit. This is to simplify corresponding glue code in connector drivers. Also it is not possible to have a bridge in the chain that sets **DRM_BRIDGE_OP_DP_AUDIO** if there is a bridge that sets this flag. ”h]”(j‚ )�”}”(hŒ``DRM_BRIDGE_OP_HDMI_AUDIO``”h]”jˆ )�”}”(hjdlh]”hŒDRM_BRIDGE_OP_HDMI_AUDIO”…”�”}”(hjflh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjblubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mµhj^lubjž )�”}”(hhh]”(hÎ)�”}”(hXØThe bridge provides HDMI audio operations. Bridges that set this flag must implement the :c:type:`drm_bridge_funcs->hdmi_audio_prepare ` and :c:type:`drm_bridge_funcs->hdmi_audio_shutdown ` callbacks. If the bridge implements **DRM_BRIDGE_OP_HDMI**, it also must implement :c:type:`drm_bridge_funcs->hdmi_write_audio_infoframe ` and :c:type:`drm_bridge_funcs->hdmi_cleaer_audio_infoframe ` callbacks.”h]”(hŒYThe bridge provides HDMI audio operations. Bridges that set this flag must implement the ”…”�”}”(hj}lh²hh³Nh´Nubh)�”}”(hŒA:c:type:`drm_bridge_funcs->hdmi_audio_prepare `”h]”jˆ )�”}”(hj‡lh]”hŒ$drm_bridge_funcs->hdmi_audio_prepare”…”�”}”(hj‰lh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj…lubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M©hj}lubhŒ and ”…”�”}”(hj}lh²hh³Nh´Nubh)�”}”(hŒB:c:type:`drm_bridge_funcs->hdmi_audio_shutdown `”h]”jˆ )�”}”(hj«lh]”hŒ%drm_bridge_funcs->hdmi_audio_shutdown”…”�”}”(hj­lh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj©lubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³j¤lh´M©hj}lubhŒ% callbacks. If the bridge implements ”…”�”}”(hj}lh²hh³Nh´Nubj3 )�”}”(hŒ**DRM_BRIDGE_OP_HDMI**”h]”hŒDRM_BRIDGE_OP_HDMI”…”�”}”(hjÌlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj}lubhŒ, it also must implement ”…”�”}”(hj}lh²hh³Nh´Nubh)�”}”(hŒI:c:type:`drm_bridge_funcs->hdmi_write_audio_infoframe `”h]”jˆ )�”}”(hjàlh]”hŒ,drm_bridge_funcs->hdmi_write_audio_infoframe”…”�”}”(hjâlh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÞlubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³j¤lh´M©hj}lubhŒ and ”…”�”}”hj}lsbh)�”}”(hŒJ:c:type:`drm_bridge_funcs->hdmi_cleaer_audio_infoframe `”h]”jˆ )�”}”(hjmh]”hŒ-drm_bridge_funcs->hdmi_cleaer_audio_infoframe”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjmubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³j¤lh´M©hj}lubhŒ callbacks.”…”�”}”(hj}lh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¤lh´M©hjzlubhÎ)�”}”(hXNote: currently there can be at most one bridge in a chain that sets this bit. This is to simplify corresponding glue code in connector drivers. Also it is not possible to have a bridge in the chain that sets **DRM_BRIDGE_OP_DP_AUDIO** if there is a bridge that sets this flag.”h]”(hŒÑNote: currently there can be at most one bridge in a chain that sets this bit. This is to simplify corresponding glue code in connector drivers. Also it is not possible to have a bridge in the chain that sets ”…”�”}”(hj*mh²hh³Nh´Nubj3 )�”}”(hŒ**DRM_BRIDGE_OP_DP_AUDIO**”h]”hŒDRM_BRIDGE_OP_DP_AUDIO”…”�”}”(hj2mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj*mubhŒ* if there is a bridge that sets this flag.”…”�”}”(hj*mh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M±hjzlubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj^lubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jylh´MµhjÝiubj| )�”}”(hX$``DRM_BRIDGE_OP_DP_AUDIO`` The bridge provides DisplayPort audio operations. Bridges that set this flag must implement the :c:type:`drm_bridge_funcs->dp_audio_prepare ` and :c:type:`drm_bridge_funcs->dp_audio_shutdown ` callbacks. Note: currently there can be at most one bridge in a chain that sets this bit. This is to simplify corresponding glue code in connector drivers. Also it is not possible to have a bridge in the chain that sets **DRM_BRIDGE_OP_HDMI_AUDIO** if there is a bridge that sets this flag. ”h]”(j‚ )�”}”(hŒ``DRM_BRIDGE_OP_DP_AUDIO``”h]”jˆ )�”}”(hj]mh]”hŒDRM_BRIDGE_OP_DP_AUDIO”…”�”}”(hj_mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj[mubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MÁhjWmubjž )�”}”(hhh]”(hÎ)�”}”(hŒïThe bridge provides DisplayPort audio operations. Bridges that set this flag must implement the :c:type:`drm_bridge_funcs->dp_audio_prepare ` and :c:type:`drm_bridge_funcs->dp_audio_shutdown ` callbacks.”h]”(hŒ`The bridge provides DisplayPort audio operations. Bridges that set this flag must implement the ”…”�”}”(hjvmh²hh³Nh´Nubh)�”}”(hŒ?:c:type:`drm_bridge_funcs->dp_audio_prepare `”h]”jˆ )�”}”(hj€mh]”hŒ"drm_bridge_funcs->dp_audio_prepare”…”�”}”(hj‚mh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj~mubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M¸hjvmubhŒ and ”…”�”}”(hjvmh²hh³Nh´Nubh)�”}”(hŒ@:c:type:`drm_bridge_funcs->dp_audio_shutdown `”h]”jˆ )�”}”(hj¤mh]”hŒ#drm_bridge_funcs->dp_audio_shutdown”…”�”}”(hj¦mh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj¢mubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³j�mh´M¸hjvmubhŒ callbacks.”…”�”}”(hjvmh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j�mh´M¸hjsmubhÎ)�”}”(hXNote: currently there can be at most one bridge in a chain that sets this bit. This is to simplify corresponding glue code in connector drivers. Also it is not possible to have a bridge in the chain that sets **DRM_BRIDGE_OP_HDMI_AUDIO** if there is a bridge that sets this flag.”h]”(hŒÑNote: currently there can be at most one bridge in a chain that sets this bit. This is to simplify corresponding glue code in connector drivers. Also it is not possible to have a bridge in the chain that sets ”…”�”}”(hjËmh²hh³Nh´Nubj3 )�”}”(hŒ**DRM_BRIDGE_OP_HDMI_AUDIO**”h]”hŒDRM_BRIDGE_OP_HDMI_AUDIO”…”�”}”(hjÓmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjËmubhŒ* if there is a bridge that sets this flag.”…”�”}”(hjËmh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M½hjsmubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjWmubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jrmh´MÁhjÝiubj| )�”}”(hŒT``DRM_BRIDGE_OP_HDMI_CEC_NOTIFIER`` The bridge requires CEC notifier to be present. ”h]”(j‚ )�”}”(hŒ#``DRM_BRIDGE_OP_HDMI_CEC_NOTIFIER``”h]”jˆ )�”}”(hjþmh]”hŒDRM_BRIDGE_OP_HDMI_CEC_NOTIFIER”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjümubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MÅhjømubjž )�”}”(hhh]”hÎ)�”}”(hŒ/The bridge requires CEC notifier to be present.”h]”hŒ/The bridge requires CEC notifier to be present.”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MÄhjnubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjømubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jnh´MÅhjÝiubj| )�”}”(hŒR``DRM_BRIDGE_OP_HDMI_CEC_ADAPTER`` The bridge requires CEC adapter to be present. ”h]”(j‚ )�”}”(hŒ"``DRM_BRIDGE_OP_HDMI_CEC_ADAPTER``”h]”jˆ )�”}”(hj8nh]”hŒDRM_BRIDGE_OP_HDMI_CEC_ADAPTER”…”�”}”(hj:nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj6nubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MÉhj2nubjž )�”}”(hhh]”hÎ)�”}”(hŒ.The bridge requires CEC adapter to be present.”h]”hŒ.The bridge requires CEC adapter to be present.”…”�”}”(hjQnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MÈhjNnubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj2nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jMnh´MÉhjÝiubj| )�”}”(hŒä``DRM_BRIDGE_OP_HDMI_HDR_DRM_INFOFRAME`` The bridge supports :c:type:`drm_bridge_funcs->hdmi_write_hdr_drm_infoframe ` and :c:type:`drm_bridge_funcs->hdmi_clear_hdr_drm_infoframe ` callbacks. ”h]”(j‚ )�”}”(hŒ(``DRM_BRIDGE_OP_HDMI_HDR_DRM_INFOFRAME``”h]”jˆ )�”}”(hjrnh]”hŒ$DRM_BRIDGE_OP_HDMI_HDR_DRM_INFOFRAME”…”�”}”(hjtnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjpnubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MÎhjlnubjž )�”}”(hhh]”hÎ)�”}”(hŒºThe bridge supports :c:type:`drm_bridge_funcs->hdmi_write_hdr_drm_infoframe ` and :c:type:`drm_bridge_funcs->hdmi_clear_hdr_drm_infoframe ` callbacks.”h]”(hŒThe bridge supports ”…”�”}”(hj‹nh²hh³Nh´Nubh)�”}”(hŒK:c:type:`drm_bridge_funcs->hdmi_write_hdr_drm_infoframe `”h]”jˆ )�”}”(hj•nh]”hŒ.drm_bridge_funcs->hdmi_write_hdr_drm_infoframe”…”�”}”(hj—nh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj“nubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MÌhj‹nubhŒ and ”…”�”}”(hj‹nh²hh³Nh´Nubh)�”}”(hŒK:c:type:`drm_bridge_funcs->hdmi_clear_hdr_drm_infoframe `”h]”jˆ )�”}”(hj¹nh]”hŒ.drm_bridge_funcs->hdmi_clear_hdr_drm_infoframe”…”�”}”(hj»nh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj·nubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³j²nh´MÌhj‹nubhŒ callbacks.”…”�”}”(hj‹nh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j²nh´MÌhjˆnubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjlnubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j‡nh´MÎhjÝiubj| )�”}”(hŒ×``DRM_BRIDGE_OP_HDMI_SPD_INFOFRAME`` The bridge supports :c:type:`drm_bridge_funcs->hdmi_write_spd_infoframe ` and :c:type:`drm_bridge_funcs->hdmi_clear_spd_infoframe ` callbacks.”h]”(j‚ )�”}”(hŒ$``DRM_BRIDGE_OP_HDMI_SPD_INFOFRAME``”h]”jˆ )�”}”(hjònh]”hŒ DRM_BRIDGE_OP_HDMI_SPD_INFOFRAME”…”�”}”(hjônh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjðnubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MÒhjìnubjž )�”}”(hhh]”hÎ)�”}”(hŒ²The bridge supports :c:type:`drm_bridge_funcs->hdmi_write_spd_infoframe ` and :c:type:`drm_bridge_funcs->hdmi_clear_spd_infoframe ` callbacks.”h]”(hŒThe bridge supports ”…”�”}”(hj oh²hh³Nh´Nubh)�”}”(hŒG:c:type:`drm_bridge_funcs->hdmi_write_spd_infoframe `”h]”jˆ )�”}”(hjoh]”hŒ*drm_bridge_funcs->hdmi_write_spd_infoframe”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjoubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MÑhj oubhŒ and ”…”�”}”(hj oh²hh³Nh´Nubh)�”}”(hŒG:c:type:`drm_bridge_funcs->hdmi_clear_spd_infoframe `”h]”jˆ )�”}”(hj9oh]”hŒ*drm_bridge_funcs->hdmi_clear_spd_infoframe”…”�”}”(hj;oh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj7oubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³j2oh´MÑhj oubhŒ callbacks.”…”�”}”(hj oh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j2oh´MÑhjoubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjìnubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³joh´MÒhjÝiubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÁiubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj­Ih²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_bridge (C struct)”Œ c.drm_bridge”hNt”auh1j† hj­Ih²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ drm_bridge”h]”j¤ )�”}”(hŒstruct drm_bridge”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj’oh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjŽoh²hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MØubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj oh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjŽoh²hh³jŸoh´MØubjÍ )�”}”(hŒ drm_bridge”h]”jÓ )�”}”(hjŒoh]”hŒ drm_bridge”…”�”}”(hj²oh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj®oubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjŽoh²hh³jŸoh´MØubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjŠoh²hh³jŸoh´MØubah}”(h]”j…oah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jŸoh´MØhj‡oh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ$central DRM bridge control structure”h]”hŒ$central DRM bridge control structure”…”�”}”(hjÔoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MàhjÑoh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj‡oh²hh³jŸoh´MØubeh}”(h]”h ]”(j Œstruct”eh"]”h$]”h&]”j" j j# jìoj$ jìoj% ‰j& ‰j' ‰uh1j˜ h²hhj­Ih³Nh´Nubj) )�”}”(hX^**Definition**:: struct drm_bridge { struct drm_private_obj base; struct drm_device *dev; struct drm_encoder *encoder; struct list_head chain_node; struct device_node *of_node; struct list_head list; const struct drm_bridge_timings *timings; const struct drm_bridge_funcs *funcs; void *container; struct kref refcount; bool unplugged; void *driver_private; enum drm_bridge_ops ops; int type; bool interlace_allowed; bool ycbcr_420_allowed; bool pre_enable_prev_first; bool support_hdcp; struct i2c_adapter *ddc; const char *vendor; const char *product; unsigned int supported_formats; unsigned int max_bpc; struct device *hdmi_cec_dev; struct device *hdmi_audio_dev; int hdmi_audio_max_i2s_playback_channels; u64 hdmi_audio_i2s_formats; unsigned int hdmi_audio_spdif_playback : 1; int hdmi_audio_dai_port; const char *hdmi_cec_adapter_name; u8 hdmi_cec_available_las; struct mutex hpd_mutex; struct mutex hpd_state_mutex; void (*hpd_cb)(void *data, enum drm_connector_status status); void *hpd_data; struct drm_bridge *next_bridge; }; **Members** ``base`` inherit from :c:type:`drm_private_object` ``dev`` DRM device this bridge belongs to ``encoder`` encoder to which this bridge is connected ``chain_node`` used to form a bridge chain ``of_node`` device node pointer to the bridge ``list`` to keep track of all added bridges ``timings`` the timing specification for the bridge, if any (may be NULL) ``funcs`` control functions ``container`` Pointer to the private driver struct embedding this **struct** drm_bridge. ``refcount`` reference count of users referencing this bridge. ``unplugged`` Flag to tell if the bridge has been unplugged. See drm_bridge_enter() and drm_bridge_unplug(). ``driver_private`` pointer to the bridge driver's internal context ``ops`` bitmask of operations supported by the bridge ``type`` Type of the connection at the bridge output (DRM_MODE_CONNECTOR_*). For bridges at the end of this chain this identifies the type of connected display. ``interlace_allowed`` Indicate that the bridge can handle interlaced modes. ``ycbcr_420_allowed`` Indicate that the bridge can handle YCbCr 420 output. ``pre_enable_prev_first`` The bridge requires that the prev bridge **pre_enable** function is called before its **pre_enable**, and conversely for post_disable. This is most frequently a requirement for DSI devices which need the host to be initialised before the peripheral. ``support_hdcp`` Indicate that the bridge supports HDCP. ``ddc`` Associated I2C adapter for DDC access, if any. ``vendor`` Vendor of the product to be used for the SPD InfoFrame generation. This is required if **DRM_BRIDGE_OP_HDMI** is set. ``product`` Name of the product to be used for the SPD InfoFrame generation. This is required if **DRM_BRIDGE_OP_HDMI** is set. ``supported_formats`` Bitmask of **drm_output_color_format** listing supported output formats. This is only relevant if **DRM_BRIDGE_OP_HDMI** is set. ``max_bpc`` Maximum bits per char the HDMI bridge supports. Allowed values are 8, 10 and 12. This is only relevant if **DRM_BRIDGE_OP_HDMI** is set. ``hdmi_cec_dev`` device to be used as a containing device for CEC functions. ``hdmi_audio_dev`` device to be used as a parent for the HDMI Codec if either of **DRM_BRIDGE_OP_HDMI_AUDIO** or **DRM_BRIDGE_OP_DP_AUDIO** is set. ``hdmi_audio_max_i2s_playback_channels`` maximum number of playback I2S channels for the **DRM_BRIDGE_OP_HDMI_AUDIO** or **DRM_BRIDGE_OP_DP_AUDIO**. ``hdmi_audio_i2s_formats`` supported I2S formats, optional. The default is to allow all formats supported by the corresponding I2S bus driver. This is only used for bridges setting **DRM_BRIDGE_OP_HDMI_AUDIO** or **DRM_BRIDGE_OP_DP_AUDIO**. ``hdmi_audio_spdif_playback`` set if this bridge has S/PDIF playback port for **DRM_BRIDGE_OP_HDMI_AUDIO** or **DRM_BRIDGE_OP_DP_AUDIO**. ``hdmi_audio_dai_port`` sound DAI port for either of **DRM_BRIDGE_OP_HDMI_AUDIO** and **DRM_BRIDGE_OP_DP_AUDIO**, -1 if it is not used. ``hdmi_cec_adapter_name`` the name of the adapter to register ``hdmi_cec_available_las`` number of logical addresses, CEC_MAX_LOG_ADDRS if unset ``hpd_mutex`` Protects the **hpd_cb** and **hpd_data** fields. ``hpd_state_mutex`` Protects the HPD en/disablement state for the bridge. ``hpd_cb`` Hot plug detection callback, registered with drm_bridge_hpd_enable(). ``hpd_data`` Private data passed to the Hot plug detection callback **hpd_cb**. ``next_bridge`` Pointer to the following bridge, automatically put when this bridge is freed (i.e. at destroy time). This is for drivers needing to store a pointer to the next bridge in the chain, and ensures any code still holding a reference to this bridge after its removal cannot use-after-free the next bridge. Any other bridge pointers stored by the driver must be put in the .destroy callback by driver code.”h]”(hÎ)�”}”(hŒ**Definition**::”h]”(j3 )�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjøoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjôoubhŒ:”…”�”}”(hjôoh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MähjðoubjN )�”}”(hX‰struct drm_bridge { struct drm_private_obj base; struct drm_device *dev; struct drm_encoder *encoder; struct list_head chain_node; struct device_node *of_node; struct list_head list; const struct drm_bridge_timings *timings; const struct drm_bridge_funcs *funcs; void *container; struct kref refcount; bool unplugged; void *driver_private; enum drm_bridge_ops ops; int type; bool interlace_allowed; bool ycbcr_420_allowed; bool pre_enable_prev_first; bool support_hdcp; struct i2c_adapter *ddc; const char *vendor; const char *product; unsigned int supported_formats; unsigned int max_bpc; struct device *hdmi_cec_dev; struct device *hdmi_audio_dev; int hdmi_audio_max_i2s_playback_channels; u64 hdmi_audio_i2s_formats; unsigned int hdmi_audio_spdif_playback : 1; int hdmi_audio_dai_port; const char *hdmi_cec_adapter_name; u8 hdmi_cec_available_las; struct mutex hpd_mutex; struct mutex hpd_state_mutex; void (*hpd_cb)(void *data, enum drm_connector_status status); void *hpd_data; struct drm_bridge *next_bridge; };”h]”hX‰struct drm_bridge { struct drm_private_obj base; struct drm_device *dev; struct drm_encoder *encoder; struct list_head chain_node; struct device_node *of_node; struct list_head list; const struct drm_bridge_timings *timings; const struct drm_bridge_funcs *funcs; void *container; struct kref refcount; bool unplugged; void *driver_private; enum drm_bridge_ops ops; int type; bool interlace_allowed; bool ycbcr_420_allowed; bool pre_enable_prev_first; bool support_hdcp; struct i2c_adapter *ddc; const char *vendor; const char *product; unsigned int supported_formats; unsigned int max_bpc; struct device *hdmi_cec_dev; struct device *hdmi_audio_dev; int hdmi_audio_max_i2s_playback_channels; u64 hdmi_audio_i2s_formats; unsigned int hdmi_audio_spdif_playback : 1; int hdmi_audio_dai_port; const char *hdmi_cec_adapter_name; u8 hdmi_cec_available_las; struct mutex hpd_mutex; struct mutex hpd_state_mutex; void (*hpd_cb)(void *data, enum drm_connector_status status); void *hpd_data; struct drm_bridge *next_bridge; };”…”�”}”hjpsbah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jM h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MæhjðoubhÎ)�”}”(hŒ **Members**”h]”j3 )�”}”(hj"ph]”hŒMembers”…”�”}”(hj$ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj pubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M hjðoubjw )�”}”(hhh]”(j| )�”}”(hŒ3``base`` inherit from :c:type:`drm_private_object` ”h]”(j‚ )�”}”(hŒ``base``”h]”jˆ )�”}”(hjAph]”hŒbase”…”�”}”(hjCph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj?pubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mähj;pubjž )�”}”(hhh]”hÎ)�”}”(hŒ)inherit from :c:type:`drm_private_object`”h]”(hŒ inherit from ”…”�”}”(hjZph²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_private_object`”h]”jˆ )�”}”(hjdph]”hŒdrm_private_object”…”�”}”(hjfph²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjbpubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_private_object”uh1hh³jVph´MähjZpubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jVph´MähjWpubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj;pubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jVph´Mähj8pubj| )�”}”(hŒ*``dev`` DRM device this bridge belongs to ”h]”(j‚ )�”}”(hŒ``dev``”h]”jˆ )�”}”(hj™ph]”hŒdev”…”�”}”(hj›ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj—pubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mæhj“pubjž )�”}”(hhh]”hÎ)�”}”(hŒ!DRM device this bridge belongs to”h]”hŒ!DRM device this bridge belongs to”…”�”}”(hj²ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j®ph´Mæhj¯pubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj“pubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j®ph´Mæhj8pubj| )�”}”(hŒ6``encoder`` encoder to which this bridge is connected ”h]”(j‚ )�”}”(hŒ ``encoder``”h]”jˆ )�”}”(hjÒph]”hŒencoder”…”�”}”(hjÔph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÐpubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MèhjÌpubjž )�”}”(hhh]”hÎ)�”}”(hŒ)encoder to which this bridge is connected”h]”hŒ)encoder to which this bridge is connected”…”�”}”(hjëph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jçph´Mèhjèpubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÌpubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jçph´Mèhj8pubj| )�”}”(hŒ+``chain_node`` used to form a bridge chain ”h]”(j‚ )�”}”(hŒ``chain_node``”h]”jˆ )�”}”(hj qh]”hŒ chain_node”…”�”}”(hj qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj qubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mêhjqubjž )�”}”(hhh]”hÎ)�”}”(hŒused to form a bridge chain”h]”hŒused to form a bridge chain”…”�”}”(hj$qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j qh´Mêhj!qubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjqubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j qh´Mêhj8pubj| )�”}”(hŒ.``of_node`` device node pointer to the bridge ”h]”(j‚ )�”}”(hŒ ``of_node``”h]”jˆ )�”}”(hjDqh]”hŒof_node”…”�”}”(hjFqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjBqubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mìhj>qubjž )�”}”(hhh]”hÎ)�”}”(hŒ!device node pointer to the bridge”h]”hŒ!device node pointer to the bridge”…”�”}”(hj]qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jYqh´MìhjZqubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj>qubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jYqh´Mìhj8pubj| )�”}”(hŒ,``list`` to keep track of all added bridges ”h]”(j‚ )�”}”(hŒ``list``”h]”jˆ )�”}”(hj}qh]”hŒlist”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj{qubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mîhjwqubjž )�”}”(hhh]”hÎ)�”}”(hŒ"to keep track of all added bridges”h]”hŒ"to keep track of all added bridges”…”�”}”(hj–qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j’qh´Mîhj“qubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjwqubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j’qh´Mîhj8pubj| )�”}”(hŒJ``timings`` the timing specification for the bridge, if any (may be NULL) ”h]”(j‚ )�”}”(hŒ ``timings``”h]”jˆ )�”}”(hj¶qh]”hŒtimings”…”�”}”(hj¸qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj´qubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mñhj°qubjž )�”}”(hhh]”hÎ)�”}”(hŒ=the timing specification for the bridge, if any (may be NULL)”h]”hŒ=the timing specification for the bridge, if any (may be NULL)”…”�”}”(hjÏqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jËqh´MñhjÌqubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj°qubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jËqh´Mñhj8pubj| )�”}”(hŒ``funcs`` control functions ”h]”(j‚ )�”}”(hŒ ``funcs``”h]”jˆ )�”}”(hjïqh]”hŒfuncs”…”�”}”(hjñqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjíqubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Möhjéqubjž )�”}”(hhh]”hÎ)�”}”(hŒcontrol functions”h]”hŒcontrol functions”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jrh´Möhjrubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjéqubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jrh´Möhj8pubj| )�”}”(hŒY``container`` Pointer to the private driver struct embedding this **struct** drm_bridge. ”h]”(j‚ )�”}”(hŒ ``container``”h]”jˆ )�”}”(hj(rh]”hŒ container”…”�”}”(hj*rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj&rubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mûhj"rubjž )�”}”(hhh]”hÎ)�”}”(hŒJPointer to the private driver struct embedding this **struct** drm_bridge.”h]”(hŒ4Pointer to the private driver struct embedding this ”…”�”}”(hjArh²hh³Nh´Nubj3 )�”}”(hŒ **struct**”h]”hŒstruct”…”�”}”(hjIrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjArubhŒ drm_bridge.”…”�”}”(hjArh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Múhj>rubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj"rubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j=rh´Mûhj8pubj| )�”}”(hŒ?``refcount`` reference count of users referencing this bridge. ”h]”(j‚ )�”}”(hŒ ``refcount``”h]”jˆ )�”}”(hjtrh]”hŒrefcount”…”�”}”(hjvrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjrrubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mhjnrubjž )�”}”(hhh]”hÎ)�”}”(hŒ1reference count of users referencing this bridge.”h]”hŒ1reference count of users referencing this bridge.”…”�”}”(hj�rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j‰rh´MhjŠrubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjnrubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j‰rh´Mhj8pubj| )�”}”(hŒm``unplugged`` Flag to tell if the bridge has been unplugged. See drm_bridge_enter() and drm_bridge_unplug(). ”h]”(j‚ )�”}”(hŒ ``unplugged``”h]”jˆ )�”}”(hj­rh]”hŒ unplugged”…”�”}”(hj¯rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj«rubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mhj§rubjž )�”}”(hhh]”hÎ)�”}”(hŒ^Flag to tell if the bridge has been unplugged. See drm_bridge_enter() and drm_bridge_unplug().”h]”hŒ^Flag to tell if the bridge has been unplugged. See drm_bridge_enter() and drm_bridge_unplug().”…”�”}”(hjÆrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MhjÃrubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj§rubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÂrh´Mhj8pubj| )�”}”(hŒC``driver_private`` pointer to the bridge driver's internal context ”h]”(j‚ )�”}”(hŒ``driver_private``”h]”jˆ )�”}”(hjçrh]”hŒdriver_private”…”�”}”(hjérh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjårubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M hjárubjž )�”}”(hhh]”hÎ)�”}”(hŒ/pointer to the bridge driver's internal context”h]”hŒ1pointer to the bridge driver’s internal context”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jürh´M hjýrubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjárubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jürh´M hj8pubj| )�”}”(hŒ6``ops`` bitmask of operations supported by the bridge ”h]”(j‚ )�”}”(hŒ``ops``”h]”jˆ )�”}”(hj sh]”hŒops”…”�”}”(hj"sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjsubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mhjsubjž )�”}”(hhh]”hÎ)�”}”(hŒ-bitmask of operations supported by the bridge”h]”hŒ-bitmask of operations supported by the bridge”…”�”}”(hj9sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j5sh´Mhj6subah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjsubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j5sh´Mhj8pubj| )�”}”(hŒ¡``type`` Type of the connection at the bridge output (DRM_MODE_CONNECTOR_*). For bridges at the end of this chain this identifies the type of connected display. ”h]”(j‚ )�”}”(hŒ``type``”h]”jˆ )�”}”(hjYsh]”hŒtype”…”�”}”(hj[sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjWsubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MhjSsubjž )�”}”(hhh]”hÎ)�”}”(hŒ—Type of the connection at the bridge output (DRM_MODE_CONNECTOR_*). For bridges at the end of this chain this identifies the type of connected display.”h]”hŒ—Type of the connection at the bridge output (DRM_MODE_CONNECTOR_*). For bridges at the end of this chain this identifies the type of connected display.”…”�”}”(hjrsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mhjosubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjSsubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jnsh´Mhj8pubj| )�”}”(hŒL``interlace_allowed`` Indicate that the bridge can handle interlaced modes. ”h]”(j‚ )�”}”(hŒ``interlace_allowed``”h]”jˆ )�”}”(hj“sh]”hŒinterlace_allowed”…”�”}”(hj•sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj‘subah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mhj�subjž )�”}”(hhh]”hÎ)�”}”(hŒ5Indicate that the bridge can handle interlaced modes.”h]”hŒ5Indicate that the bridge can handle interlaced modes.”…”�”}”(hj¬sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mhj©subah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj�subeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¨sh´Mhj8pubj| )�”}”(hŒL``ycbcr_420_allowed`` Indicate that the bridge can handle YCbCr 420 output. ”h]”(j‚ )�”}”(hŒ``ycbcr_420_allowed``”h]”jˆ )�”}”(hjÍsh]”hŒycbcr_420_allowed”…”�”}”(hjÏsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjËsubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MhjÇsubjž )�”}”(hhh]”hÎ)�”}”(hŒ5Indicate that the bridge can handle YCbCr 420 output.”h]”hŒ5Indicate that the bridge can handle YCbCr 420 output.”…”�”}”(hjæsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mhjãsubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÇsubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jâsh´Mhj8pubj| )�”}”(hX``pre_enable_prev_first`` The bridge requires that the prev bridge **pre_enable** function is called before its **pre_enable**, and conversely for post_disable. This is most frequently a requirement for DSI devices which need the host to be initialised before the peripheral. ”h]”(j‚ )�”}”(hŒ``pre_enable_prev_first``”h]”jˆ )�”}”(hjth]”hŒpre_enable_prev_first”…”�”}”(hj th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjtubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M%hjtubjž )�”}”(hhh]”hÎ)�”}”(hŒùThe bridge requires that the prev bridge **pre_enable** function is called before its **pre_enable**, and conversely for post_disable. This is most frequently a requirement for DSI devices which need the host to be initialised before the peripheral.”h]”(hŒ)The bridge requires that the prev bridge ”…”�”}”(hj th²hh³Nh´Nubj3 )�”}”(hŒ**pre_enable**”h]”hŒ pre_enable”…”�”}”(hj(th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj tubhŒ function is called before its ”…”�”}”(hj th²hh³Nh´Nubj3 )�”}”(hŒ**pre_enable**”h]”hŒ pre_enable”…”�”}”(hj:th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj tubhŒ•, and conversely for post_disable. This is most frequently a requirement for DSI devices which need the host to be initialised before the peripheral.”…”�”}”(hj th²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M!hjtubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjtubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jth´M%hj8pubj| )�”}”(hŒ9``support_hdcp`` Indicate that the bridge supports HDCP. ”h]”(j‚ )�”}”(hŒ``support_hdcp``”h]”jˆ )�”}”(hjeth]”hŒ support_hdcp”…”�”}”(hjgth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjctubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M)hj_tubjž )�”}”(hhh]”hÎ)�”}”(hŒ'Indicate that the bridge supports HDCP.”h]”hŒ'Indicate that the bridge supports HDCP.”…”�”}”(hj~th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jzth´M)hj{tubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj_tubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jzth´M)hj8pubj| )�”}”(hŒ7``ddc`` Associated I2C adapter for DDC access, if any. ”h]”(j‚ )�”}”(hŒ``ddc``”h]”jˆ )�”}”(hjžth]”hŒddc”…”�”}”(hj th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjœtubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M-hj˜tubjž )�”}”(hhh]”hÎ)�”}”(hŒ.Associated I2C adapter for DDC access, if any.”h]”hŒ.Associated I2C adapter for DDC access, if any.”…”�”}”(hj·th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j³th´M-hj´tubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj˜tubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j³th´M-hj8pubj| )�”}”(hŒ�``vendor`` Vendor of the product to be used for the SPD InfoFrame generation. This is required if **DRM_BRIDGE_OP_HDMI** is set. ”h]”(j‚ )�”}”(hŒ ``vendor``”h]”jˆ )�”}”(hj×th]”hŒvendor”…”�”}”(hjÙth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÕtubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M3hjÑtubjž )�”}”(hhh]”hÎ)�”}”(hŒuVendor of the product to be used for the SPD InfoFrame generation. This is required if **DRM_BRIDGE_OP_HDMI** is set.”h]”(hŒWVendor of the product to be used for the SPD InfoFrame generation. This is required if ”…”�”}”(hjðth²hh³Nh´Nubj3 )�”}”(hŒ**DRM_BRIDGE_OP_HDMI**”h]”hŒDRM_BRIDGE_OP_HDMI”…”�”}”(hjøth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjðtubhŒ is set.”…”�”}”(hjðth²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M2hjítubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÑtubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jìth´M3hj8pubj| )�”}”(hŒ€``product`` Name of the product to be used for the SPD InfoFrame generation. This is required if **DRM_BRIDGE_OP_HDMI** is set. ”h]”(j‚ )�”}”(hŒ ``product``”h]”jˆ )�”}”(hj#uh]”hŒproduct”…”�”}”(hj%uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj!uubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M9hjuubjž )�”}”(hhh]”hÎ)�”}”(hŒsName of the product to be used for the SPD InfoFrame generation. This is required if **DRM_BRIDGE_OP_HDMI** is set.”h]”(hŒUName of the product to be used for the SPD InfoFrame generation. This is required if ”…”�”}”(hjhj…uubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjiuubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j„uh´M@hj8pubj| )�”}”(hŒ•``max_bpc`` Maximum bits per char the HDMI bridge supports. Allowed values are 8, 10 and 12. This is only relevant if **DRM_BRIDGE_OP_HDMI** is set. ”h]”(j‚ )�”}”(hŒ ``max_bpc``”h]”jˆ )�”}”(hjÍuh]”hŒmax_bpc”…”�”}”(hjÏuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjËuubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MGhjÇuubjž )�”}”(hhh]”hÎ)�”}”(hŒˆMaximum bits per char the HDMI bridge supports. Allowed values are 8, 10 and 12. This is only relevant if **DRM_BRIDGE_OP_HDMI** is set.”h]”(hŒjMaximum bits per char the HDMI bridge supports. Allowed values are 8, 10 and 12. This is only relevant if ”…”�”}”(hjæuh²hh³Nh´Nubj3 )�”}”(hŒ**DRM_BRIDGE_OP_HDMI**”h]”hŒDRM_BRIDGE_OP_HDMI”…”�”}”(hjîuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjæuubhŒ is set.”…”�”}”(hjæuh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MEhjãuubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÇuubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jâuh´MGhj8pubj| )�”}”(hŒM``hdmi_cec_dev`` device to be used as a containing device for CEC functions. ”h]”(j‚ )�”}”(hŒ``hdmi_cec_dev``”h]”jˆ )�”}”(hjvh]”hŒ hdmi_cec_dev”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjvubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MMhjvubjž )�”}”(hhh]”hÎ)�”}”(hŒ;device to be used as a containing device for CEC functions.”h]”hŒ;device to be used as a containing device for CEC functions.”…”�”}”(hj2vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MLhj/vubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjvubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j.vh´MMhj8pubj| )�”}”(hŒ”``hdmi_audio_dev`` device to be used as a parent for the HDMI Codec if either of **DRM_BRIDGE_OP_HDMI_AUDIO** or **DRM_BRIDGE_OP_DP_AUDIO** is set. ”h]”(j‚ )�”}”(hŒ``hdmi_audio_dev``”h]”jˆ )�”}”(hjSvh]”hŒhdmi_audio_dev”…”�”}”(hjUvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjQvubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MShjMvubjž )�”}”(hhh]”hÎ)�”}”(hŒ€device to be used as a parent for the HDMI Codec if either of **DRM_BRIDGE_OP_HDMI_AUDIO** or **DRM_BRIDGE_OP_DP_AUDIO** is set.”h]”(hŒ>device to be used as a parent for the HDMI Codec if either of ”…”�”}”(hjlvh²hh³Nh´Nubj3 )�”}”(hŒ**DRM_BRIDGE_OP_HDMI_AUDIO**”h]”hŒDRM_BRIDGE_OP_HDMI_AUDIO”…”�”}”(hjtvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjlvubhŒ or ”…”�”}”(hjlvh²hh³Nh´Nubj3 )�”}”(hŒ**DRM_BRIDGE_OP_DP_AUDIO**”h]”hŒDRM_BRIDGE_OP_DP_AUDIO”…”�”}”(hj†vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjlvubhŒ is set.”…”�”}”(hjlvh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MRhjivubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjMvubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jhvh´MShj8pubj| )�”}”(hŒ•``hdmi_audio_max_i2s_playback_channels`` maximum number of playback I2S channels for the **DRM_BRIDGE_OP_HDMI_AUDIO** or **DRM_BRIDGE_OP_DP_AUDIO**. ”h]”(j‚ )�”}”(hŒ(``hdmi_audio_max_i2s_playback_channels``”h]”jˆ )�”}”(hj±vh]”hŒ$hdmi_audio_max_i2s_playback_channels”…”�”}”(hj³vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¯vubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MZhj«vubjž )�”}”(hhh]”hÎ)�”}”(hŒkmaximum number of playback I2S channels for the **DRM_BRIDGE_OP_HDMI_AUDIO** or **DRM_BRIDGE_OP_DP_AUDIO**.”h]”(hŒ0maximum number of playback I2S channels for the ”…”�”}”(hjÊvh²hh³Nh´Nubj3 )�”}”(hŒ**DRM_BRIDGE_OP_HDMI_AUDIO**”h]”hŒDRM_BRIDGE_OP_HDMI_AUDIO”…”�”}”(hjÒvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÊvubhŒ or ”…”�”}”(hjÊvh²hh³Nh´Nubj3 )�”}”(hŒ**DRM_BRIDGE_OP_DP_AUDIO**”h]”hŒDRM_BRIDGE_OP_DP_AUDIO”…”�”}”(hjävh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÊvubhŒ.”…”�”}”(hjÊvh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MXhjÇvubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj«vubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÆvh´MZhj8pubj| )�”}”(hŒñ``hdmi_audio_i2s_formats`` supported I2S formats, optional. The default is to allow all formats supported by the corresponding I2S bus driver. This is only used for bridges setting **DRM_BRIDGE_OP_HDMI_AUDIO** or **DRM_BRIDGE_OP_DP_AUDIO**. ”h]”(j‚ )�”}”(hŒ``hdmi_audio_i2s_formats``”h]”jˆ )�”}”(hjwh]”hŒhdmi_audio_i2s_formats”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj wubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mbhj wubjž )�”}”(hhh]”hÎ)�”}”(hŒÕsupported I2S formats, optional. The default is to allow all formats supported by the corresponding I2S bus driver. This is only used for bridges setting **DRM_BRIDGE_OP_HDMI_AUDIO** or **DRM_BRIDGE_OP_DP_AUDIO**.”h]”(hŒšsupported I2S formats, optional. The default is to allow all formats supported by the corresponding I2S bus driver. This is only used for bridges setting ”…”�”}”(hj(wh²hh³Nh´Nubj3 )�”}”(hŒ**DRM_BRIDGE_OP_HDMI_AUDIO**”h]”hŒDRM_BRIDGE_OP_HDMI_AUDIO”…”�”}”(hj0wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj(wubhŒ or ”…”�”}”(hj(wh²hh³Nh´Nubj3 )�”}”(hŒ**DRM_BRIDGE_OP_DP_AUDIO**”h]”hŒDRM_BRIDGE_OP_DP_AUDIO”…”�”}”(hjBwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj(wubhŒ.”…”�”}”(hj(wh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M_hj%wubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj wubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j$wh´Mbhj8pubj| )�”}”(hŒŠ``hdmi_audio_spdif_playback`` set if this bridge has S/PDIF playback port for **DRM_BRIDGE_OP_HDMI_AUDIO** or **DRM_BRIDGE_OP_DP_AUDIO**. ”h]”(j‚ )�”}”(hŒ``hdmi_audio_spdif_playback``”h]”jˆ )�”}”(hjmwh]”hŒhdmi_audio_spdif_playback”…”�”}”(hjowh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjkwubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mhhjgwubjž )�”}”(hhh]”hÎ)�”}”(hŒkset if this bridge has S/PDIF playback port for **DRM_BRIDGE_OP_HDMI_AUDIO** or **DRM_BRIDGE_OP_DP_AUDIO**.”h]”(hŒ0set if this bridge has S/PDIF playback port for ”…”�”}”(hj†wh²hh³Nh´Nubj3 )�”}”(hŒ**DRM_BRIDGE_OP_HDMI_AUDIO**”h]”hŒDRM_BRIDGE_OP_HDMI_AUDIO”…”�”}”(hjŽw•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj†wubhŒ or ”…”�”}”(hj†wh²hh³Nh´Nubj3 )�”}”(hŒ**DRM_BRIDGE_OP_DP_AUDIO**”h]”hŒDRM_BRIDGE_OP_DP_AUDIO”…”�”}”(hj wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj†wubhŒ.”…”�”}”(hj†wh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mghjƒwubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjgwubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j‚wh´Mhhj8pubj| )�”}”(hŒˆ``hdmi_audio_dai_port`` sound DAI port for either of **DRM_BRIDGE_OP_HDMI_AUDIO** and **DRM_BRIDGE_OP_DP_AUDIO**, -1 if it is not used. ”h]”(j‚ )�”}”(hŒ``hdmi_audio_dai_port``”h]”jˆ )�”}”(hjËwh]”hŒhdmi_audio_dai_port”…”�”}”(hjÍwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÉwubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MohjÅwubjž )�”}”(hhh]”hÎ)�”}”(hŒosound DAI port for either of **DRM_BRIDGE_OP_HDMI_AUDIO** and **DRM_BRIDGE_OP_DP_AUDIO**, -1 if it is not used.”h]”(hŒsound DAI port for either of ”…”�”}”(hjäwh²hh³Nh´Nubj3 )�”}”(hŒ**DRM_BRIDGE_OP_HDMI_AUDIO**”h]”hŒDRM_BRIDGE_OP_HDMI_AUDIO”…”�”}”(hjìwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjäwubhŒ and ”…”�”}”(hjäwh²hh³Nh´Nubj3 )�”}”(hŒ**DRM_BRIDGE_OP_DP_AUDIO**”h]”hŒDRM_BRIDGE_OP_DP_AUDIO”…”�”}”(hjþwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjäwubhŒ, -1 if it is not used.”…”�”}”(hjäwh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mmhjáwubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÅwubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jàwh´Mohj8pubj| )�”}”(hŒ>``hdmi_cec_adapter_name`` the name of the adapter to register ”h]”(j‚ )�”}”(hŒ``hdmi_cec_adapter_name``”h]”jˆ )�”}”(hj)xh]”hŒhdmi_cec_adapter_name”…”�”}”(hj+xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj'xubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mthj#xubjž )�”}”(hhh]”hÎ)�”}”(hŒ#the name of the adapter to register”h]”hŒ#the name of the adapter to register”…”�”}”(hjBxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j>xh´Mthj?xubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj#xubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j>xh´Mthj8pubj| )�”}”(hŒS``hdmi_cec_available_las`` number of logical addresses, CEC_MAX_LOG_ADDRS if unset ”h]”(j‚ )�”}”(hŒ``hdmi_cec_available_las``”h]”jˆ )�”}”(hjbxh]”hŒhdmi_cec_available_las”…”�”}”(hjdxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj`xubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Myhj\xubjž )�”}”(hhh]”hÎ)�”}”(hŒ7number of logical addresses, CEC_MAX_LOG_ADDRS if unset”h]”hŒ7number of logical addresses, CEC_MAX_LOG_ADDRS if unset”…”�”}”(hj{xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jwxh´Myhjxxubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj\xubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jwxh´Myhj8pubj| )�”}”(hŒ?``hpd_mutex`` Protects the **hpd_cb** and **hpd_data** fields. ”h]”(j‚ )�”}”(hŒ ``hpd_mutex``”h]”jˆ )�”}”(hj›xh]”hŒ hpd_mutex”…”�”}”(hj�xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj™xubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mhj•xubjž )�”}”(hhh]”hÎ)�”}”(hŒ0Protects the **hpd_cb** and **hpd_data** fields.”h]”(hŒ Protects the ”…”�”}”(hj´xh²hh³Nh´Nubj3 )�”}”(hŒ **hpd_cb**”h]”hŒhpd_cb”…”�”}”(hj¼xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj´xubhŒ and ”…”�”}”(hj´xh²hh³Nh´Nubj3 )�”}”(hŒ **hpd_data**”h]”hŒhpd_data”…”�”}”(hjÎxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj´xubhŒ fields.”…”�”}”(hj´xh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j°xh´Mhj±xubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj•xubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j°xh´Mhj8pubj| )�”}”(hŒJ``hpd_state_mutex`` Protects the HPD en/disablement state for the bridge. ”h]”(j‚ )�”}”(hŒ``hpd_state_mutex``”h]”jˆ )�”}”(hjøxh]”hŒhpd_state_mutex”…”�”}”(hjúxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjöxubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mƒhjòxubjž )�”}”(hhh]”hÎ)�”}”(hŒ5Protects the HPD en/disablement state for the bridge.”h]”hŒ5Protects the HPD en/disablement state for the bridge.”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j yh´Mƒhjyubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjòxubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j yh´Mƒhj8pubj| )�”}”(hŒQ``hpd_cb`` Hot plug detection callback, registered with drm_bridge_hpd_enable(). ”h]”(j‚ )�”}”(hŒ ``hpd_cb``”h]”jˆ )�”}”(hj1yh]”hŒhpd_cb”…”�”}”(hj3yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj/yubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mˆhj+yubjž )�”}”(hhh]”hÎ)�”}”(hŒEHot plug detection callback, registered with drm_bridge_hpd_enable().”h]”hŒEHot plug detection callback, registered with drm_bridge_hpd_enable().”…”�”}”(hjJyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M‡hjGyubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj+yubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jFyh´Mˆhj8pubj| )�”}”(hŒP``hpd_data`` Private data passed to the Hot plug detection callback **hpd_cb**. ”h]”(j‚ )�”}”(hŒ ``hpd_data``”h]”jˆ )�”}”(hjkyh]”hŒhpd_data”…”�”}”(hjmyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjiyubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M�hjeyubjž )�”}”(hhh]”hÎ)�”}”(hŒBPrivate data passed to the Hot plug detection callback **hpd_cb**.”h]”(hŒ7Private data passed to the Hot plug detection callback ”…”�”}”(hj„yh²hh³Nh´Nubj3 )�”}”(hŒ **hpd_cb**”h]”hŒhpd_cb”…”�”}”(hjŒyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj„yubhŒ.”…”�”}”(hj„yh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MŒhj�yubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjeyubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j€yh´M�hj8pubj| )�”}”(hXŸ``next_bridge`` Pointer to the following bridge, automatically put when this bridge is freed (i.e. at destroy time). This is for drivers needing to store a pointer to the next bridge in the chain, and ensures any code still holding a reference to this bridge after its removal cannot use-after-free the next bridge. Any other bridge pointers stored by the driver must be put in the .destroy callback by driver code.”h]”(j‚ )�”}”(hŒ``next_bridge``”h]”jˆ )�”}”(hj·yh]”hŒ next_bridge”…”�”}”(hj¹yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjµyubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M—hj±yubjž )�”}”(hhh]”hÎ)�”}”(hX�Pointer to the following bridge, automatically put when this bridge is freed (i.e. at destroy time). This is for drivers needing to store a pointer to the next bridge in the chain, and ensures any code still holding a reference to this bridge after its removal cannot use-after-free the next bridge. Any other bridge pointers stored by the driver must be put in the .destroy callback by driver code.”h]”hX�Pointer to the following bridge, automatically put when this bridge is freed (i.e. at destroy time). This is for drivers needing to store a pointer to the next bridge in the chain, and ensures any code still holding a reference to this bridge after its removal cannot use-after-free the next bridge. Any other bridge pointers stored by the driver must be put in the .destroy callback by driver code.”…”�”}”(hjÐyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M’hjÍyubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj±yubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÌyh´M—hj8pubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjðoubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj­Ih²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdevm_drm_bridge_alloc (C macro)”Œc.devm_drm_bridge_alloc”hNt”auh1j† hj­Ih²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒdevm_drm_bridge_alloc”h]”j¤ )�”}”(hŒdevm_drm_bridge_alloc”h]”jÍ )�”}”(hŒdevm_drm_bridge_alloc”h]”jÓ )�”}”(hj zh]”hŒdevm_drm_bridge_alloc”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjzubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj zh²hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M±ubah}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj zh²hh³j(zh´M±ubah}”(h]”jzah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j(zh´M±hjzh²hubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j hjzh²hh³j(zh´M±ubeh}”(h]”h ]”(j Œmacro”eh"]”h$]”h&]”j" j j# jAzj$ jAzj% ‰j& ‰j' ‰uh1j˜ h²hhj­Ih³Nh´NubhÎ)�”}”(hŒ4``devm_drm_bridge_alloc (dev, type, member, funcs)``”h]”jˆ )�”}”(hjGzh]”hŒ0devm_drm_bridge_alloc (dev, type, member, funcs)”…”�”}”(hjIzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjEzubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M³hj­Ih²hubj^E)�”}”(hŒ!Allocate and initialize a bridge ”h]”hÎ)�”}”(hŒ Allocate and initialize a bridge”h]”hŒ Allocate and initialize a bridge”…”�”}”(hjazh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M±hj]zubah}”(h]”h ]”h"]”h$]”h&]”uh1j]Eh³jozh´M±hj­Ih²hubj) )�”}”(hXî**Parameters** ``dev`` struct device of the bridge device ``type`` the type of the struct which contains struct :c:type:`drm_bridge` ``member`` the name of the :c:type:`drm_bridge` within **type** ``funcs`` callbacks for this bridge **Description** The reference count of the returned bridge is initialized to 1. This reference will be automatically dropped via devm (by calling drm_bridge_put()) when **dev** is removed. **Return** Pointer to new bridge, or ERR_PTR on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj|zh]”hŒ Parameters”…”�”}”(hj~zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjzzubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mµhjvzubjw )�”}”(hhh]”(j| )�”}”(hŒ+``dev`` struct device of the bridge device ”h]”(j‚ )�”}”(hŒ``dev``”h]”jˆ )�”}”(hj›zh]”hŒdev”…”�”}”(hj�zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj™zubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M²hj•zubjž )�”}”(hhh]”hÎ)�”}”(hŒ"struct device of the bridge device”h]”hŒ"struct device of the bridge device”…”�”}”(hj´zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j°zh´M²hj±zubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj•zubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j°zh´M²hj’zubj| )�”}”(hŒK``type`` the type of the struct which contains struct :c:type:`drm_bridge` ”h]”(j‚ )�”}”(hŒ``type``”h]”jˆ )�”}”(hjÔzh]”hŒtype”…”�”}”(hjÖzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÒzubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M³hjÎzubjž )�”}”(hhh]”hÎ)�”}”(hŒAthe type of the struct which contains struct :c:type:`drm_bridge`”h]”(hŒ-the type of the struct which contains struct ”…”�”}”(hjízh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_bridge`”h]”jˆ )�”}”(hj÷zh]”hŒ drm_bridge”…”�”}”(hjùzh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjõzubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œ drm_bridge”uh1hh³jézh´M³hjízubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jézh´M³hjêzubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÎzubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jézh´M³hj’zubj| )�”}”(hŒ@``member`` the name of the :c:type:`drm_bridge` within **type** ”h]”(j‚ )�”}”(hŒ ``member``”h]”jˆ )�”}”(hj,{h]”hŒmember”…”�”}”(hj.{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj*{ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M´hj&{ubjž )�”}”(hhh]”hÎ)�”}”(hŒ4the name of the :c:type:`drm_bridge` within **type**”h]”(hŒthe name of the ”…”�”}”(hjE{h²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_bridge`”h]”jˆ )�”}”(hjO{h]”hŒ drm_bridge”…”�”}”(hjQ{h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjM{ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œ drm_bridge”uh1hh³jA{h´M´hjE{ubhŒ within ”…”�”}”(hjE{h²hh³Nh´Nubj3 )�”}”(hŒ**type**”h]”hŒtype”…”�”}”(hjp{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjE{ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jA{h´M´hjB{ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj&{ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jA{h´M´hj’zubj| )�”}”(hŒ$``funcs`` callbacks for this bridge ”h]”(j‚ )�”}”(hŒ ``funcs``”h]”jˆ )�”}”(hj–{h]”hŒfuncs”…”�”}”(hj˜{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj”{ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mµhj�{ubjž )�”}”(hhh]”hÎ)�”}”(hŒcallbacks for this bridge”h]”hŒcallbacks for this bridge”…”�”}”(hj¯{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j«{h´Mµhj¬{ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj�{ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j«{h´Mµhj’zubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjvzubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjÑ{h]”hŒ Description”…”�”}”(hjÓ{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÏ{ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M·hjvzubhÎ)�”}”(hŒ¬The reference count of the returned bridge is initialized to 1. This reference will be automatically dropped via devm (by calling drm_bridge_put()) when **dev** is removed.”h]”(hŒ™The reference count of the returned bridge is initialized to 1. This reference will be automatically dropped via devm (by calling drm_bridge_put()) when ”…”�”}”(hjç{h²hh³Nh´Nubj3 )�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hjï{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjç{ubhŒ is removed.”…”�”}”(hjç{h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M¶hjvzubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj |h]”hŒReturn”…”�”}”(hj |h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj|ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MºhjvzubhÎ)�”}”(hŒ-Pointer to new bridge, or ERR_PTR on failure.”h]”hŒ-Pointer to new bridge, or ERR_PTR on failure.”…”�”}”(hj |h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M»hjvzubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj­Ih²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ)drm_bridge_get_current_state (C function)”Œc.drm_bridge_get_current_state”hNt”auh1j† hj­Ih²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒRstruct drm_bridge_state * drm_bridge_get_current_state (struct drm_bridge *bridge)”h]”j¤ )�”}”(hŒPstruct drm_bridge_state *drm_bridge_get_current_state(struct drm_bridge *bridge)”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjO|h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjK|h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mäubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]|h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjK|h²hh³j\|h´Mäubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_bridge_state”h]”hŒdrm_bridge_state”…”�”}”(hjn|h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjk|ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jp|Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jŒdrm_bridge_get_current_state”sbŒc.drm_bridge_get_current_state”†”asbuh1hhjK|h²hh³j\|h´Mäubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�|h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjK|h²hh³j\|h´Mäubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj�|h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjK|h²hh³j\|h´MäubjÍ )�”}”(hŒdrm_bridge_get_current_state”h]”jÓ )�”}”(hjŒ|h]”hŒdrm_bridge_get_current_state”…”�”}”(hj®|h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjª|ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjK|h²hh³j\|h´MäubjÞ)�”}”(hŒ(struct drm_bridge *bridge)”h]”jä)�”}”(hŒstruct drm_bridge *bridge”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Œ drm_bridge”h]”hŒ drm_bridge”…”�”}”(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.drm_bridge_get_current_state”†”asbuh1hhjÅ|ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÅ|ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÅ|ubjÓ )�”}”(hŒbridge”h]”hŒbridge”…”�”}”(hj }h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÅ|ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÁ|ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjK|h²hh³j\|h´Mäubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjG|h²hh³j\|h´Mäubah}”(h]”jB|ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j\|h´MähjD|h²hubj )�”}”(hhh]”hÎ)�”}”(hŒGet the current bridge state”h]”hŒGet the current bridge state”…”�”}”(hjJ}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MähjG}h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjD|h²hh³j\|h´Mäubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jb}j$ jb}j% ‰j& ‰j' ‰uh1j˜ h²hhj­Ih³Nh´Nubj) )�”}”(hŒ¾**Parameters** ``struct drm_bridge *bridge`` bridge object **Description** This function must be called with the modeset lock held. The current bridge state, or NULL if there is none.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjl}h]”hŒ Parameters”…”�”}”(hjn}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjj}ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mèhjf}ubjw )�”}”(hhh]”j| )�”}”(hŒ,``struct drm_bridge *bridge`` bridge object ”h]”(j‚ )�”}”(hŒ``struct drm_bridge *bridge``”h]”jˆ )�”}”(hj‹}h]”hŒstruct drm_bridge *bridge”…”�”}”(hj�}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj‰}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Måhj…}ubjž )�”}”(hhh]”hÎ)�”}”(hŒ bridge object”h]”hŒ bridge object”…”�”}”(hj¤}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j }h´Måhj¡}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj…}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j }h´Måhj‚}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjf}ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjÆ}h]”hŒ Description”…”�”}”(hjÈ}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÄ}ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mçhjf}ubhÎ)�”}”(hŒ8This function must be called with the modeset lock held.”h]”hŒ8This function must be called with the modeset lock held.”…”�”}”(hjÜ}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mæhjf}ubhÎ)�”}”(hŒ3The current bridge state, or NULL if there is none.”h]”hŒ3The current bridge state, or NULL if there is none.”…”�”}”(hjë}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Méhjf}ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj­Ih²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ'drm_bridge_get_next_bridge (C function)”Œc.drm_bridge_get_next_bridge”hNt”auh1j† hj­Ih²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒJstruct drm_bridge * drm_bridge_get_next_bridge (struct drm_bridge *bridge)”h]”j¤ )�”}”(hŒHstruct drm_bridge *drm_bridge_get_next_bridge(struct drm_bridge *bridge)”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj~h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Müubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(~h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj~h²hh³j'~h´Müubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_bridge”h]”hŒ drm_bridge”…”�”}”(hj9~h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj6~ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j;~Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jŒdrm_bridge_get_next_bridge”sbŒc.drm_bridge_get_next_bridge”†”asbuh1hhj~h²hh³j'~h´Müubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZ~h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj~h²hh³j'~h´Müubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjh~h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj~h²hh³j'~h´MüubjÍ )�”}”(hŒdrm_bridge_get_next_bridge”h]”jÓ )�”}”(hjW~h]”hŒdrm_bridge_get_next_bridge”…”�”}”(hjy~h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hju~ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj~h²hh³j'~h´MüubjÞ)�”}”(hŒ(struct drm_bridge *bridge)”h]”jä)�”}”(hŒstruct drm_bridge *bridge”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Œ drm_bridge”h]”hŒ drm_bridge”…”�”}”(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ï ]”jU~Œc.drm_bridge_get_next_bridge”†”asbuh1hhj�~ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÐ~h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj�~ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÞ~h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�~ubjÓ )�”}”(hŒbridge”h]”hŒbridge”…”�”}”(hjë~h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj�~ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjŒ~ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj~h²hh³j'~h´Müubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ Get the next bridge in the chain”h]”hŒ Get the next bridge in the chain”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mühjh²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²hhj­Ih³Nh´Nubj) )�”}”(hX©**Parameters** ``struct drm_bridge *bridge`` bridge object **Description** The caller is responsible of having a reference to **bridge** via drm_bridge_get() or equivalent. This function leaves the refcount of **bridge** unmodified. The refcount of the returned bridge is incremented. Use drm_bridge_put() when done with it. **Return** the next bridge in the chain after **bridge**, or NULL if **bridge** is the last.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj7h]”hŒ Parameters”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mhj1ubjw )�”}”(hhh]”j| )�”}”(hŒ,``struct drm_bridge *bridge`` bridge object ”h]”(j‚ )�”}”(hŒ``struct drm_bridge *bridge``”h]”jˆ )�”}”(hjVh]”hŒstruct drm_bridge *bridge”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjTubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MýhjPubjž )�”}”(hhh]”hÎ)�”}”(hŒ bridge object”h]”hŒ bridge object”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jkh´Mýhjlubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjPubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jkh´MýhjMubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj1ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj‘h]”hŒ Description”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mÿhj1ubhÎ)�”}”(hŒ�The caller is responsible of having a reference to **bridge** via drm_bridge_get() or equivalent. This function leaves the refcount of **bridge** unmodified.”h]”(hŒ3The caller is responsible of having a reference to ”…”�”}”(hj§h²hh³Nh´Nubj3 )�”}”(hŒ **bridge**”h]”hŒbridge”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj§ubhŒJ via drm_bridge_get() or equivalent. This function leaves the refcount of ”…”�”}”(hj§h²hh³Nh´Nubj3 )�”}”(hŒ **bridge**”h]”hŒbridge”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj§ubhŒ unmodified.”…”�”}”(hj§h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mþhj1ubhÎ)�”}”(hŒ[The refcount of the returned bridge is incremented. Use drm_bridge_put() when done with it.”h]”hŒ[The refcount of the returned bridge is incremented. Use drm_bridge_put() when done with it.”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mhj1ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjëh]”hŒReturn”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjéubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mhj1ubhÎ)�”}”(hŒQthe next bridge in the chain after **bridge**, or NULL if **bridge** is the last.”h]”(hŒ#the next bridge in the chain after ”…”�”}”(hj€h²hh³Nh´Nubj3 )�”}”(hŒ **bridge**”h]”hŒbridge”…”�”}”(hj €h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj€ubhŒ , or NULL if ”…”�”}”(hj€h²hh³Nh´Nubj3 )�”}”(hŒ **bridge**”h]”hŒbridge”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj€ubhŒ is the last.”…”�”}”(hj€h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mhj1ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj­Ih²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ'drm_bridge_get_prev_bridge (C function)”Œc.drm_bridge_get_prev_bridge”hNt”auh1j† hj­Ih²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒJstruct drm_bridge * drm_bridge_get_prev_bridge (struct drm_bridge *bridge)”h]”j¤ )�”}”(hŒHstruct drm_bridge *drm_bridge_get_prev_bridge(struct drm_bridge *bridge)”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjT€h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjP€h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjb€h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjP€h²hh³ja€h´Mubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_bridge”h]”hŒ drm_bridge”…”�”}”(hjs€h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjp€ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”ju€Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jŒdrm_bridge_get_prev_bridge”sbŒc.drm_bridge_get_prev_bridge”†”asbuh1hhjP€h²hh³ja€h´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”€h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjP€h²hh³ja€h´Mubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj¢€h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjP€h²hh³ja€h´MubjÍ )�”}”(hŒdrm_bridge_get_prev_bridge”h]”jÓ )�”}”(hj‘€h]”hŒdrm_bridge_get_prev_bridge”…”�”}”(hj³€h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¯€ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjP€h²hh³ja€h´MubjÞ)�”}”(hŒ(struct drm_bridge *bridge)”h]”jä)�”}”(hŒstruct drm_bridge *bridge”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Œ drm_bridge”h]”hŒ drm_bridge”…”�”}”(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.drm_bridge_get_prev_bridge”†”asbuh1hhjÊ€ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj �h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÊ€ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÊ€ubjÓ )�”}”(hŒbridge”h]”hŒbridge”…”�”}”(hj%�h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÊ€ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÆ€ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjP€h²hh³ja€h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjL€h²hh³ja€h´Mubah}”(h]”jG€ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³ja€h´MhjI€h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ$Get the previous bridge in the chain”h]”hŒ$Get the previous bridge in the chain”…”�”}”(hjO�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MhjL�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjI€h²hh³ja€h´Mubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jg�j$ jg�j% ‰j& ‰j' ‰uh1j˜ h²hhj­Ih³Nh´Nubj) )�”}”(hX�**Parameters** ``struct drm_bridge *bridge`` bridge object **Description** The caller is responsible of having a reference to **bridge** via drm_bridge_get() or equivalent. This function leaves the refcount of **bridge** unmodified. The refcount of the returned bridge is incremented. Use drm_bridge_put() when done with it. **Return** the previous bridge in the chain, or NULL if **bridge** is the first.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjq�h]”hŒ Parameters”…”�”}”(hjs�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjo�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mhjk�ubjw )�”}”(hhh]”j| )�”}”(hŒ,``struct drm_bridge *bridge`` bridge object ”h]”(j‚ )�”}”(hŒ``struct drm_bridge *bridge``”h]”jˆ )�”}”(hj��h]”hŒstruct drm_bridge *bridge”…”�”}”(hj’�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjŽ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MhjŠ�ubjž )�”}”(hhh]”hÎ)�”}”(hŒ bridge object”h]”hŒ bridge object”…”�”}”(hj©�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¥�h´Mhj¦�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjŠ�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¥�h´Mhj‡�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjk�ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjË�h]”hŒ Description”…”�”}”(hjÍ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÉ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mhjk�ubhÎ)�”}”(hŒ�The caller is responsible of having a reference to **bridge** via drm_bridge_get() or equivalent. This function leaves the refcount of **bridge** unmodified.”h]”(hŒ3The caller is responsible of having a reference to ”…”�”}”(hjá�h²hh³Nh´Nubj3 )�”}”(hŒ **bridge**”h]”hŒbridge”…”�”}”(hjé�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjá�ubhŒJ via drm_bridge_get() or equivalent. This function leaves the refcount of ”…”�”}”(hjá�h²hh³Nh´Nubj3 )�”}”(hŒ **bridge**”h]”hŒbridge”…”�”}”(hjû�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjá�ubhŒ unmodified.”…”�”}”(hjá�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mhjk�ubhÎ)�”}”(hŒ[The refcount of the returned bridge is incremented. Use drm_bridge_put() when done with it.”h]”hŒ[The refcount of the returned bridge is incremented. Use drm_bridge_put() when done with it.”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mhjk�ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj%‚h]”hŒReturn”…”�”}”(hj'‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj#‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mhjk�ubhÎ)�”}”(hŒEthe previous bridge in the chain, or NULL if **bridge** is the first.”h]”(hŒ-the previous bridge in the chain, or NULL if ”…”�”}”(hj;‚h²hh³Nh´Nubj3 )�”}”(hŒ **bridge**”h]”hŒbridge”…”�”}”(hjC‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj;‚ubhŒ is the first.”…”�”}”(hj;‚h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mhjk�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj­Ih²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ.drm_bridge_chain_get_first_bridge (C function)”Œ#c.drm_bridge_chain_get_first_bridge”hNt”auh1j† hj­Ih²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒSstruct drm_bridge * drm_bridge_chain_get_first_bridge (struct drm_encoder *encoder)”h]”j¤ )�”}”(hŒQstruct drm_bridge *drm_bridge_chain_get_first_bridge(struct drm_encoder *encoder)”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj|‚h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjx‚h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M*ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠ‚h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjx‚h²hh³j‰‚h´M*ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_bridge”h]”hŒ drm_bridge”…”�”}”(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Œ!drm_bridge_chain_get_first_bridge”sbŒ#c.drm_bridge_chain_get_first_bridge”†”asbuh1hhjx‚h²hh³j‰‚h´M*ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼‚h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjx‚h²hh³j‰‚h´M*ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÊ‚h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjx‚h²hh³j‰‚h´M*ubjÍ )�”}”(hŒ!drm_bridge_chain_get_first_bridge”h]”jÓ )�”}”(hj¹‚h]”hŒ!drm_bridge_chain_get_first_bridge”…”�”}”(hjÛ‚h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjׂubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjx‚h²hh³j‰‚h´M*ubjÞ)�”}”(hŒ(struct drm_encoder *encoder)”h]”jä)�”}”(hŒstruct drm_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Œ drm_encoder”h]”hŒ drm_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·‚Œ#c.drm_bridge_chain_get_first_bridge”†”asbuh1hhjò‚ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2ƒh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjò‚ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj@ƒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjò‚ubjÓ )�”}”(hŒencoder”h]”hŒencoder”…”�”}”(hjMƒh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjò‚ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjî‚ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjx‚h²hh³j‰‚h´M*ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjt‚h²hh³j‰‚h´M*ubah}”(h]”jo‚ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j‰‚h´M*hjq‚h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ!Get the first bridge in the chain”h]”hŒ!Get the first bridge in the chain”…”�”}”(hjwƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M*hjtƒh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjq‚h²hh³j‰‚h´M*ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j�ƒj$ j�ƒj% ‰j& ‰j' ‰uh1j˜ h²hhj­Ih³Nh´Nubj) )�”}”(hX**Parameters** ``struct drm_encoder *encoder`` encoder object **Description** The refcount of the returned bridge is incremented. Use drm_bridge_put() when done with it. **Return** the first bridge in the chain, or NULL if **encoder** has no bridge attached to it.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj™ƒh]”hŒ Parameters”…”�”}”(hj›ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj—ƒubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M.hj“ƒubjw )�”}”(hhh]”j| )�”}”(hŒ/``struct drm_encoder *encoder`` encoder object ”h]”(j‚ )�”}”(hŒ``struct drm_encoder *encoder``”h]”jˆ )�”}”(hj¸ƒh]”hŒstruct drm_encoder *encoder”…”�”}”(hjºƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¶ƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M+hj²ƒubjž )�”}”(hhh]”hÎ)�”}”(hŒencoder object”h]”hŒencoder object”…”�”}”(hjуh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j̓h´M+hj΃ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj²ƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j̓h´M+hj¯ƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj“ƒubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjóƒh]”hŒ Description”…”�”}”(hjõƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjñƒubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M-hj“ƒubhÎ)�”}”(hŒ[The refcount of the returned bridge is incremented. Use drm_bridge_put() when done with it.”h]”hŒ[The refcount of the returned bridge is incremented. Use drm_bridge_put() when done with it.”…”�”}”(hj „h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M,hj“ƒubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj„h]”hŒReturn”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M/hj“ƒubhÎ)�”}”(hŒSthe first bridge in the chain, or NULL if **encoder** has no bridge attached to it.”h]”(hŒ*the first bridge in the chain, or NULL if ”…”�”}”(hj0„h²hh³Nh´Nubj3 )�”}”(hŒ **encoder**”h]”hŒencoder”…”�”}”(hj8„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj0„ubhŒ has no bridge attached to it.”…”�”}”(hj0„h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M0hj“ƒubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj­Ih²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ-drm_bridge_chain_get_last_bridge (C function)”Œ"c.drm_bridge_chain_get_last_bridge”hNt”auh1j† hj­Ih²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒRstruct drm_bridge * drm_bridge_chain_get_last_bridge (struct drm_encoder *encoder)”h]”j¤ )�”}”(hŒPstruct drm_bridge *drm_bridge_chain_get_last_bridge(struct drm_encoder *encoder)”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjq„h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjm„h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M<ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjm„h²hh³j~„h´M<ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_bridge”h]”hŒ drm_bridge”…”�”}”(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Œ drm_bridge_chain_get_last_bridge”sbŒ"c.drm_bridge_chain_get_last_bridge”†”asbuh1hhjm„h²hh³j~„h´M<ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±„h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjm„h²hh³j~„h´M<ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj¿„h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjm„h²hh³j~„h´M<ubjÍ )�”}”(hŒ drm_bridge_chain_get_last_bridge”h]”jÓ )�”}”(hj®„h]”hŒ drm_bridge_chain_get_last_bridge”…”�”}”(hjЄh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÌ„ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjm„h²hh³j~„h´M<ubjÞ)�”}”(hŒ(struct drm_encoder *encoder)”h]”jä)�”}”(hŒstruct drm_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Œ drm_encoder”h]”hŒ drm_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¬„Œ"c.drm_bridge_chain_get_last_bridge”†”asbuh1hhjç„ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'…h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjç„ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj5…h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjç„ubjÓ )�”}”(hŒencoder”h]”hŒencoder”…”�”}”(hjB…h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjç„ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjã„ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjm„h²hh³j~„h´M<ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hji„h²hh³j~„h´M<ubah}”(h]”jd„ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j~„h´M<hjf„h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ Get the last bridge in the chain”h]”hŒ Get the last bridge in the chain”…”�”}”(hjl…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M<hji…h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjf„h²hh³j~„h´M<ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j„…j$ j„…j% ‰j& ‰j' ‰uh1j˜ h²hhj­Ih³Nh´Nubj) )�”}”(hX**Parameters** ``struct drm_encoder *encoder`` encoder object **Description** The refcount of the returned bridge is incremented. Use drm_bridge_put() when done with it. **Return** the last bridge in the chain, or NULL if **encoder** has no bridge attached to it.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjŽ…h]”hŒ Parameters”…”�”}”(hj�…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjŒ…ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M@hjˆ…ubjw )�”}”(hhh]”j| )�”}”(hŒ/``struct drm_encoder *encoder`` encoder object ”h]”(j‚ )�”}”(hŒ``struct drm_encoder *encoder``”h]”jˆ )�”}”(hj­…h]”hŒstruct drm_encoder *encoder”…”�”}”(hj¯…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj«…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M=hj§…ubjž )�”}”(hhh]”hÎ)�”}”(hŒencoder object”h]”hŒencoder object”…”�”}”(hjÆ…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÂ…h´M=hjÃ…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj§…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÂ…h´M=hj¤…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjˆ…ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjè…h]”hŒ Description”…”�”}”(hjê…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjæ…ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M?hjˆ…ubhÎ)�”}”(hŒ[The refcount of the returned bridge is incremented. Use drm_bridge_put() when done with it.”h]”hŒ[The refcount of the returned bridge is incremented. Use drm_bridge_put() when done with it.”…”�”}”(hjþ…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M>hjˆ…ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj†h]”hŒReturn”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj †ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MAhjˆ…ubhÎ)�”}”(hŒRthe last bridge in the chain, or NULL if **encoder** has no bridge attached to it.”h]”(hŒ)the last bridge in the chain, or NULL if ”…”�”}”(hj%†h²hh³Nh´Nubj3 )�”}”(hŒ **encoder**”h]”hŒencoder”…”�”}”(hj-†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj%†ubhŒ has no bridge attached to it.”…”�”}”(hj%†h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MBhjˆ…ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj­Ih²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ&drm_for_each_bridge_in_chain (C macro)”Œc.drm_for_each_bridge_in_chain”hNt”auh1j† hj­Ih²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒdrm_for_each_bridge_in_chain”h]”j¤ )�”}”(hŒdrm_for_each_bridge_in_chain”h]”jÍ )�”}”(hŒdrm_for_each_bridge_in_chain”h]”jÓ )�”}”(hj`†h]”hŒdrm_for_each_bridge_in_chain”…”�”}”(hjj†h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjf†ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjb†h²hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mmubah}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj^†h²hh³j}†h´Mmubah}”(h]”jY†ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j}†h´Mmhj[†h²hubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j hj[†h²hh³j}†h´Mmubeh}”(h]”h ]”(j Œmacro”eh"]”h$]”h&]”j" j j# j–†j$ j–†j% ‰j& ‰j' ‰uh1j˜ h²hhj­Ih³Nh´NubhÎ)�”}”(hŒ2``drm_for_each_bridge_in_chain (encoder, bridge)``”h]”jˆ )�”}”(hjœ†h]”hŒ.drm_for_each_bridge_in_chain (encoder, bridge)”…”�”}”(hjž†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjš†ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mohj­Ih²hubj^E)�”}”(hŒ0iterate over all bridges attached to an encoder ”h]”hÎ)�”}”(hŒ/iterate over all bridges attached to an encoder”h]”hŒ/iterate over all bridges attached to an encoder”…”�”}”(hj¶†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mmhj²†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]Eh³jĆh´Mmhj­Ih²hubj) )�”}”(hX‰**Parameters** ``encoder`` the encoder to iterate bridges on ``bridge`` a bridge pointer updated to point to the current bridge at each iteration **Description** Iterate over all bridges present in the bridge chain attached to **encoder**. Automatically gets/puts the bridge reference while iterating and locks the encoder chain mutex to prevent chain modifications while iterating.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjцh]”hŒ Parameters”…”�”}”(hjÓ†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjφubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mqhjˆubjw )�”}”(hhh]”(j| )�”}”(hŒ.``encoder`` the encoder to iterate bridges on ”h]”(j‚ )�”}”(hŒ ``encoder``”h]”jˆ )�”}”(hjð†h]”hŒencoder”…”�”}”(hjò†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjî†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mnhjê†ubjž )�”}”(hhh]”hÎ)�”}”(hŒ!the encoder to iterate bridges on”h]”hŒ!the encoder to iterate bridges on”…”�”}”(hj ‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j‡h´Mnhj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjê†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j‡h´Mnhjç†ubj| )�”}”(hŒU``bridge`` a bridge pointer updated to point to the current bridge at each iteration ”h]”(j‚ )�”}”(hŒ ``bridge``”h]”jˆ )�”}”(hj)‡h]”hŒbridge”…”�”}”(hj+‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj'‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mphj#‡ubjž )�”}”(hhh]”hÎ)�”}”(hŒIa bridge pointer updated to point to the current bridge at each iteration”h]”hŒIa bridge pointer updated to point to the current bridge at each iteration”…”�”}”(hjB‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mohj?‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj#‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j>‡h´Mphjç†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjˆubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hje‡h]”hŒ Description”…”�”}”(hjg‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjc‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MrhjˆubhÎ)�”}”(hŒMIterate over all bridges present in the bridge chain attached to **encoder**.”h]”(hŒAIterate over all bridges present in the bridge chain attached to ”…”�”}”(hj{‡h²hh³Nh´Nubj3 )�”}”(hŒ **encoder**”h]”hŒencoder”…”�”}”(hjƒ‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj{‡ubhŒ.”…”�”}”(hj{‡h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MqhjˆubhÎ)�”}”(hŒŽAutomatically gets/puts the bridge reference while iterating and locks the encoder chain mutex to prevent chain modifications while iterating.”h]”hŒŽAutomatically gets/puts the bridge reference while iterating and locks the encoder chain mutex to prevent chain modifications while iterating.”…”�”}”(hjœ‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mshjˆubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj­Ih²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ+drm_for_each_bridge_in_chain_from (C macro)”Œ#c.drm_for_each_bridge_in_chain_from”hNt”auh1j† hj­Ih²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ!drm_for_each_bridge_in_chain_from”h]”j¤ )�”}”(hŒ!drm_for_each_bridge_in_chain_from”h]”jÍ )�”}”(hŒ!drm_for_each_bridge_in_chain_from”h]”jÓ )�”}”(hjŇh]”hŒ!drm_for_each_bridge_in_chain_from”…”�”}”(hjχh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjˇubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjLJh²hh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mˆubah}”(h]”h ]”h"]”h$]”h&]”jê jë 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]”h ]”h"]”h$]”h&]”uh1j hjÀ‡h²hh³jâ‡h´Mˆubeh}”(h]”h ]”(j Œmacro”eh"]”h$]”h&]”j" j j# jû‡j$ jû‡j% ‰j& ‰j' ‰uh1j˜ h²hhj­Ih³Nh´NubhÎ)�”}”(hŒ<``drm_for_each_bridge_in_chain_from (first_bridge, bridge)``”h]”jˆ )�”}”(hjˆh]”hŒ8drm_for_each_bridge_in_chain_from (first_bridge, bridge)”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÿ‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MŠhj­Ih²hubj^E)�”}”(hŒ8iterate over all bridges starting from the given bridge ”h]”hÎ)�”}”(hŒ7iterate over all bridges starting from the given bridge”h]”hŒ7iterate over all bridges starting from the given bridge”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´Mˆhjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j]Eh³j)ˆh´Mˆhj­Ih²hubj) )�”}”(hX�**Parameters** ``first_bridge`` the bridge to start from ``bridge`` a bridge pointer updated to point to the current bridge at each iteration **Description** Iterate over all bridges in the encoder chain starting from **first_bridge**, included. Automatically gets/puts the bridge reference while iterating and locks the encoder chain mutex to prevent chain modifications while iterating.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj6ˆh]”hŒ Parameters”…”�”}”(hj8ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj4ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MŒhj0ˆubjw )�”}”(hhh]”(j| )�”}”(hŒ*``first_bridge`` the bridge to start from ”h]”(j‚ )�”}”(hŒ``first_bridge``”h]”jˆ )�”}”(hjUˆh]”hŒ first_bridge”…”�”}”(hjWˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjSˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MŠhjOˆubjž )�”}”(hhh]”hÎ)�”}”(hŒthe bridge to start from”h]”hŒthe bridge to start from”…”�”}”(hjnˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jjˆh´MŠhjkˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjOˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jjˆh´MŠhjLˆubj| )�”}”(hŒU``bridge`` a bridge pointer updated to point to the current bridge at each iteration ”h]”(j‚ )�”}”(hŒ ``bridge``”h]”jˆ )�”}”(hjŽˆh]”hŒbridge”…”�”}”(hj�ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjŒˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MŒhjˆˆubjž )�”}”(hhh]”hÎ)�”}”(hŒIa bridge pointer updated to point to the current bridge at each iteration”h]”hŒIa bridge pointer updated to point to the current bridge at each iteration”…”�”}”(hj§ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´M‹hj¤ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjˆˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j£ˆh´MŒhjLˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj0ˆubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjʈh]”hŒ Description”…”�”}”(hj̈h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjȈubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ]/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:190: ./include/drm/drm_bridge.h”h´MŽhj0ˆubhÎ)�”}”(hŒWIterate over all bridges in the encoder chain starting from **first_bridge**, included.”h]”(hŒ‰h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj,‰h²hh³j=‰h´KùubjÍ )�”}”(hŒdrm_bridge_enter”h]”jÓ )�”}”(hŒdrm_bridge_enter”h]”hŒdrm_bridge_enter”…”�”}”(hjP‰h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjL‰ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj,‰h²hh³j=‰h´KùubjÞ)�”}”(hŒ%(struct drm_bridge *bridge, int *idx)”h]”(jä)�”}”(hŒstruct drm_bridge *bridge”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjl‰h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjh‰ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjy‰h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjh‰ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_bridge”h]”hŒ drm_bridge”…”�”}”(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%)�”}”jjR‰sbŒc.drm_bridge_enter”†”asbuh1hhjh‰ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjª‰h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjh‰ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj¸‰h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjh‰ubjÓ )�”}”(hŒbridge”h]”hŒbridge”…”�”}”(hjʼnh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjh‰ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjd‰ubjä)�”}”(hŒint *idx”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(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Ú‰ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjú‰h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÚ‰ubjÓ )�”}”(hŒidx”h]”hŒidx”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÚ‰ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjd‰ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj,‰h²hh³j=‰h´Kùubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ!Enter DRM bridge critical section”h]”hŒ!Enter DRM bridge critical section”…”�”}”(hj1Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.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# jIŠj$ jIŠj% ‰j& ‰j' ‰uh1j˜ h²hhj­Ih³Nh´Nubj) )�”}”(hX¼**Parameters** ``struct drm_bridge *bridge`` DRM bridge ``int *idx`` Pointer to index that will be passed to the matching drm_bridge_exit() **Description** This function marks and protects the beginning of a section that should not be entered after the bridge has been unplugged. The section end is marked with drm_bridge_exit(). Calls to this function can be nested. **Return** True if it is OK to enter the section, false otherwise.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjSŠh]”hŒ Parameters”…”�”}”(hjUŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjQŠubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´KýhjMŠubjw )�”}”(hhh]”(j| )�”}”(hŒ)``struct drm_bridge *bridge`` DRM bridge ”h]”(j‚ )�”}”(hŒ``struct drm_bridge *bridge``”h]”jˆ )�”}”(hjrŠh]”hŒstruct drm_bridge *bridge”…”�”}”(hjtŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjpŠubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´KúhjlŠubjž )�”}”(hhh]”hÎ)�”}”(hŒ DRM bridge”h]”hŒ DRM bridge”…”�”}”(hj‹Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j‡Šh´KúhjˆŠubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjlŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j‡Šh´KúhjiŠubj| )�”}”(hŒT``int *idx`` Pointer to index that will be passed to the matching drm_bridge_exit() ”h]”(j‚ )�”}”(hŒ ``int *idx``”h]”jˆ )�”}”(hj«Šh]”hŒint *idx”…”�”}”(hj­Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj©Šubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Kûhj¥Šubjž )�”}”(hhh]”hÎ)�”}”(hŒFPointer to index that will be passed to the matching drm_bridge_exit()”h]”hŒFPointer to index that will be passed to the matching drm_bridge_exit()”…”�”}”(hjÄŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÀŠh´KûhjÁŠubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¥Šubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÀŠh´KûhjiŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjMŠubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjæŠh]”hŒ Description”…”�”}”(hjèŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjäŠubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´KýhjMŠubhÎ)�”}”(hŒÓThis function marks and protects the beginning of a section that should not be entered after the bridge has been unplugged. The section end is marked with drm_bridge_exit(). Calls to this function can be nested.”h]”hŒÓThis function marks and protects the beginning of a section that should not be entered after the bridge has been unplugged. The section end is marked with drm_bridge_exit(). Calls to this function can be nested.”…”�”}”(hjüŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´KühjMŠubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj ‹h]”hŒReturn”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj ‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MhjMŠubhÎ)�”}”(hŒ7True if it is OK to enter the section, false otherwise.”h]”hŒ7True if it is OK to enter the section, false otherwise.”…”�”}”(hj#‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MhjMŠubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj­Ih²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_bridge_exit (C function)”Œc.drm_bridge_exit”hNt”auh1j† hj­Ih²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒvoid drm_bridge_exit (int idx)”h]”j¤ )�”}”(hŒvoid drm_bridge_exit(int idx)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”•6}”(hjR‹h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjN‹h²hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hja‹h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjN‹h²hh³j`‹h´MubjÍ )�”}”(hŒdrm_bridge_exit”h]”jÓ )�”}”(hŒdrm_bridge_exit”h]”hŒdrm_bridge_exit”…”�”}”(hjs‹h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjo‹ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjN‹h²hh³j`‹h´MubjÞ)�”}”(hŒ (int idx)”h]”jä)�”}”(hŒint idx”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(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Œidx”h]”hŒidx”…”�”}”(hj«‹h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj‹‹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj‡‹ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjN‹h²hh³j`‹h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjJ‹h²hh³j`‹h´Mubah}”(h]”jE‹ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j`‹h´MhjG‹h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ Exit DRM bridge critical section”h]”hŒ Exit DRM bridge critical section”…”�”}”(hjÕ‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MhjÒ‹h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjG‹h²hh³j`‹h´Mubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jí‹j$ jí‹j% ‰j& ‰j' ‰uh1j˜ h²hhj­Ih³Nh´Nubj) )�”}”(hŒ½**Parameters** ``int idx`` index returned by drm_bridge_enter() **Description** This function marks the end of a section that should not be entered after the bridge has been unplugged.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj÷‹h]”hŒ Parameters”…”�”}”(hjù‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjõ‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Mhjñ‹ubjw )�”}”(hhh]”j| )�”}”(hŒ1``int idx`` index returned by drm_bridge_enter() ”h]”(j‚ )�”}”(hŒ ``int idx``”h]”jˆ )�”}”(hjŒh]”hŒint idx”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjŒubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MhjŒubjž )�”}”(hhh]”hÎ)�”}”(hŒ$index returned by drm_bridge_enter()”h]”hŒ$index returned by drm_bridge_enter()”…”�”}”(hj/Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j+Œh´Mhj,Œubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j+Œh´Mhj Œubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjñ‹ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjQŒh]”hŒ Description”…”�”}”(hjSŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjOŒubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Mhjñ‹ubhÎ)�”}”(hŒhThis function marks the end of a section that should not be entered after the bridge has been unplugged.”h]”hŒhThis function marks the end of a section that should not be entered after the bridge has been unplugged.”…”�”}”(hjgŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Mhjñ‹ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj­Ih²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_bridge_unplug (C function)”Œc.drm_bridge_unplug”hNt”auh1j† hj­Ih²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ2void drm_bridge_unplug (struct drm_bridge *bridge)”h]”j¤ )�”}”(hŒ1void drm_bridge_unplug(struct drm_bridge *bridge)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj–Œh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj’Œh²hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥Œh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj’Œh²hh³j¤Œh´MubjÍ )�”}”(hŒdrm_bridge_unplug”h]”jÓ )�”}”(hŒdrm_bridge_unplug”h]”hŒdrm_bridge_unplug”…”�”}”(hj·Œh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj³Œubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj’Œh²hh³j¤Œh´MubjÞ)�”}”(hŒ(struct drm_bridge *bridge)”h]”jä)�”}”(hŒstruct drm_bridge *bridge”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Œ drm_bridge”h]”hŒ drm_bridge”…”�”}”(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%)�”}”jj¹ŒsbŒc.drm_bridge_unplug”†”asbuh1hhjÏŒubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÏŒubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÏŒubjÓ )�”}”(hŒbridge”h]”hŒbridge”…”�”}”(hj,�h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÏŒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjËŒubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj’Œh²hh³j¤Œh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjŽŒh²hh³j¤Œh´Mubah}”(h]”j‰Œah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j¤Œh´Mhj‹Œh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ0declare a DRM bridge was unplugged and remove it”h]”hŒ0declare a DRM bridge was unplugged and remove it”…”�”}”(hjV�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MhjS�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj‹Œh²hh³j¤Œh´Mubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jn�j$ jn�j% ‰j& ‰j' ‰uh1j˜ h²hhj­Ih³Nh´Nubj) )�”}”(hXK**Parameters** ``struct drm_bridge *bridge`` DRM bridge **Description** This tells the bridge has been physically unplugged and no operations on device resources must be done anymore. Entry-points can use drm_bridge_enter() and drm_bridge_exit() to protect device resources in a race free manner. Also unregisters the bridge.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjx�h]”hŒ Parameters”…”�”}”(hjz�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjv�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M#hjr�ubjw )�”}”(hhh]”j| )�”}”(hŒ)``struct drm_bridge *bridge`` DRM bridge ”h]”(j‚ )�”}”(hŒ``struct drm_bridge *bridge``”h]”jˆ )�”}”(hj—�h]”hŒstruct drm_bridge *bridge”…”�”}”(hj™�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj•�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M hj‘�ubjž )�”}”(hhh]”hÎ)�”}”(hŒ DRM bridge”h]”hŒ DRM bridge”…”�”}”(hj°�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¬�h´M hj­�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj‘�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¬�h´M hjŽ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjr�ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjÒ�h]”hŒ Description”…”�”}”(hjÔ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÐ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M"hjr�ubhÎ)�”}”(hŒàThis tells the bridge has been physically unplugged and no operations on device resources must be done anymore. Entry-points can use drm_bridge_enter() and drm_bridge_exit() to protect device resources in a race free manner.”h]”hŒàThis tells the bridge has been physically unplugged and no operations on device resources must be done anymore. Entry-points can use drm_bridge_enter() and drm_bridge_exit() to protect device resources in a race free manner.”…”�”}”(hjè�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M!hjr�ubhÎ)�”}”(hŒAlso unregisters the bridge.”h]”hŒAlso unregisters the bridge.”…”�”}”(hj÷�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M&hjr�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj­Ih²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_bridge_get (C function)”Œc.drm_bridge_get”hNt”auh1j† hj­Ih²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ>struct drm_bridge * drm_bridge_get (struct drm_bridge *bridge)”h]”j¤ )�”}”(hŒ�sbŒc.drm_bridge_put”†”asbuh1hhjT�ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–�h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjT�ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj¤�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjT�ubjÓ )�”}”(hŒbridge”h]”hŒbridge”…”�”}”(hj±�h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjT�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjP�ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj�h²hh³j)�h´MVubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj�h²hh³j)�h´MVubah}”(h]”j�ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j)�h´MVhj�h²hubj )�”}”(hhh]”hÎ)�”}”(hŒRelease a bridge reference”h]”hŒRelease a bridge reference”…”�”}”(hjÛ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MVhjØ�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj�h²hh³j)�h´MVubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jó�j$ jó�j% ‰j& ‰j' ‰uh1j˜ h²hhj­Ih³Nh´Nubj) )�”}”(hX@**Parameters** ``struct drm_bridge *bridge`` DRM bridge; if NULL or an ERR_PTR this function does nothing **Description** This function decrements the bridge's reference count and frees the object if the reference count drops to zero. See also drm_bridge_clear_and_put() if you also need to set the pointer to NULL”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjý�h]”hŒ Parameters”…”�”}”(hjÿ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjû�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MZhj÷�ubjw )�”}”(hhh]”j| )�”}”(hŒ[``struct drm_bridge *bridge`` DRM bridge; if NULL or an ERR_PTR this function does nothing ”h]”(j‚ )�”}”(hŒ``struct drm_bridge *bridge``”h]”jˆ )�”}”(hj‘h]”hŒstruct drm_bridge *bridge”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MWhj‘ubjž )�”}”(hhh]”hÎ)�”}”(hŒ“h²hh³Nh´Nubjˆ )�”}”(hŒ``drm_bridge *some_bridge``”h]”hŒdrm_bridge *some_bridge”…”�”}”(hjF“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj>“ubhŒ , this code:”…”�”}”(hj>“h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Mqhj”’ubjN )�”}”(hŒ'drm_bridge_clear_and_put(&some_bridge);”h]”hŒ'drm_bridge_clear_and_put(&some_bridge);”…”�”}”hj_“sbah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jM h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Mshj”’ubhÎ)�”}”(hŒ#is equivalent to the more complex::”h]”hŒ"is equivalent to the more complex:”…”�”}”(hjn“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Muhj”’ubjN )�”}”(hŒPstruct drm_bridge *temp = some_bridge; some_bridge = NULL; drm_bridge_put(temp);”h]”hŒPstruct drm_bridge *temp = some_bridge; some_bridge = NULL; drm_bridge_put(temp);”…”�”}”hj}“sbah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jM h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Mwhj”’ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj­Ih²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_bridge_add (C function)”Œc.drm_bridge_add”hNt”auh1j† hj­Ih²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ/void drm_bridge_add (struct drm_bridge *bridge)”h]”j¤ )�”}”(hŒ.void drm_bridge_add(struct drm_bridge *bridge)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¬“h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj¨“h²hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.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Œdrm_bridge_add”h]”jÓ )�”}”(hŒdrm_bridge_add”h]”hŒdrm_bridge_add”…”�”}”(hjÍ“h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÉ“ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj¨“h²hh³jº“h´M³ubjÞ)�”}”(hŒ(struct drm_bridge *bridge)”h]”jä)�”}”(hŒstruct drm_bridge *bridge”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Œ drm_bridge”h]”hŒ drm_bridge”…”�”}”(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%)�”}”jjÏ“sbŒc.drm_bridge_add”†”asbuh1hhjå“ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'”h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjå“ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj5”h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjå“ubjÓ )�”}”(hŒbridge”h]”hŒbridge”…”�”}”(hjB”h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjå“ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjá“ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj¨“h²hh³jº“h´M³ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œregister a bridge”h]”hŒregister a bridge”…”�”}”(hjl”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M³hji”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²hhj­Ih³Nh´Nubj) )�”}”(hX**Parameters** ``struct drm_bridge *bridge`` bridge control structure **Description** Add the given bridge to the global list of bridges, where they can be found by users via of_drm_find_and_get_bridge(). The bridge to be added must have been allocated by devm_drm_bridge_alloc().”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjŽ”h]”hŒ Parameters”…”�”}”(hj�”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjŒ”ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M·hjˆ”ubjw )�”}”(hhh]”j| )�”}”(hŒ7``struct drm_bridge *bridge`` bridge control structure ”h]”(j‚ )�”}”(hŒ``struct drm_bridge *bridge``”h]”jˆ )�”}”(hj­”h]”hŒstruct drm_bridge *bridge”…”�”}”(hj¯”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj«”ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Mµhj§”ubjž )�”}”(hhh]”hÎ)�”}”(hŒbridge control structure”h]”hŒbridge control structure”…”�”}”(hjÆ”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j”h´MµhjÔubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj§”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j”h´Mµhj¤”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjˆ”ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjè”h]”hŒ Description”…”�”}”(hjê”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjæ”ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M·hjˆ”ubhÎ)�”}”(hŒvAdd the given bridge to the global list of bridges, where they can be found by users via of_drm_find_and_get_bridge().”h]”hŒvAdd the given bridge to the global list of bridges, where they can be found by users via of_drm_find_and_get_bridge().”…”�”}”(hjþ”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M¶hjˆ”ubhÎ)�”}”(hŒKThe bridge to be added must have been allocated by devm_drm_bridge_alloc().”h]”hŒKThe bridge to be added must have been allocated by devm_drm_bridge_alloc().”…”�”}”(hj •h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M¹hjˆ”ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj­Ih²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ devm_drm_bridge_add (C function)”Œc.devm_drm_bridge_add”hNt”auh1j† hj­Ih²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒGint devm_drm_bridge_add (struct device *dev, struct drm_bridge *bridge)”h]”j¤ )�”}”(hŒFint devm_drm_bridge_add(struct device *dev, struct drm_bridge *bridge)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj<•h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj8•h²hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Máubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjK•h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj8•h²hh³jJ•h´MáubjÍ )�”}”(hŒdevm_drm_bridge_add”h]”jÓ )�”}”(hŒdevm_drm_bridge_add”h]”hŒdevm_drm_bridge_add”…”�”}”(hj]•h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjY•ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj8•h²hh³jJ•h´MáubjÞ)�”}”(hŒ/(struct device *dev, struct drm_bridge *bridge)”h]”(jä)�”}”(hŒstruct device *dev”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjy•h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hju•ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†•h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hju•ubh)�”}”(hhh]”jÓ )�”}”(hŒdevice”h]”hŒdevice”…”�”}”(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%)�”}”jj_•sbŒc.devm_drm_bridge_add”†”asbuh1hhju•ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·•h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hju•ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÅ•h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hju•ubjÓ )�”}”(hŒdev”h]”hŒdev”…”�”}”(hjÒ•h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hju•ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjq•ubjä)�”}”(hŒstruct drm_bridge *bridge”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Œ drm_bridge”h]”hŒ drm_bridge”…”�”}”(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.devm_drm_bridge_add”†”asbuh1hhjç•ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'–h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjç•ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj5–h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjç•ubjÓ )�”}”(hŒbridge”h]”hŒbridge”…”�”}”(hjB–h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjç•ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjq•ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj8•h²hh³jJ•h´Máubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj4•h²hh³jJ•h´Máubah}”(h]”j/•ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jJ•h´Máhj1•h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ(devm managed version of drm_bridge_add()”h]”hŒ(devm managed version of drm_bridge_add()”…”�”}”(hjl–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Máhji–h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj1•h²hh³jJ•h´Máubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j„–j$ j„–j% ‰j& ‰j' ‰uh1j˜ h²hhj­Ih³Nh´Nubj) )�”}”(hXC**Parameters** ``struct device *dev`` device to tie the bridge lifetime to ``struct drm_bridge *bridge`` bridge control structure **Description** This is the managed version of drm_bridge_add() which automatically calls drm_bridge_remove() when **dev** is unbound. **Return** 0 if no error or negative error code.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjŽ–h]”hŒ Parameters”…”�”}”(hj�–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjŒ–ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Måhjˆ–ubjw )�”}”(hhh]”(j| )�”}”(hŒ<``struct device *dev`` device to tie the bridge lifetime to ”h]”(j‚ )�”}”(hŒ``struct device *dev``”h]”jˆ )�”}”(hj­–h]”hŒstruct device *dev”…”�”}”(hj¯–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj«–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Mãhj§–ubjž )�”}”(hhh]”hÎ)�”}”(hŒ$device to tie the bridge lifetime to”h]”hŒ$device to tie the bridge lifetime to”…”�”}”(hjÆ–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j–h´MãhjÖubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj§–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j–h´Mãhj¤–ubj| )�”}”(hŒ7``struct drm_bridge *bridge`` bridge control structure ”h]”(j‚ )�”}”(hŒ``struct drm_bridge *bridge``”h]”jˆ )�”}”(hjæ–h]”hŒstruct drm_bridge *bridge”…”�”}”(hjè–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjä–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Mähjà–ubjž )�”}”(hhh]”hÎ)�”}”(hŒbridge control structure”h]”hŒbridge control structure”…”�”}”(hjÿ–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jû–h´Mähjü–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjà–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jû–h´Mähj¤–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjˆ–ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj!—h]”hŒ Description”…”�”}”(hj#—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj—ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Mæhjˆ–ubhÎ)�”}”(hŒvThis is the managed version of drm_bridge_add() which automatically calls drm_bridge_remove() when **dev** is unbound.”h]”(hŒcThis is the managed version of drm_bridge_add() which automatically calls drm_bridge_remove() when ”…”�”}”(hj7—h²hh³Nh´Nubj3 )�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hj?—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj7—ubhŒ is unbound.”…”�”}”(hj7—h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Måhjˆ–ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjZ—h]”hŒReturn”…”�”}”(hj\—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjX—ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Mèhjˆ–ubhÎ)�”}”(hŒ%0 if no error or negative error code.”h]”hŒ%0 if no error or negative error code.”…”�”}”(hjp—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Méhjˆ–ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj­Ih²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_bridge_remove (C function)”Œc.drm_bridge_remove”hNt”auh1j† hj­Ih²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ2void drm_bridge_remove (struct drm_bridge *bridge)”h]”j¤ )�”}”(hŒ1void drm_bridge_remove(struct drm_bridge *bridge)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjŸ—h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj›—h²hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.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Œdrm_bridge_remove”h]”jÓ )�”}”(hŒdrm_bridge_remove”h]”hŒdrm_bridge_remove”…”�”}”(hjÀ—h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¼—ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj›—h²hh³j­—h´MóubjÞ)�”}”(hŒ(struct drm_bridge *bridge)”h]”jä)�”}”(hŒstruct drm_bridge *bridge”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Œ drm_bridge”h]”hŒ drm_bridge”…”�”}”(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%)�”}”jj—sbŒc.drm_bridge_remove”†”asbuh1hhjØ—ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjØ—ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj(˜h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjØ—ubjÓ )�”}”(hŒbridge”h]”hŒbridge”…”�”}”(hj5˜h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjØ—ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÔ—ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj›—h²hh³j­—h´Móubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œunregister a bridge”h]”hŒunregister a bridge”…”�”}”(hj_˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.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# jw˜j$ jw˜j% ‰j& ‰j' ‰uh1j˜ h²hhj­Ih³Nh´Nubj) )�”}”(hXK**Parameters** ``struct drm_bridge *bridge`` bridge control structure **Description** Remove the given bridge from the global list of registered bridges, so it won't be found by users via of_drm_find_and_get_bridge(), and add it to the lingering bridge list, to keep track of it until its allocated memory is eventually freed.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj�˜h]”hŒ Parameters”…”�”}”(hjƒ˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M÷hj{˜ubjw )�”}”(hhh]”j| )�”}”(hŒ7``struct drm_bridge *bridge`` bridge control structure ”h]”(j‚ )�”}”(hŒ``struct drm_bridge *bridge``”h]”jˆ )�”}”(hj ˜h]”hŒstruct drm_bridge *bridge”…”�”}”(hj¢˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjž˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Mõhjš˜ubjž )�”}”(hhh]”hÎ)�”}”(hŒbridge control structure”h]”hŒbridge control structure”…”�”}”(hj¹˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jµ˜h´Mõhj¶˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjš˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jµ˜h´Mõhj—˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj{˜ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjÛ˜h]”hŒ Description”…”�”}”(hjݘh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÙ˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M÷hj{˜ubhÎ)�”}”(hŒðRemove the given bridge from the global list of registered bridges, so it won't be found by users via of_drm_find_and_get_bridge(), and add it to the lingering bridge list, to keep track of it until its allocated memory is eventually freed.”h]”hŒòRemove the given bridge from the global list of registered bridges, so it won’t be found by users via of_drm_find_and_get_bridge(), and add it to the lingering bridge list, to keep track of it until its allocated memory is eventually freed.”…”�”}”(hjñ˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Möhj{˜ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj­Ih²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_bridge_attach (C function)”Œc.drm_bridge_attach”hNt”auh1j† hj­Ih²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ�int drm_bridge_attach (struct drm_encoder *encoder, struct drm_bridge *bridge, struct drm_bridge *previous, enum drm_bridge_attach_flags flags)”h]”j¤ )�”}”(hŒŽint drm_bridge_attach(struct drm_encoder *encoder, struct drm_bridge *bridge, struct drm_bridge *previous, enum drm_bridge_attach_flags flags)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj ™h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj™h²hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M1ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/™h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj™h²hh³j.™h´M1ubjÍ )�”}”(hŒdrm_bridge_attach”h]”jÓ )�”}”(hŒdrm_bridge_attach”h]”hŒdrm_bridge_attach”…”�”}”(hjA™h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj=™ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj™h²hh³j.™h´M1ubjÞ)�”}”(hŒy(struct drm_encoder *encoder, struct drm_bridge *bridge, struct drm_bridge *previous, enum drm_bridge_attach_flags flags)”h]”(jä)�”}”(hŒstruct drm_encoder *encoder”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj]™h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjY™ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjj™h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjY™ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_encoder”h]”hŒ drm_encoder”…”�”}”(hj{™h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjx™ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j}™Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjC™sbŒc.drm_bridge_attach”†”asbuh1hhjY™ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›™h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjY™ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj©™h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjY™ubjÓ )�”}”(hŒencoder”h]”hŒencoder”…”�”}”(hj¶™h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjY™ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjU™ubjä)�”}”(hŒstruct drm_bridge *bridge”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Œ drm_bridge”h]”hŒ drm_bridge”…”�”}”(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.drm_bridge_attach”†”asbuh1hhjË™ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj šh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjË™ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjË™ubjÓ )�”}”(hŒbridge”h]”hŒbridge”…”�”}”(hj&šh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjË™ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjU™ubjä)�”}”(hŒstruct drm_bridge *previous”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj?šh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj;šubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjLšh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj;šubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_bridge”h]”hŒ drm_bridge”…”�”}”(hj]šh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjZšubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j_šŒmodname”NŒ classname”Njé jì )�”}”jï ]”j—™Œc.drm_bridge_attach”†”asbuh1hhj;šubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{šh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj;šubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj‰šh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj;šubjÓ )�”}”(hŒprevious”h]”hŒprevious”…”�”}”(hj–šh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj;šubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjU™ubjä)�”}”(hŒ"enum drm_bridge_attach_flags flags”h]”(jª )�”}”(hjÂ7h]”hŒenum”…”�”}”(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Œdrm_bridge_attach_flags”h]”hŒdrm_bridge_attach_flags”…”�”}”(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.drm_bridge_attach”†”asbuh1hhj«šubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjëšh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj«šubjÓ )�”}”(hŒflags”h]”hŒflags”…”�”}”(hjùšh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj«šubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjU™ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj™h²hh³j.™h´M1ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj™h²hh³j.™h´M1ubah}”(h]”j™ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j.™h´M1hj™h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ'attach the bridge to an encoder's chain”h]”hŒ)attach the bridge to an encoder’s chain”…”�”}”(hj#›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M1hj ›h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj™h²hh³j.™h´M1ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j;›j$ j;›j% ‰j& ‰j' ‰uh1j˜ h²hhj­Ih³Nh´Nubj) )�”}”(hXµ**Parameters** ``struct drm_encoder *encoder`` DRM encoder ``struct drm_bridge *bridge`` bridge to attach ``struct drm_bridge *previous`` previous bridge in the chain (optional) ``enum drm_bridge_attach_flags flags`` DRM_BRIDGE_ATTACH_* flags **Description** Called by a kms driver to link the bridge to an encoder's chain. The previous argument specifies the previous bridge in the chain. If NULL, the bridge is linked directly at the encoder's output. Otherwise it is linked at the previous bridge's output. If non-NULL the previous bridge must be already attached by a call to this function. The bridge to be attached must have been previously added by drm_bridge_add(). Note that bridges attached to encoders are auto-detached during encoder cleanup in drm_encoder_cleanup(), so drm_bridge_attach() should generally *not* be balanced with a drm_bridge_detach() in driver code. **Return** Zero on success, error code on failure”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjE›h]”hŒ Parameters”…”�”}”(hjG›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjC›ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M5hj?›ubjw )�”}”(hhh]”(j| )�”}”(hŒ,``struct drm_encoder *encoder`` DRM encoder ”h]”(j‚ )�”}”(hŒ``struct drm_encoder *encoder``”h]”jˆ )�”}”(hjd›h]”hŒstruct drm_encoder *encoder”…”�”}”(hjf›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjb›ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M3hj^›ubjž )�”}”(hhh]”hÎ)�”}”(hŒ DRM encoder”h]”hŒ DRM encoder”…”�”}”(hj}›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jy›h´M3hjz›ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj^›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jy›h´M3hj[›ubj| )�”}”(hŒ/``struct drm_bridge *bridge`` bridge to attach ”h]”(j‚ )�”}”(hŒ``struct drm_bridge *bridge``”h]”jˆ )�”}”(hj�›h]”hŒstruct drm_bridge *bridge”…”�”}”(hjŸ›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj››ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M4hj—›ubjž )�”}”(hhh]”hÎ)�”}”(hŒbridge to attach”h]”hŒbridge to attach”…”�”}”(hj¶›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j²›h´M4hj³›ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj—›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j²›h´M4hj[›ubj| )�”}”(hŒH``struct drm_bridge *previous`` previous bridge in the chain (optional) ”h]”(j‚ )�”}”(hŒ``struct drm_bridge *previous``”h]”jˆ )�”}”(hjÖ›h]”hŒstruct drm_bridge *previous”…”�”}”(hjØ›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÔ›ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M5hjЛubjž )�”}”(hhh]”hÎ)�”}”(hŒ'previous bridge in the chain (optional)”h]”hŒ'previous bridge in the chain (optional)”…”�”}”(hjï›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jë›h´M5hjì›ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjЛubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jë›h´M5hj[›ubj| )�”}”(hŒA``enum drm_bridge_attach_flags flags`` DRM_BRIDGE_ATTACH_* flags ”h]”(j‚ )�”}”(hŒ&``enum drm_bridge_attach_flags flags``”h]”jˆ )�”}”(hjœh]”hŒ"enum drm_bridge_attach_flags flags”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj œubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M6hj œubjž )�”}”(hhh]”hÎ)�”}”(hŒDRM_BRIDGE_ATTACH_* flags”h]”hŒDRM_BRIDGE_ATTACH_* flags”…”�”}”(hj(œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j$œh´M6hj%œubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj œubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j$œh´M6hj[›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj?›ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjJœh]”hŒ Description”…”�”}”(hjLœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjHœubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M8hj?›ubhÎ)�”}”(hŒúCalled by a kms driver to link the bridge to an encoder's chain. The previous argument specifies the previous bridge in the chain. If NULL, the bridge is linked directly at the encoder's output. Otherwise it is linked at the previous bridge's output.”h]”hXCalled by a kms driver to link the bridge to an encoder’s chain. The previous argument specifies the previous bridge in the chain. If NULL, the bridge is linked directly at the encoder’s output. Otherwise it is linked at the previous bridge’s output.”…”�”}”(hj`œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M7hj?›ubhÎ)�”}”(hŒTIf non-NULL the previous bridge must be already attached by a call to this function.”h]”hŒTIf non-NULL the previous bridge must be already attached by a call to this function.”…”�”}”(hjoœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M<hj?›ubhÎ)�”}”(hŒNThe bridge to be attached must have been previously added by drm_bridge_add().”h]”hŒNThe bridge to be attached must have been previously added by drm_bridge_add().”…”�”}”(hj~œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M?hj?›ubhÎ)�”}”(hŒÎNote that bridges attached to encoders are auto-detached during encoder cleanup in drm_encoder_cleanup(), so drm_bridge_attach() should generally *not* be balanced with a drm_bridge_detach() in driver code.”h]”(hŒ’Note that bridges attached to encoders are auto-detached during encoder cleanup in drm_encoder_cleanup(), so drm_bridge_attach() should generally ”…”�”}”(hj�œh²hh³Nh´Nubj0F)�”}”(hŒ*not*”h]”hŒnot”…”�”}”(hj•œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j/Fhj�œubhŒ7 be balanced with a drm_bridge_detach() in driver code.”…”�”}”(hj�œh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MBhj?›ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj°œh]”hŒReturn”…”�”}”(hj²œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj®œubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MFhj?›ubhÎ)�”}”(hŒ&Zero on success, error code on failure”h]”hŒ&Zero on success, error code on failure”…”�”}”(hjÆœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MGhj?›ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj­Ih²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ(drm_bridge_chain_mode_valid (C function)”Œc.drm_bridge_chain_mode_valid”hNt”auh1j† hj­Ih²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒœenum drm_mode_status drm_bridge_chain_mode_valid (struct drm_bridge *first_bridge, const struct drm_display_info *info, const struct drm_display_mode *mode)”h]”j¤ )�”}”(hŒ›enum drm_mode_status drm_bridge_chain_mode_valid(struct drm_bridge *first_bridge, const struct drm_display_info *info, const struct drm_display_mode *mode)”h]”(jª )�”}”(hjÂ7h]”hŒenum”…”�”}”(hjõœh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjñœh²hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.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ýubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_mode_status”h]”hŒdrm_mode_status”…”�”}”(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Œdrm_bridge_chain_mode_valid”sbŒc.drm_bridge_chain_mode_valid”†”asbuh1hhjñœh²hh³j�h´Mýubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5�h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjñœh²hh³j�h´MýubjÍ )�”}”(hŒdrm_bridge_chain_mode_valid”h]”jÓ )�”}”(hj2�h]”hŒdrm_bridge_chain_mode_valid”…”�”}”(hjG�h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjC�ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjñœh²hh³j�h´MýubjÞ)�”}”(hŒk(struct drm_bridge *first_bridge, const struct drm_display_info *info, const struct drm_display_mode *mode)”h]”(jä)�”}”(hŒstruct drm_bridge *first_bridge”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjb�h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj^�ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjo�h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj^�ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_bridge”h]”hŒ drm_bridge”…”�”}”(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ï ]”j0�Œc.drm_bridge_chain_mode_valid”†”asbuh1hhj^�ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjž�h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj^�ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj¬�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj^�ubjÓ )�”}”(hŒ first_bridge”h]”hŒ first_bridge”…”�”}”(hj¹�h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj^�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjZ�ubjä)�”}”(hŒ#const struct drm_display_info *info”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(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Œdrm_display_info”h]”hŒdrm_display_info”…”�”}”(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ï ]”j0�Œc.drm_bridge_chain_mode_valid”†”asbuh1hhjÎ�ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)žh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÎ�ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj7žh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÎ�ubjÓ )�”}”(hŒinfo”h]”hŒinfo”…”�”}”(hjDžh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÎ�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjZ�ubjä)�”}”(hŒ#const struct drm_display_mode *mode”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hj]žh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjYžubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjjžh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjYžubjª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjxžh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjYžubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…žh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjYžubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_display_mode”h]”hŒdrm_display_mode”…”�”}”(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ï ]”j0�Œc.drm_bridge_chain_mode_valid”†”asbuh1hhjYžubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´žh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjYžubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjYžubjÓ )�”}”(hŒmode”h]”hŒmode”…”�”}”(hjÏžh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjYžubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjZ�ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjñœh²hh³j�h´Mýubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ;validate the mode against all bridges in the encoder chain.”h]”hŒ;validate the mode against all bridges in the encoder chain.”…”�”}”(hjùžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.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²hhj­Ih³Nh´Nubj) )�”}”(hX‡**Parameters** ``struct drm_bridge *first_bridge`` bridge control structure ``const struct drm_display_info *info`` display info against which the mode shall be validated ``const struct drm_display_mode *mode`` desired mode to be validated **Description** Calls :c:type:`drm_bridge_funcs.mode_valid ` for all the bridges in the encoder chain, starting from the first bridge to the last. If at least one bridge does not accept the mode the function returns the error code. **Note** the bridge passed should be the one closest to the encoder. **Return** MODE_OK on success, drm_mode_status Enum error code on failure”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjŸh]”hŒ Parameters”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MhjŸubjw )�”}”(hhh]”(j| )�”}”(hŒ=``struct drm_bridge *first_bridge`` bridge control structure ”h]”(j‚ )�”}”(hŒ#``struct drm_bridge *first_bridge``”h]”jˆ )�”}”(hj:Ÿh]”hŒstruct drm_bridge *first_bridge”…”�”}”(hj<Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj8Ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Mÿhj4Ÿubjž )�”}”(hhh]”hÎ)�”}”(hŒbridge control structure”h]”hŒbridge control structure”…”�”}”(hjSŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jOŸh´MÿhjPŸubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj4Ÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jOŸh´Mÿhj1Ÿubj| )�”}”(hŒ_``const struct drm_display_info *info`` display info against which the mode shall be validated ”h]”(j‚ )�”}”(hŒ'``const struct drm_display_info *info``”h]”jˆ )�”}”(hjsŸh]”hŒ#const struct drm_display_info *info”…”�”}”(hjuŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjqŸubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MhjmŸubjž )�”}”(hhh]”hÎ)�”}”(hŒ6display info against which the mode shall be validated”h]”hŒ6display info against which the mode shall be validated”…”�”}”(hjŒŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jˆŸh´Mhj‰Ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjmŸubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jˆŸh´Mhj1Ÿubj| )�”}”(hŒE``const struct drm_display_mode *mode`` desired mode to be validated ”•h]”(j‚ )�”}”(hŒ'``const struct drm_display_mode *mode``”h]”jˆ )�”}”(hj¬Ÿh]”hŒ#const struct drm_display_mode *mode”…”�”}”(hj®Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjªŸubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Mhj¦Ÿubjž )�”}”(hhh]”hÎ)�”}”(hŒdesired mode to be validated”h]”hŒdesired mode to be validated”…”�”}”(hjÅŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÁŸh´MhjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¦Ÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÁŸh´Mhj1Ÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjŸubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjçŸh]”hŒ Description”…”�”}”(hjéŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjåŸubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MhjŸubhÎ)�”}”(hŒéCalls :c:type:`drm_bridge_funcs.mode_valid ` for all the bridges in the encoder chain, starting from the first bridge to the last. If at least one bridge does not accept the mode the function returns the error code.”h]”(hŒCalls ”…”�”}”(hjýŸh²hh³Nh´Nubh)�”}”(hŒ8:c:type:`drm_bridge_funcs.mode_valid `”h]”jˆ )�”}”(hj h]”hŒdrm_bridge_funcs.mode_valid”…”�”}”(hj  h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MhjýŸubhŒ« for all the bridges in the encoder chain, starting from the first bridge to the last. If at least one bridge does not accept the mode the function returns the error code.”…”�”}”(hjýŸh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j$ h´MhjŸubhÎ)�”}”(hŒ**Note**”h]”j3 )�”}”(hj1 h]”hŒNote”…”�”}”(hj3 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj/ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MhjŸubhÎ)�”}”(hŒ;the bridge passed should be the one closest to the encoder.”h]”hŒ;the bridge passed should be the one closest to the encoder.”…”�”}”(hjG h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MhjŸubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjX h]”hŒReturn”…”�”}”(hjZ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjV ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M hjŸubhÎ)�”}”(hŒ>MODE_OK on success, drm_mode_status Enum error code on failure”h]”hŒ>MODE_OK on success, drm_mode_status Enum error code on failure”…”�”}”(hjn h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M hjŸubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj­Ih²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ&drm_bridge_chain_mode_set (C function)”Œc.drm_bridge_chain_mode_set”hNt”auh1j† hj­Ih²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ“void drm_bridge_chain_mode_set (struct drm_bridge *first_bridge, const struct drm_display_mode *mode, const struct drm_display_mode *adjusted_mode)”h]”j¤ )�”}”(hŒ’void drm_bridge_chain_mode_set(struct drm_bridge *first_bridge, const struct drm_display_mode *mode, const struct drm_display_mode *adjusted_mode)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj™ h²hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.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Œdrm_bridge_chain_mode_set”h]”jÓ )�”}”(hŒdrm_bridge_chain_mode_set”h]”hŒdrm_bridge_chain_mode_set”…”�”}”(hj¾ h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjº ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj™ h²hh³j« h´M$ubjÞ)�”}”(hŒt(struct drm_bridge *first_bridge, const struct drm_display_mode *mode, const struct drm_display_mode *adjusted_mode)”h]”(jä)�”}”(hŒstruct drm_bridge *first_bridge”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Œ drm_bridge”h]”hŒ drm_bridge”…”�”}”(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%)�”}”jjÀ sbŒc.drm_bridge_chain_mode_set”†”asbuh1hhjÖ ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÖ ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj&¡h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÖ ubjÓ )�”}”(hŒ first_bridge”h]”hŒ first_bridge”…”�”}”(hj3¡h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÖ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÒ ubjä)�”}”(hŒ#const struct drm_display_mode *mode”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hjL¡h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjH¡ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjY¡h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjH¡ubjª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjg¡h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjH¡ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjt¡h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjH¡ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_display_mode”h]”hŒdrm_display_mode”…”�”}”(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.drm_bridge_chain_mode_set”†”asbuh1hhjH¡ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£¡h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjH¡ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj±¡h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjH¡ubjÓ )�”}”(hŒmode”h]”hŒmode”…”�”}”(hj¾¡h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjH¡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÒ ubjä)�”}”(hŒ,const struct drm_display_mode *adjusted_mode”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(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Œdrm_display_mode”h]”hŒdrm_display_mode”…”�”}”(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.drm_bridge_chain_mode_set”†”asbuh1hhjÓ¡ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.¢h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÓ¡ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj<¢h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÓ¡ubjÓ )�”}”(hŒ adjusted_mode”h]”hŒ adjusted_mode”…”�”}”(hjI¢h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÓ¡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÒ ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj™ h²hh³j« h´M$ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ6set proposed mode for all bridges in the encoder chain”h]”hŒ6set proposed mode for all bridges in the encoder chain”…”�”}”(hjs¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M$hjp¢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²hhj­Ih³Nh´Nubj) )�”}”(hX÷**Parameters** ``struct drm_bridge *first_bridge`` bridge control structure ``const struct drm_display_mode *mode`` desired mode to be set for the encoder chain ``const struct drm_display_mode *adjusted_mode`` updated mode that works for this encoder chain **Description** Calls :c:type:`drm_bridge_funcs.mode_set ` op for all the bridges in the encoder chain, starting from the first bridge to the last. **Note** the bridge passed should be the one closest to the encoder”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj•¢h]”hŒ Parameters”…”�”}”(hj—¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj“¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M(hj�¢ubjw )�”}”(hhh]”(j| )�”}”(hŒ=``struct drm_bridge *first_bridge`` bridge control structure ”h]”(j‚ )�”}”(hŒ#``struct drm_bridge *first_bridge``”h]”jˆ )�”}”(hj´¢h]”hŒstruct drm_bridge *first_bridge”…”�”}”(hj¶¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj²¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M&hj®¢ubjž )�”}”(hhh]”hÎ)�”}”(hŒbridge control structure”h]”hŒbridge control structure”…”�”}”(hjÍ¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÉ¢h´M&hjÊ¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj®¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÉ¢h´M&hj«¢ubj| )�”}”(hŒU``const struct drm_display_mode *mode`` desired mode to be set for the encoder chain ”h]”(j‚ )�”}”(hŒ'``const struct drm_display_mode *mode``”h]”jˆ )�”}”(hjí¢h]”hŒ#const struct drm_display_mode *mode”…”�”}”(hjï¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjë¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M'hjç¢ubjž )�”}”(hhh]”hÎ)�”}”(hŒ,desired mode to be set for the encoder chain”h]”hŒ,desired mode to be set for the encoder chain”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j£h´M'hj£ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjç¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j£h´M'hj«¢ubj| )�”}”(hŒ```const struct drm_display_mode *adjusted_mode`` updated mode that works for this encoder chain ”h]”(j‚ )�”}”(hŒ0``const struct drm_display_mode *adjusted_mode``”h]”jˆ )�”}”(hj&£h]”hŒ,const struct drm_display_mode *adjusted_mode”…”�”}”(hj(£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj$£ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M(hj £ubjž )�”}”(hhh]”hÎ)�”}”(hŒ.updated mode that works for this encoder chain”h]”hŒ.updated mode that works for this encoder chain”…”�”}”(hj?£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j;£h´M(hj<£ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj £ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j;£h´M(hj«¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj�¢ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hja£h]”hŒ Description”…”�”}”(hjc£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj_£ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M*hj�¢ubhÎ)�”}”(hŒ•Calls :c:type:`drm_bridge_funcs.mode_set ` op for all the bridges in the encoder chain, starting from the first bridge to the last.”h]”(hŒCalls ”…”�”}”(hjw£h²hh³Nh´Nubh)�”}”(hŒ6:c:type:`drm_bridge_funcs.mode_set `”h]”jˆ )�”}”(hj�£h]”hŒdrm_bridge_funcs.mode_set”…”�”}”(hjƒ£h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj£ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M)hjw£ubhŒY op for all the bridges in the encoder chain, starting from the first bridge to the last.”…”�”}”(hjw£h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jž£h´M)hj�¢ubhÎ)�”}”(hŒ**Note**”h]”j3 )�”}”(hj«£h]”hŒNote”…”�”}”(hj­£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj©£ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M,hj�¢ubhÎ)�”}”(hŒ:the bridge passed should be the one closest to the encoder”h]”hŒ:the bridge passed should be the one closest to the encoder”…”�”}”(hjÁ£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M-hj�¢ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj­Ih²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ,drm_atomic_bridge_chain_disable (C function)”Œ!c.drm_atomic_bridge_chain_disable”hNt”auh1j† hj­Ih²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒavoid drm_atomic_bridge_chain_disable (struct drm_bridge *bridge, struct drm_atomic_commit *state)”h]”j¤ )�”}”(hŒ`void drm_atomic_bridge_chain_disable(struct drm_bridge *bridge, struct drm_atomic_commit *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjð£h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjì£h²hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.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Œdrm_atomic_bridge_chain_disable”h]”jÓ )�”}”(hŒdrm_atomic_bridge_chain_disable”h]”hŒdrm_atomic_bridge_chain_disable”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj ¤ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjì£h²hh³jþ£h´M=ubjÞ)�”}”(hŒ<(struct drm_bridge *bridge, struct drm_atomic_commit *state)”h]”(jä)�”}”(hŒstruct drm_bridge *bridge”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Œ drm_bridge”h]”hŒ drm_bridge”…”�”}”(hjK¤h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjH¤ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jM¤Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj¤sbŒ!c.drm_atomic_bridge_chain_disable”†”asbuh1hhj)¤ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjk¤h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj)¤ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjy¤h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj)¤ubjÓ )�”}”(hŒbridge”h]”hŒbridge”…”�”}”(hj†¤h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj)¤ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj%¤ubjä)�”}”(hŒstruct drm_atomic_commit *state”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Œdrm_atomic_commit”h]”hŒdrm_atomic_commit”…”�”}”(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ï ]”jg¤Œ!c.drm_atomic_bridge_chain_disable”†”asbuh1hhj›¤ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛ¤h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj›¤ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjé¤h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj›¤ubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hjö¤h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj›¤ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj%¤ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjì£h²hh³jþ£h´M=ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ)disables all bridges in the encoder chain”h]”hŒ)disables all bridges in the encoder chain”…”�”}”(hj ¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.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# j8¥j$ j8¥j% ‰j& ‰j' ‰uh1j˜ h²hhj­Ih³Nh´Nubj) )�”}”(hXí**Parameters** ``struct drm_bridge *bridge`` bridge control structure ``struct drm_atomic_commit *state`` atomic state being committed **Description** Calls :c:type:`drm_bridge_funcs.atomic_disable ` op for all the bridges in the encoder chain, starting from the last bridge to the first. These are called before calling :c:type:`drm_encoder_helper_funcs.atomic_disable ` **Note** the bridge passed should be the one closest to the encoder”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjB¥h]”hŒ Parameters”…”�”}”(hjD¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj@¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MAhj<¥ubjw )�”}”(hhh]”(j| )�”}”(hŒ7``struct drm_bridge *bridge`` bridge control structure ”h]”(j‚ )�”}”(hŒ``struct drm_bridge *bridge``”h]”jˆ )�”}”(hja¥h]”hŒstruct drm_bridge *bridge”…”�”}”(hjc¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj_¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M>hj[¥ubjž )�”}”(hhh]”hÎ)�”}”(hŒbridge control structure”h]”hŒbridge control structure”…”�”}”(hjz¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jv¥h´M>hjw¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj[¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jv¥h´M>hjX¥ubj| )�”}”(hŒA``struct drm_atomic_commit *state`` atomic state being committed ”h]”(j‚ )�”}”(hŒ#``struct drm_atomic_commit *state``”h]”jˆ )�”}”(hjš¥h]”hŒstruct drm_atomic_commit *state”…”�”}”(hjœ¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj˜¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M?hj”¥ubjž )�”}”(hhh]”hÎ)�”}”(hŒatomic state being committed”h]”hŒatomic state being committed”…”�”}”(hj³¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¯¥h´M?hj°¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj”¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¯¥h´M?hjX¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj<¥ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjÕ¥h]”hŒ Description”…”�”}”(hj×¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÓ¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MAhj<¥ubhÎ)�”}”(hXCalls :c:type:`drm_bridge_funcs.atomic_disable ` op for all the bridges in the encoder chain, starting from the last bridge to the first. These are called before calling :c:type:`drm_encoder_helper_funcs.atomic_disable `”h]”(hŒCalls ”…”�”}”(hjë¥h²hh³Nh´Nubh)�”}”(hŒ<:c:type:`drm_bridge_funcs.atomic_disable `”h]”jˆ )�”}”(hjõ¥h]”hŒdrm_bridge_funcs.atomic_disable”…”�”}”(hj÷¥h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjó¥ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M@hjë¥ubhŒz op for all the bridges in the encoder chain, starting from the last bridge to the first. These are called before calling ”…”�”}”(hjë¥h²hh³Nh´Nubh)�”}”(hŒL:c:type:`drm_encoder_helper_funcs.atomic_disable `”h]”jˆ )�”}”(hj¦h]”hŒ'drm_encoder_helper_funcs.atomic_disable”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj¦ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_encoder_helper_funcs”uh1hh³j¦h´M@hjë¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¦h´M@hj<¥ubhÎ)�”}”(hŒ**Note**”h]”j3 )�”}”(hj>¦h]”hŒNote”…”�”}”(hj@¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj<¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MDhj<¥ubhÎ)�”}”(hŒ:the bridge passed should be the one closest to the encoder”h]”hŒ:the bridge passed should be the one closest to the encoder”…”�”}”(hjT¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MEhj<¥ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj­Ih²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ1drm_atomic_bridge_chain_post_disable (C function)”Œ&c.drm_atomic_bridge_chain_post_disable”hNt”auh1j† hj­Ih²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒfvoid drm_atomic_bridge_chain_post_disable (struct drm_bridge *bridge, struct drm_atomic_commit *state)”h]”j¤ )�”}”(hŒevoid drm_atomic_bridge_chain_post_disable(struct drm_bridge *bridge, struct drm_atomic_commit *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjƒ¦h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj¦h²hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Meubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’¦h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¦h²hh³j‘¦h´MeubjÍ )�”}”(hŒ$drm_atomic_bridge_chain_post_disable”h]”jÓ )�”}”(hŒ$drm_atomic_bridge_chain_post_disable”h]”hŒ$drm_atomic_bridge_chain_post_disable”…”�”}”(hj¤¦h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj ¦ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj¦h²hh³j‘¦h´MeubjÞ)�”}”(hŒ<(struct drm_bridge *bridge, struct drm_atomic_commit *state)”h]”(jä)�”}”(hŒstruct drm_bridge *bridge”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Œ drm_bridge”h]”hŒ drm_bridge”…”�”}”(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%)�”}”jj¦¦sbŒ&c.drm_atomic_bridge_chain_post_disable”†”asbuh1hhj¼¦ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþ¦h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¼¦ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj §h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¼¦ubjÓ )�”}”(hŒbridge”h]”hŒbridge”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¼¦ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¸¦ubjä)�”}”(hŒstruct drm_atomic_commit *state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj2§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Œdrm_atomic_commit”h]”hŒdrm_atomic_commit”…”�”}”(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.drm_atomic_bridge_chain_post_disable”†”asbuh1hhj.§ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjn§h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj.§ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj|§h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj.§ubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hj‰§h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj.§ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¸¦ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj¦h²hh³j‘¦h´Meubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj{¦h²hh³j‘¦h´Meubah}”(h]”jv¦ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j‘¦h´Mehjx¦h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ:cleans up after disabling all bridges in the encoder chain”h]”hŒ:cleans up after disabling all bridges in the encoder chain”…”�”}”(hj³§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Mehj°§h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjx¦h²hh³j‘¦h´Meubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j˧j$ j˧j% ‰j& ‰j' ‰uh1j˜ h²hhj­Ih³Nh´Nubj) )�”}”(hX’**Parameters** ``struct drm_bridge *bridge`` bridge control structure ``struct drm_atomic_commit *state`` atomic state being committed **Description** Calls :c:type:`drm_bridge_funcs.atomic_post_disable ` op for all the bridges in the encoder chain, starting from the first bridge to the last. These are called after completing :c:type:`drm_encoder_helper_funcs.atomic_disable ` If a bridge sets **pre_enable_prev_first**, then the **post_disable** for that bridge will be called before the previous one to reverse the **pre_enable** calling direction. **Example** Bridge A ---> Bridge B ---> Bridge C ---> Bridge D ---> Bridge E With pre_enable_prev_first flag enable in Bridge B, D, E then the resulting **post_disable** order would be, Bridge B, Bridge A, Bridge E, Bridge D, Bridge C. **Note** the bridge passed should be the one closest to the encoder”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjÕ§h]”hŒ Parameters”…”�”}”(hj×§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÓ§ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Mihjϧubjw )�”}”(hhh]”(j| )�”}”(hŒ7``struct drm_bridge *bridge`` bridge control structure ”h]”(j‚ )�”}”(hŒ``struct drm_bridge *bridge``”h]”jˆ )�”}”(hjô§h]”hŒstruct drm_bridge *bridge”…”�”}”(hjö§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjò§ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Mghjî§ubjž )�”}”(hhh]”hÎ)�”}”(hŒbridge control structure”h]”hŒbridge control structure”…”�”}”(hj ¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j ¨h´Mghj ¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjî§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j ¨h´Mghjë§ubj| )�”}”(hŒA``struct drm_atomic_commit *state`` atomic state being committed ”h]”(j‚ )�”}”(hŒ#``struct drm_atomic_commit *state``”h]”jˆ )�”}”(hj-¨h]”hŒstruct drm_atomic_commit *state”…”�”}”(hj/¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj+¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Mhhj'¨ubjž )�”}”(hhh]”hÎ)�”}”(hŒatomic state being committed”h]”hŒatomic state being committed”…”�”}”(hjF¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jB¨h´MhhjC¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj'¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jB¨h´Mhhjë§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjϧubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjh¨h]”hŒ Description”…”�”}”(hjj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjf¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MjhjϧubhÎ)�”}”(hXCalls :c:type:`drm_bridge_funcs.atomic_post_disable ` op for all the bridges in the encoder chain, starting from the first bridge to the last. These are called after completing :c:type:`drm_encoder_helper_funcs.atomic_disable `”h]”(hŒCalls ”…”�”}”(hj~¨h²hh³Nh´Nubh)�”}”(hŒA:c:type:`drm_bridge_funcs.atomic_post_disable `”h]”jˆ )�”}”(hjˆ¨h]”hŒ$drm_bridge_funcs.atomic_post_disable”…”�”}”(hjЍh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj†¨ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Mihj~¨ubhŒ| op for all the bridges in the encoder chain, starting from the first bridge to the last. These are called after completing ”…”�”}”(hj~¨h²hh³Nh´Nubh)�”}”(hŒL:c:type:`drm_encoder_helper_funcs.atomic_disable `”h]”jˆ )�”}”(hj¬¨h]”hŒ'drm_encoder_helper_funcs.atomic_disable”…”�”}”(hj®¨h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjª¨ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_encoder_helper_funcs”uh1hh³j¥¨h´Mihj~¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¥¨h´MihjϧubhÎ)�”}”(hŒ­If a bridge sets **pre_enable_prev_first**, then the **post_disable** for that bridge will be called before the previous one to reverse the **pre_enable** calling direction.”h]”(hŒIf a bridge sets ”…”�”}”(hjϨh²hh³Nh´Nubj3 )�”}”(hŒ**pre_enable_prev_first**”h]”hŒpre_enable_prev_first”…”�”}”(hjרh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjϨubhŒ , then the ”…”�”}”(hjϨh²hh³Nh´Nubj3 )�”}”(hŒ**post_disable**”h]”hŒ post_disable”…”�”}”(hjé¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjϨubhŒG for that bridge will be called before the previous one to reverse the ”…”�”}”(hjϨh²hh³Nh´Nubj3 )�”}”(hŒ**pre_enable**”h]”hŒ pre_enable”…”�”}”(hjû¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjϨubhŒ calling direction.”…”�”}”(hjϨh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MmhjϧubhÎ)�”}”(hŒ **Example**”h]”j3 )�”}”(hj©h]”hŒExample”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MqhjϧubhÎ)�”}”(hŒ@Bridge A ---> Bridge B ---> Bridge C ---> Bridge D ---> Bridge E”h]”hŒ@Bridge A ---> Bridge B ---> Bridge C ---> Bridge D ---> Bridge E”…”�”}”(hj,©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MrhjϧubhÎ)�”}”(hŒžWith pre_enable_prev_first flag enable in Bridge B, D, E then the resulting **post_disable** order would be, Bridge B, Bridge A, Bridge E, Bridge D, Bridge C.”h]”(hŒLWith pre_enable_prev_first flag enable in Bridge B, D, E then the resulting ”…”�”}”(hj;©h²hh³Nh´Nubj3 )�”}”(hŒ**post_disable**”h]”hŒ post_disable”…”�”}”(hjC©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj;©ubhŒB order would be, Bridge B, Bridge A, Bridge E, Bridge D, Bridge C.”…”�”}”(hj;©h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MthjϧubhÎ)�”}”(hŒ**Note**”h]”j3 )�”}”(hj^©h]”hŒNote”…”�”}”(hj`©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj\©ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MxhjϧubhÎ)�”}”(hŒ:the bridge passed should be the one closest to the encoder”h]”hŒ:the bridge passed should be the one closest to the encoder”…”�”}”(hjt©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Myhjϧubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj­Ih²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ/drm_atomic_bridge_chain_pre_enable (C function)”Œ$c.drm_atomic_bridge_chain_pre_enable”hNt”auh1j† hj­Ih²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒdvoid drm_atomic_bridge_chain_pre_enable (struct drm_bridge *bridge, struct drm_atomic_commit *state)”h]”j¤ )�”}”(hŒcvoid drm_atomic_bridge_chain_pre_enable(struct drm_bridge *bridge, struct drm_atomic_commit *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj£©h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjŸ©h²hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.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Œ"drm_atomic_bridge_chain_pre_enable”h]”jÓ )�”}”(hŒ"drm_atomic_bridge_chain_pre_enable”h]”hŒ"drm_atomic_bridge_chain_pre_enable”…”�”}”(hjÄ©h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÀ©ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjŸ©h²hh³j±©h´MÃubjÞ)�”}”(hŒ<(struct drm_bridge *bridge, struct drm_atomic_commit *state)”h]”(jä)�”}”(hŒstruct drm_bridge *bridge”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Œ drm_bridge”h]”hŒ drm_bridge”…”�”}”(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%)�”}”jjÆ©sbŒ$c.drm_atomic_bridge_chain_pre_enable”†”asbuh1hhjÜ©ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÜ©ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj,ªh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÜ©ubjÓ )�”}”(hŒbridge”h]”hŒbridge”…”�”}”(hj9ªh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÜ©ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjØ©ubjä)�”}”(hŒstruct drm_atomic_commit *state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjRªh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjNªubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_ªh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjNªubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_atomic_commit”h]”hŒdrm_atomic_commit”…”�”}”(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.drm_atomic_bridge_chain_pre_enable”†”asbuh1hhjNªubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽªh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjNªubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjœªh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjNªubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hj©ªh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjNªubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjØ©ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjŸ©h²hh³j±©h´MÃubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ6prepares for enabling all bridges in the encoder chain”h]”hŒ6prepares for enabling all bridges in the encoder chain”…”�”}”(hjÓªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.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²hhj­Ih³Nh´Nubj) )�”}”(hXb**Parameters** ``struct drm_bridge *bridge`` bridge control structure ``struct drm_atomic_commit *state`` atomic state being committed **Description** Calls :c:type:`drm_bridge_funcs.atomic_pre_enable ` op for all the bridges in the encoder chain, starting from the last bridge to the first. These are called before calling :c:type:`drm_encoder_helper_funcs.atomic_enable ` If a bridge sets **pre_enable_prev_first**, then the pre_enable for the prev bridge will be called before pre_enable of this bridge. **Example** Bridge A ---> Bridge B ---> Bridge C ---> Bridge D ---> Bridge E With pre_enable_prev_first flag enable in Bridge B, D, E then the resulting **pre_enable** order would be, Bridge C, Bridge D, Bridge E, Bridge A, Bridge B. **Note** the bridge passed should be the one closest to the encoder”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjõªh]”hŒ Parameters”…”�”}”(hj÷ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjóªubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MÇhjïªubjw )�”}”(hhh]”(j| )�”}”(hŒ7``struct drm_bridge *bridge`` bridge control structure ”h]”(j‚ )�”}”(hŒ``struct drm_bridge *bridge``”h]”jˆ )�”}”(hj«h]”hŒstruct drm_bridge *bridge”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MÅhj«ubjž )�”}”(hhh]”hÎ)�”}”(hŒbridge control structure”h]”hŒbridge control structure”…”�”}”(hj-«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j)«h´MÅhj*«ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j)«h´MÅhj «ubj| )�”}”(hŒA``struct drm_atomic_commit *state`` atomic state being committed ”h]”(j‚ )�”}”(hŒ#``struct drm_atomic_commit *state``”h]”jˆ )�”}”(hjM«h]”hŒstruct drm_atomic_commit *state”…”�”}”(hjO«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjK«ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MÆhjG«ubjž )�”}”(hhh]”hÎ)�”}”(hŒatomic state being committed”h]”hŒatomic state being committed”…”�”}”(hjf«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jb«h´MÆhjc«ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjG«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jb«h´MÆhj «ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjïªubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjˆ«h]”hŒ Description”…”�”}”(hjŠ«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj†«ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MÈhjïªubhÎ)�”}”(hX Calls :c:type:`drm_bridge_funcs.atomic_pre_enable ` op for all the bridges in the encoder chain, starting from the last bridge to the first. These are called before calling :c:type:`drm_encoder_helper_funcs.atomic_enable `”h]”(hŒCalls ”…”�”}”(hjž«h²hh³Nh´Nubh)�”}”(hŒ?:c:type:`drm_bridge_funcs.atomic_pre_enable `”h]”jˆ )�”}”(hj¨«h]”hŒ"drm_bridge_funcs.atomic_pre_enable”…”�”}”(hjª«h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj¦«ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MÇhjž«ubhŒz op for all the bridges in the encoder chain, starting from the last bridge to the first. These are called before calling ”…”�”}”(hjž«h²hh³Nh´Nubh)�”}”(hŒK:c:type:`drm_encoder_helper_funcs.atomic_enable `”h]”jˆ )�”}”(hjÌ«h]”hŒ&drm_encoder_helper_funcs.atomic_enable”…”�”}”(hjΫh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÊ«ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_encoder_helper_funcs”uh1hh³jÅ«h´MÇhjž«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÅ«h´MÇhjïªubhÎ)�”}”(hŒ„If a bridge sets **pre_enable_prev_first**, then the pre_enable for the prev bridge will be called before pre_enable of this bridge.”h]”(hŒIf a bridge sets ”…”�”}”(hjï«h²hh³Nh´Nubj3 )�”}”(hŒ**pre_enable_prev_first**”h]”hŒpre_enable_prev_first”…”�”}”(hj÷«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjï«ubhŒZ, then the pre_enable for the prev bridge will be called before pre_enable of this bridge.”…”�”}”(hjï«h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MËhjïªubhÎ)�”}”(hŒ **Example**”h]”j3 )�”}”(hj¬h]”hŒExample”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MÎhjïªubhÎ)�”}”(hŒ@Bridge A ---> Bridge B ---> Bridge C ---> Bridge D ---> Bridge E”h]”hŒ@Bridge A ---> Bridge B ---> Bridge C ---> Bridge D ---> Bridge E”…”�”}”(hj(¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MÏhjïªubhÎ)�”}”(hŒœWith pre_enable_prev_first flag enable in Bridge B, D, E then the resulting **pre_enable** order would be, Bridge C, Bridge D, Bridge E, Bridge A, Bridge B.”h]”(hŒLWith pre_enable_prev_first flag enable in Bridge B, D, E then the resulting ”…”�”}”(hj7¬h²hh³Nh´Nubj3 )�”}”(hŒ**pre_enable**”h]”hŒ pre_enable”…”�”}”(hj?¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj7¬ubhŒB order would be, Bridge C, Bridge D, Bridge E, Bridge A, Bridge B.”…”�”}”(hj7¬h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MÑhjïªubhÎ)�”}”(hŒ**Note**”h]”j3 )�”}”(hjZ¬h]”hŒNote”…”�”}”(hj\¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjX¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MÕhjïªubhÎ)�”}”(hŒ:the bridge passed should be the one closest to the encoder”h]”hŒ:the bridge passed should be the one closest to the encoder”…”�”}”(hjp¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MÖhjïªubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj­Ih²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ+drm_atomic_bridge_chain_enable (C function)”Œ c.drm_atomic_bridge_chain_enable”hNt”auh1j† hj­Ih²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒfvoid drm_atomic_bridge_chain_enable (struct drm_bridge *first_bridge, struct drm_atomic_commit *state)”h]”j¤ )�”}”(hŒevoid drm_atomic_bridge_chain_enable(struct drm_bridge *first_bridge, struct drm_atomic_commit *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjŸ¬h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj›¬h²hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®¬h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj›¬h²hh³j­¬h´MubjÍ )�”}”(hŒdrm_atomic_bridge_chain_enable”h]”jÓ )�”}”(hŒdrm_atomic_bridge_chain_enable”h]”hŒdrm_atomic_bridge_chain_enable”…”�”}”(hjÀ¬h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¼¬ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj›¬h²hh³j­¬h´MubjÞ)�”}”(hŒB(struct drm_bridge *first_bridge, struct drm_atomic_commit *state)”h]”(jä)�”}”(hŒstruct drm_bridge *first_bridge”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Œ drm_bridge”h]”hŒ drm_bridge”…”�”}”(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%)�”}”jj¬sbŒ c.drm_atomic_bridge_chain_enable”†”asbuh1hhjجubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjجubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj(­h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjجubjÓ )�”}”(hŒ first_bridge”h]”hŒ first_bridge”…”�”}”(hj5­h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjجubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÔ¬ubjä)�”}”(hŒstruct drm_atomic_commit *state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjN­h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjJ­ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[­h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjJ­ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_atomic_commit”h]”hŒdrm_atomic_commit”…”�”}”(hjl­h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hji­ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jn­Œmodname”NŒ classname”Njé jì )�”}”jï ]”j­Œ c.drm_atomic_bridge_chain_enable”†”asbuh1hhjJ­ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠ­h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjJ­ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj˜­h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjJ­ubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hj¥­h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjJ­ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÔ¬ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj›¬h²hh³j­¬h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj—¬h²hh³j­¬h´Mubah}”(h]”j’¬ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j­¬h´Mhj”¬h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ(enables all bridges in the encoder chain”h]”hŒ(enables all bridges in the encoder chain”…”�”}”(hjÏ­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MhjÌ­h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj”¬h²hh³j­¬h´Mubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jç­j$ jç­j% ‰j& ‰j' ‰uh1j˜ h²hhj­Ih³Nh´Nubj) )�”}”(hXó**Parameters** ``struct drm_bridge *first_bridge`` bridge control structure ``struct drm_atomic_commit *state`` atomic state being committed **Description** Calls :c:type:`drm_bridge_funcs.atomic_enable ` op for all the bridges in the encoder chain, starting from the first bridge to the last. These are called after completing :c:type:`drm_encoder_helper_funcs.atomic_enable ` **Note** the bridge passed should be the one closest to the encoder”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjñ­h]”hŒ Parameters”…”�”}”(hjó­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjï­ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Mhjë­ubjw )�”}”(hhh]”(j| )�”}”(hŒ=``struct drm_bridge *first_bridge`` bridge control structure ”h]”(j‚ )�”}”(hŒ#``struct drm_bridge *first_bridge``”h]”jˆ )�”}”(hj®h]”hŒstruct drm_bridge *first_bridge”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj®ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Mhj ®ubjž )�”}”(hhh]”hÎ)�”}”(hŒbridge control structure”h]”hŒbridge control structure”…”�”}”(hj)®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j%®h´Mhj&®ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj ®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j%®h´Mhj®ubj| )�”}”(hŒA``struct drm_atomic_commit *state`` atomic state being committed ”h]”(j‚ )�”}”(hŒ#``struct drm_atomic_commit *state``”h]”jˆ )�”}”(hjI®h]”hŒstruct drm_atomic_commit *state”…”�”}”(hjK®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjG®ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MhjC®ubjž )�”}”(hhh]”hÎ)�”}”(hŒatomic state being committed”h]”hŒatomic state being committed”…”�”}”(hjb®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j^®h´Mhj_®ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjC®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j^®h´Mhj®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjë­ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj„®h]”hŒ Description”…”�”}”(hj†®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj‚®ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Mhjë­ubhÎ)�”}”(hXCalls :c:type:`drm_bridge_funcs.atomic_enable ` op for all the bridges in the encoder chain, starting from the first bridge to the last. These are called after completing :c:type:`drm_encoder_helper_funcs.atomic_enable `”h]”(hŒCalls ”…”�”}”(hjš®h²hh³Nh´Nubh)�”}”(hŒ;:c:type:`drm_bridge_funcs.atomic_enable `”h]”jˆ )�”}”(hj¤®h]”hŒdrm_bridge_funcs.atomic_enable”…”�”}”(hj¦®h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj¢®ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Mhjš®ubhŒ| op for all the bridges in the encoder chain, starting from the first bridge to the last. These are called after completing ”…”�”}”(hjš®h²hh³Nh´Nubh)�”}”(hŒK:c:type:`drm_encoder_helper_funcs.atomic_enable `”h]”jˆ )�”}”(hjÈ®h]”hŒ&drm_encoder_helper_funcs.atomic_enable”…”�”}”(hjÊ®h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÆ®ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_encoder_helper_funcs”uh1hh³jÁ®h´Mhjš®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÁ®h´Mhjë­ubhÎ)�”}”(hŒ**Note**”h]”j3 )�”}”(hjí®h]”hŒNote”…”�”}”(hjï®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjë®ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Mhjë­ubhÎ)�”}”(hŒ:the bridge passed should be the one closest to the encoder”h]”hŒ:the bridge passed should be the one closest to the encoder”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Mhjë­ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj­Ih²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ*drm_atomic_bridge_chain_check (C function)”Œc.drm_atomic_bridge_chain_check”hNt”auh1j† hj­Ih²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒˆint drm_atomic_bridge_chain_check (struct drm_bridge *bridge, struct drm_crtc_state *crtc_state, struct drm_connector_state *conn_state)”h]”j¤ )�”}”(hŒ‡int drm_atomic_bridge_chain_check(struct drm_bridge *bridge, struct drm_crtc_state *crtc_state, struct drm_connector_state *conn_state)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj2¯h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj.¯h²hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Mjubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjA¯h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj.¯h²hh³j@¯h´MjubjÍ )�”}”(hŒdrm_atomic_bridge_chain_check”h]”jÓ )�”}”(hŒdrm_atomic_bridge_chain_check”h]”hŒdrm_atomic_bridge_chain_check”…”�”}”(hjS¯h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjO¯ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj.¯h²hh³j@¯h´MjubjÞ)�”}”(hŒf(struct drm_bridge *bridge, struct drm_crtc_state *crtc_state, struct drm_connector_state *conn_state)”h]”(jä)�”}”(hŒstruct drm_bridge *bridge”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjo¯h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjk¯ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|¯h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjk¯ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_bridge”h]”hŒ drm_bridge”…”�”}”(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%)�”}”jjU¯sbŒc.drm_atomic_bridge_chain_check”†”asbuh1hhjk¯ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­¯h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjk¯ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj»¯h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjk¯ubjÓ )�”}”(hŒbridge”h]”hŒbridge”…”�”}”(hjȯh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjk¯ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjg¯ubjä)�”}”(hŒ!struct drm_crtc_state *crtc_state”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Œdrm_crtc_state”h]”hŒdrm_crtc_state”…”�”}”(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.drm_atomic_bridge_chain_check”†”asbuh1hhjݯubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjݯubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj+°h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjݯubjÓ )�”}”(hŒ crtc_state”h]”hŒ crtc_state”…”�”}”(hj8°h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjݯubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjg¯ubjä)�”}”(hŒ&struct drm_connector_state *conn_state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjQ°h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjM°ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^°h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjM°ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_connector_state”h]”hŒdrm_connector_state”…”�”}”(hjo°h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjl°ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jq°Œmodname”NŒ classname”Njé jì )�”}”jï ]”j©¯Œc.drm_atomic_bridge_chain_check”†”asbuh1hhjM°ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�°h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjM°ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj›°h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjM°ubjÓ )�”}”(hŒ conn_state”h]”hŒ conn_state”…”�”}”(hj¨°h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjM°ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjg¯ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj.¯h²hh³j@¯h´Mjubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj*¯h²hh³j@¯h´Mjubah}”(h]”j%¯ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j@¯h´Mjhj'¯h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ&Do an atomic check on the bridge chain”h]”hŒ&Do an atomic check on the bridge chain”…”�”}”(hjÒ°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Mjhjϰh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj'¯h²hh³j@¯h´Mjubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jê°j$ jê°j% ‰j& ‰j' ‰uh1j˜ h²hhj­Ih³Nh´Nubj) )�”}”(hXš**Parameters** ``struct drm_bridge *bridge`` bridge control structure ``struct drm_crtc_state *crtc_state`` new CRTC state ``struct drm_connector_state *conn_state`` new connector state **Description** First trigger a bus format negotiation before calling :c:type:`drm_bridge_funcs.atomic_check\(\) ` (falls back on :c:type:`drm_bridge_funcs.mode_fixup\(\) `) op for all the bridges in the encoder chain, starting from the last bridge to the first. These are called before calling :c:type:`drm_encoder_helper_funcs.atomic_check\(\) ` **Return** 0 on success, a negative error code on failure”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjô°h]”hŒ Parameters”…”�”}”(hjö°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjò°ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Mnhjî°ubjw )�”}”(hhh]”(j| )�”}”(hŒ7``struct drm_bridge *bridge`` bridge control structure ”h]”(j‚ )�”}”(hŒ``struct drm_bridge *bridge``”h]”jˆ )�”}”(hj±h]”hŒstruct drm_bridge *bridge”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Mkhj ±ubjž )�”}”(hhh]”hÎ)�”}”(hŒbridge control structure”h]”hŒbridge control structure”…”�”}”(hj,±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j(±h´Mkhj)±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj ±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j(±h´Mkhj ±ubj| )�”}”(hŒ5``struct drm_crtc_state *crtc_state`` new CRTC state ”h]”(j‚ )�”}”(hŒ%``struct drm_crtc_state *crtc_state``”h]”jˆ )�”}”(hjL±h]”hŒ!struct drm_crtc_state *crtc_state”…”�”}”(hjN±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjJ±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MlhjF±ubjž )�”}”(hhh]”hÎ)�”}”(hŒnew CRTC state”h]”hŒnew CRTC state”…”�”}”(hje±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³ja±h´Mlhjb±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjF±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³ja±h´Mlhj ±ubj| )�”}”(hŒ?``struct drm_connector_state *conn_state`` new connector state ”h]”(j‚ )�”}”(hŒ*``struct drm_connector_state *conn_state``”h]”jˆ )�”}”(hj…±h]”hŒ&struct drm_connector_state *conn_state”…”�”}”(hj‡±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjƒ±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Mmhj±ubjž )�”}”(hhh]”hÎ)�”}”(hŒnew connector state”h]”hŒnew connector state”…”�”}”(hjž±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jš±h´Mmhj›±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jš±h´Mmhj ±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjî°ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjÀ±h]”hŒ Description”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¾±ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Mohjî°ubhÎ)�”}”(hX‰First trigger a bus format negotiation before calling :c:type:`drm_bridge_funcs.atomic_check\(\) ` (falls back on :c:type:`drm_bridge_funcs.mode_fixup\(\) `) op for all the bridges in the encoder chain, starting from the last bridge to the first. These are called before calling :c:type:`drm_encoder_helper_funcs.atomic_check\(\) `”h]”(hŒ6First trigger a bus format negotiation before calling ”…”�”}”(hjÖ±h²hh³Nh´Nubh)�”}”(hŒ>:c:type:`drm_bridge_funcs.atomic_check\(\) `”h]”jˆ )�”}”(hjà±h]”hŒdrm_bridge_funcs.atomic_check()”…”�”}”(hjâ±h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÞ±ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MnhjÖ±ubhŒ (falls back on ”…”�”}”(hjÖ±h²hh³Nh´Nubh)�”}”(hŒ<:c:type:`drm_bridge_funcs.mode_fixup\(\) `”h]”jˆ )�”}”(hj²h]”hŒdrm_bridge_funcs.mode_fixup()”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj²ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³jý±h´MnhjÖ±ubhŒ{) op for all the bridges in the encoder chain, starting from the last bridge to the first. These are called before calling ”…”�”}”(hjÖ±h²hh³Nh´Nubh)�”}”(hŒN:c:type:`drm_encoder_helper_funcs.atomic_check\(\) `”h]”jˆ )�”}”(hj'²h]”hŒ'drm_encoder_helper_funcs.atomic_check()”…”�”}”(hj)²h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj%²ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_encoder_helper_funcs”uh1hh³jý±h´MnhjÖ±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jý±h´Mnhjî°ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjL²h]”hŒReturn”…”�”}”(hjN²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjJ²ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Mthjî°ubhÎ)�”}”(hŒ.0 on success, a negative error code on failure”h]”hŒ.0 on success, a negative error code on failure”…”�”}”(hjb²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Muhjî°ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj­Ih²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_bridge_detect (C function)”Œc.drm_bridge_detect”hNt”auh1j† hj­Ih²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒhenum drm_connector_status drm_bridge_detect (struct drm_bridge *bridge, struct drm_connector *connector)”h]”j¤ )�”}”(hŒgenum drm_connector_status drm_bridge_detect(struct drm_bridge *bridge, struct drm_connector *connector)”h]”(jª )�”}”(hjÂ7h]”hŒenum”…”�”}”(hj‘²h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj�²h²hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.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¦ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_connector_status”h]”hŒdrm_connector_status”…”�”}”(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Œdrm_bridge_detect”sbŒc.drm_bridge_detect”†”asbuh1hhj�²h²hh³jž²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Œdrm_bridge_detect”h]”jÓ )�”}”(hjβh]”hŒdrm_bridge_detect”…”�”}”(hjã²h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjß²ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj�²h²hh³jž²h´M¦ubjÞ)�”}”(hŒ<(struct drm_bridge *bridge, struct drm_connector *connector)”h]”(jä)�”}”(hŒstruct drm_bridge *bridge”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Œ drm_bridge”h]”hŒ drm_bridge”…”�”}”(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.drm_bridge_detect”†”asbuh1hhjú²ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:³h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjú²ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjH³h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjú²ubjÓ )�”}”(hŒbridge”h]”hŒbridge”…”�”}”(hjU³h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjú²ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjö²ubjä)�”}”(hŒstruct drm_connector *connector”h]”(jª •)�”}”(hj­ h]”hŒstruct”…”�”}”(hjn³h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjj³ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{³h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjj³ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_connector”h]”hŒ drm_connector”…”�”}”(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.drm_bridge_detect”†”asbuh1hhjj³ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjª³h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjj³ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj¸³h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjj³ubjÓ )�”}”(hŒ connector”h]”hŒ connector”…”�”}”(hjųh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjj³ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjö²ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj�²h²hh³jž²h´M¦ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ2check if anything is attached to the bridge output”h]”hŒ2check if anything is attached to the bridge output”…”�”}”(hjï³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.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²hhj­Ih³Nh´Nubj) )�”}”(hX**Parameters** ``struct drm_bridge *bridge`` bridge control structure ``struct drm_connector *connector`` attached connector **Description** If the bridge supports output detection, as reported by the DRM_BRIDGE_OP_DETECT bridge ops flag, call :c:type:`drm_bridge_funcs.detect ` for the bridge and return the connection status. Otherwise return connector_status_unknown. **Return** The detection status on success, or connector_status_unknown if the bridge doesn't support output detection.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj´h]”hŒ Parameters”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj´ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Mªhj ´ubjw )�”}”(hhh]”(j| )�”}”(hŒ7``struct drm_bridge *bridge`` bridge control structure ”h]”(j‚ )�”}”(hŒ``struct drm_bridge *bridge``”h]”jˆ )�”}”(hj0´h]”hŒstruct drm_bridge *bridge”…”�”}”(hj2´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj.´ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M§hj*´ubjž )�”}”(hhh]”hÎ)�”}”(hŒbridge control structure”h]”hŒbridge control structure”…”�”}”(hjI´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jE´h´M§hjF´ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj*´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jE´h´M§hj'´ubj| )�”}”(hŒ7``struct drm_connector *connector`` attached connector ”h]”(j‚ )�”}”(hŒ#``struct drm_connector *connector``”h]”jˆ )�”}”(hji´h]”hŒstruct drm_connector *connector”…”�”}”(hjk´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjg´ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M¨hjc´ubjž )�”}”(hhh]”hÎ)�”}”(hŒattached connector”h]”hŒattached connector”…”�”}”(hj‚´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j~´h´M¨hj´ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjc´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j~´h´M¨hj'´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj ´ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj¤´h]”hŒ Description”…”�”}”(hj¦´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¢´ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Mªhj ´ubhÎ)�”}”(hŒ÷If the bridge supports output detection, as reported by the DRM_BRIDGE_OP_DETECT bridge ops flag, call :c:type:`drm_bridge_funcs.detect ` for the bridge and return the connection status. Otherwise return connector_status_unknown.”h]”(hŒgIf the bridge supports output detection, as reported by the DRM_BRIDGE_OP_DETECT bridge ops flag, call ”…”�”}”(hjº´h²hh³Nh´Nubh)�”}”(hŒ4:c:type:`drm_bridge_funcs.detect `”h]”jˆ )�”}”(hjÄ´h]”hŒdrm_bridge_funcs.detect”…”�”}”(hjÆ´h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj´ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M©hjº´ubhŒ\ for the bridge and return the connection status. Otherwise return connector_status_unknown.”…”�”}”(hjº´h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³já´h´M©hj ´ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjî´h]”hŒReturn”…”�”}”(hjð´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjì´ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M®hj ´ubhÎ)�”}”(hŒlThe detection status on success, or connector_status_unknown if the bridge doesn't support output detection.”h]”hŒnThe detection status on success, or connector_status_unknown if the bridge doesn’t support output detection.”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M¯hj ´ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj­Ih²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ!drm_bridge_get_modes (C function)”Œc.drm_bridge_get_modes”hNt”auh1j† hj­Ih²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒUint drm_bridge_get_modes (struct drm_bridge *bridge, struct drm_connector *connector)”h]”j¤ )�”}”(hŒTint drm_bridge_get_modes(struct drm_bridge *bridge, struct drm_connector *connector)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj3µh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj/µh²hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M¾ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBµh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj/µh²hh³jAµh´M¾ubjÍ )�”}”(hŒdrm_bridge_get_modes”h]”jÓ )�”}”(hŒdrm_bridge_get_modes”h]”hŒdrm_bridge_get_modes”…”�”}”(hjTµh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjPµubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj/µh²hh³jAµh´M¾ubjÞ)�”}”(hŒ<(struct drm_bridge *bridge, struct drm_connector *connector)”h]”(jä)�”}”(hŒstruct drm_bridge *bridge”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjpµh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjlµubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}µh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjlµubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_bridge”h]”hŒ drm_bridge”…”�”}”(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%)�”}”jjVµsbŒc.drm_bridge_get_modes”†”asbuh1hhjlµubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®µh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjlµubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj¼µh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjlµubjÓ )�”}”(hŒbridge”h]”hŒbridge”…”�”}”(hjɵh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjlµubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjhµubjä)�”}”(hŒstruct drm_connector *connector”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Œ drm_connector”h]”hŒ drm_connector”…”�”}”(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.drm_bridge_get_modes”†”asbuh1hhjÞµubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÞµubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj,¶h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÞµubjÓ )�”}”(hŒ connector”h]”hŒ connector”…”�”}”(hj9¶h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÞµubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjhµubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj/µh²hh³jAµh´M¾ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj+µh²hh³jAµh´M¾ubah}”(h]”j&µah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jAµh´M¾hj(µh²hubj )�”}”(hhh]”hÎ)�”}”(hŒBfill all modes currently valid for the sink into the **connector**”h]”(hŒ5fill all modes currently valid for the sink into the ”…”�”}”(hjc¶h²hh³Nh´Nubj3 )�”}”(hŒ **connector**”h]”hŒ connector”…”�”}”(hjk¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjc¶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M¾hj`¶h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj(µh²hh³jAµh´M¾ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j‰¶j$ j‰¶j% ‰j& ‰j' ‰uh1j˜ h²hhj­Ih³Nh´Nubj) )�”}”(hXä**Parameters** ``struct drm_bridge *bridge`` bridge control structure ``struct drm_connector *connector`` the connector to fill with modes **Description** If the bridge supports output modes retrieval, as reported by the DRM_BRIDGE_OP_MODES bridge ops flag, call :c:type:`drm_bridge_funcs.get_modes ` to fill the connector with all valid modes and return the number of modes added. Otherwise return 0. **Return** The number of modes added to the connector.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj“¶h]”hŒ Parameters”…”�”}”(hj•¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj‘¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MÂhj�¶ubjw )�”}”(hhh]”(j| )�”}”(hŒ7``struct drm_bridge *bridge`` bridge control structure ”h]”(j‚ )�”}”(hŒ``struct drm_bridge *bridge``”h]”jˆ )�”}”(hj²¶h]”hŒstruct drm_bridge *bridge”…”�”}”(hj´¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj°¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MÀhj¬¶ubjž )�”}”(hhh]”hÎ)�”}”(hŒbridge control structure”h]”hŒbridge control structure”…”�”}”(hj˶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jǶh´MÀhjȶubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¬¶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jǶh´MÀhj©¶ubj| )�”}”(hŒE``struct drm_connector *connector`` the connector to fill with modes ”h]”(j‚ )�”}”(hŒ#``struct drm_connector *connector``”h]”jˆ )�”}”(hjë¶h]”hŒstruct drm_connector *connector”…”�”}”(hjí¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjé¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MÁhjå¶ubjž )�”}”(hhh]”hÎ)�”}”(hŒ the connector to fill with modes”h]”hŒ the connector to fill with modes”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j·h´MÁhj·ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjå¶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j·h´MÁhj©¶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj�¶ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj&·h]”hŒ Description”…”�”}”(hj(·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj$·ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MÃhj�¶ubhÎ)�”}”(hXIf the bridge supports output modes retrieval, as reported by the DRM_BRIDGE_OP_MODES bridge ops flag, call :c:type:`drm_bridge_funcs.get_modes ` to fill the connector with all valid modes and return the number of modes added. Otherwise return 0.”h]”(hŒlIf the bridge supports output modes retrieval, as reported by the DRM_BRIDGE_OP_MODES bridge ops flag, call ”…”�”}”(hj<·h²hh³Nh´Nubh)�”}”(hŒ7:c:type:`drm_bridge_funcs.get_modes `”h]”jˆ )�”}”(hjF·h]”hŒdrm_bridge_funcs.get_modes”…”�”}”(hjH·h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjD·ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MÂhj<·ubhŒe to fill the connector with all valid modes and return the number of modes added. Otherwise return 0.”…”�”}”(hj<·h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jc·h´MÂhj�¶ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjp·h]”hŒReturn”…”�”}”(hjr·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjn·ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MÇhj�¶ubhÎ)�”}”(hŒ+The number of modes added to the connector.”h]”hŒ+The number of modes added to the connector.”…”�”}”(hj†·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MÈhj�¶ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj­Ih²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ!drm_bridge_edid_read (C function)”Œc.drm_bridge_edid_read”hNt”auh1j† hj­Ih²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒiconst struct drm_edid * drm_bridge_edid_read (struct drm_bridge *bridge, struct drm_connector *connector)”h]”j¤ )�”}”(hŒgconst struct drm_edid *drm_bridge_edid_read(struct drm_bridge *bridge, struct drm_connector *connector)”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hjµ·h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj±·h²hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.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ª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjÑ·h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj±·h²hh³j·h´MÖubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞ·h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj±·h²hh³j·h´MÖubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_edid”h]”hŒdrm_edid”…”�”}”(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Œdrm_bridge_edid_read”sbŒc.drm_bridge_edid_read”†”asbuh1hhj±·h²hh³j·h´MÖubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj±·h²hh³j·h´MÖubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj±·h²hh³j·h´MÖubjÍ )�”}”(hŒdrm_bridge_edid_read”h]”jÓ )�”}”(hj ¸h]”hŒdrm_bridge_edid_read”…”�”}”(hj/¸h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj+¸ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj±·h²hh³j·h´MÖubjÞ)�”}”(hŒ<(struct drm_bridge *bridge, struct drm_connector *connector)”h]”(jä)�”}”(hŒstruct drm_bridge *bridge”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjJ¸h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjF¸ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjW¸h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjF¸ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_bridge”h]”hŒ drm_bridge”…”�”}”(hjh¸h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hje¸ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jj¸Œmodname”NŒ classname”Njé jì )�”}”jï ]”j ¸Œc.drm_bridge_edid_read”†”asbuh1hhjF¸ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†¸h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjF¸ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj”¸h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjF¸ubjÓ )�”}”(hŒbridge”h]”hŒbridge”…”�”}”(hj¡¸h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjF¸ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjB¸ubjä)�”}”(hŒstruct drm_connector *connector”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Œ drm_connector”h]”hŒ drm_connector”…”�”}”(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.drm_bridge_edid_read”†”asbuh1hhj¶¸ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjö¸h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¶¸ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¶¸ubjÓ )�”}”(hŒ connector”h]”hŒ connector”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¶¸ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjB¸ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj±·h²hh³j·h´MÖubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ+read the EDID data of the connected display”h]”hŒ+read the EDID data of the connected display”…”�”}”(hj;¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MÖhj8¹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# jS¹j$ jS¹j% ‰j& ‰j' ‰uh1j˜ h²hhj­Ih³Nh´Nubj) )�”}”(hX·**Parameters** ``struct drm_bridge *bridge`` bridge control structure ``struct drm_connector *connector`` the connector to read EDID for **Description** If the bridge supports output EDID retrieval, as reported by the DRM_BRIDGE_OP_EDID bridge ops flag, call :c:type:`drm_bridge_funcs.edid_read ` to get the EDID and return it. Otherwise return NULL. **Return** The retrieved EDID on success, or NULL otherwise.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj]¹h]”hŒ Parameters”…”�”}”(hj_¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj[¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MÚhjW¹ubjw )�”}”(hhh]”(j| )�”}”(hŒ7``struct drm_bridge *bridge`` bridge control structure ”h]”(j‚ )�”}”(hŒ``struct drm_bridge *bridge``”h]”jˆ )�”}”(hj|¹h]”hŒstruct drm_bridge *bridge”…”�”}”(hj~¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjz¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M×hjv¹ubjž )�”}”(hhh]”hÎ)�”}”(hŒbridge control structure”h]”hŒbridge control structure”…”�”}”(hj•¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j‘¹h´M×hj’¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjv¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j‘¹h´M×hjs¹ubj| )�”}”(hŒC``struct drm_connector *connector`` the connector to read EDID for ”h]”(j‚ )�”}”(hŒ#``struct drm_connector *connector``”h]”jˆ )�”}”(hjµ¹h]”hŒstruct drm_connector *connector”…”�”}”(hj·¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj³¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MØhj¯¹ubjž )�”}”(hhh]”hÎ)�”}”(hŒthe connector to read EDID for”h]”hŒthe connector to read EDID for”…”�”}”(hjιh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jʹh´MØhj˹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¯¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jʹh´MØhjs¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjW¹ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjð¹h]”hŒ Description”…”�”}”(hjò¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjî¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MÚhjW¹ubhÎ)�”}”(hŒ×If the bridge supports output EDID retrieval, as reported by the DRM_BRIDGE_OP_EDID bridge ops flag, call :c:type:`drm_bridge_funcs.edid_read ` to get the EDID and return it. Otherwise return NULL.”h]”(hŒjIf the bridge supports output EDID retrieval, as reported by the DRM_BRIDGE_OP_EDID bridge ops flag, call ”…”�”}”(hjºh²hh³Nh´Nubh)�”}”(hŒ7:c:type:`drm_bridge_funcs.edid_read `”h]”jˆ )�”}”(hjºh]”hŒdrm_bridge_funcs.edid_read”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjºubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MÙhjºubhŒ6 to get the EDID and return it. Otherwise return NULL.”…”�”}”(hjºh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j-ºh´MÙhjW¹ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj:ºh]”hŒReturn”…”�”}”(hj<ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj8ºubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MÝhjW¹ubhÎ)�”}”(hŒ1The retrieved EDID on success, or NULL otherwise.”h]”hŒ1The retrieved EDID on success, or NULL otherwise.”…”�”}”(hjPºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MÞhjW¹ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj­Ih²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ"drm_bridge_hpd_enable (C function)”Œc.drm_bridge_hpd_enable”hNt”auh1j† hj­Ih²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ|void drm_bridge_hpd_enable (struct drm_bridge *bridge, void (*cb)(void *data, enum drm_connector_status status), void *data)”h]”j¤ )�”}”(hŒ{void drm_bridge_hpd_enable(struct drm_bridge *bridge, void (*cb)(void *data, enum drm_connector_status status), void *data)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj{ºh²hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.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Œdrm_bridge_hpd_enable”h]”jÓ )�”}”(hŒdrm_bridge_hpd_enable”h]”hŒdrm_bridge_hpd_enable”…”�”}”(hj ºh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjœºubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj{ºh²hh³j�ºh´MìubjÞ)�”}”(hŒa(struct drm_bridge *bridge, void (*cb)(void *data, enum drm_connector_status status), void *data)”h]”(jä)�”}”(hŒstruct drm_bridge *bridge”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Œ drm_bridge”h]”hŒ drm_bridge”…”�”}”(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%)�”}”jj¢ºsbŒc.drm_bridge_hpd_enable”†”asbuh1hhj¸ºubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjúºh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¸ºubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¸ºubjÓ )�”}”(hŒbridge”h]”hŒbridge”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¸ºubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj´ºubjä)�”}”(hŒ8void (*cb)(void *data, enum drm_connector_status status)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(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*»ubj9)�”}”(hŒ(”h]”hŒ(”…”�”}”(hjJ»h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj*»ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjX»h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj*»ubjÓ )�”}”(hŒcb”h]”hŒcb”…”�”}”(hje»h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj*»ubj9)�”}”(hŒ)”h]”hŒ)”…”�”}”(hjs»h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj*»ubj9)�”}”(hjL»h]”hŒ(”…”�”}”(hj�»h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj*»ubj¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(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*»ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjª»h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj*»ubjÓ )�”}”(hŒdata”h]”hŒdata”…”�”}”(hj·»h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj*»ubj9)�”}”(hŒ,”h]”hŒ,”…”�”}”(hjÅ»h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj*»ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓ»h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj*»ubjª )�”}”(hjÂ7h]”hŒenum”…”�”}”(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Œdrm_connector_status”h]”hŒdrm_connector_status”…”�”}”(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.drm_bridge_hpd_enable”†”asbuh1hhj*»ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj*»ubjÓ )�”}”(hŒstatus”h]”hŒstatus”…”�”}”(hj+¼h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj*»ubj9)�”}”(hju»h]”hŒ)”…”�”}”(hj9¼h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj*»ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj´ºubjä)�”}”(hŒ void *data”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjQ¼h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjM¼ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_¼h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjM¼ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjm¼h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjM¼ubjÓ )�”}”(hŒdata”h]”hŒdata”…”�”}”(hjz¼h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjM¼ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj´ºubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj{ºh²hh³j�ºh´Mìubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjwºh²hh³j�ºh´Mìubah}”(h]”jrºah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j�ºh´Mìhjtºh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ(enable hot plug detection for the bridge”h]”hŒ(enable hot plug detection for the bridge”…”�”}”(hj¤¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Mìhj¡¼h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjtºh²hh³j�ºh´Mìubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j¼¼j$ j¼¼j% ‰j& ‰j' ‰uh1j˜ h²hhj­Ih³Nh´Nubj) )�”}”(hX‡**Parameters** ``struct drm_bridge *bridge`` bridge control structure ``void (*cb)(void *data, enum drm_connector_status status)`` hot-plug detection callback ``void *data`` data to be passed to the hot-plug detection callback **Description** Call :c:type:`drm_bridge_funcs.hpd_enable ` if implemented and register the given **cb** and **data** as hot plug notification callback. From now on the **cb** will be called with **data** when an output status change is detected by the bridge, until hot plug notification gets disabled with drm_bridge_hpd_disable(). Hot plug detection is supported only if the DRM_BRIDGE_OP_HPD flag is set in bridge->ops. This function shall not be called when the flag is not set. Only one hot plug detection callback can be registered at a time, it is an error to call this function when hot plug detection is already enabled for the bridge.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjƼh]”hŒ Parameters”…”�”}”(hjȼh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjļubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MðhjÀ¼ubjw )�”}”(hhh]”(j| )�”}”(hŒ7``struct drm_bridge *bridge`` bridge control structure ”h]”(j‚ )�”}”(hŒ``struct drm_bridge *bridge``”h]”jˆ )�”}”(hjå¼h]”hŒstruct drm_bridge *bridge”…”�”}”(hjç¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjã¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Míhjß¼ubjž )�”}”(hhh]”hÎ)�”}”(hŒbridge control structure”h]”hŒbridge control structure”…”�”}”(hjþ¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jú¼h´Míhjû¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjß¼ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jú¼h´Míhjܼubj| )�”}”(hŒY``void (*cb)(void *data, enum drm_connector_status status)`` hot-plug detection callback ”h]”(j‚ )�”}”(hŒ<``void (*cb)(void *data, enum drm_connector_status status)``”h]”jˆ )�”}”(hj½h]”hŒ8void (*cb)(void *data, enum drm_connector_status status)”…”�”}”(hj ½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj½ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Mîhj½ubjž )�”}”(hhh]”hÎ)�”}”(hŒhot-plug detection callback”h]”hŒhot-plug detection callback”…”�”}”(hj7½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j3½h´Mîhj4½ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j3½h´Mîhjܼubj| )�”}”(hŒD``void *data`` data to be passed to the hot-plug detection callback ”h]”(j‚ )�”}”(hŒ``void *data``”h]”jˆ )�”}”(hjW½h]”hŒ void *data”…”�”}”(hjY½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjU½ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MïhjQ½ubjž )�”}”(hhh]”hÎ)�”}”(hŒ4data to be passed to the hot-plug detection callback”h]”hŒ4data to be passed to the hot-plug detection callback”…”�”}”(hjp½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jl½h´Mïhjm½ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjQ½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jl½h´Mïhjܼubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÀ¼ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj’½h]”hŒ Description”…”�”}”(hj”½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj�½ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MñhjÀ¼ubhÎ)�”}”(hXOCall :c:type:`drm_bridge_funcs.hpd_enable ` if implemented and register the given **cb** and **data** as hot plug notification callback. From now on the **cb** will be called with **data** when an output status change is detected by the bridge, until hot plug notification gets disabled with drm_bridge_hpd_disable().”h]”(hŒCall ”…”�”}”(hj¨½h²hh³Nh´Nubh)�”}”(hŒ8:c:type:`drm_bridge_funcs.hpd_enable `”h]”jˆ )�”}”(hj²½h]”hŒdrm_bridge_funcs.hpd_enable”…”�”}”(hj´½h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj°½ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Mðhj¨½ubhŒ' if implemented and register the given ”…”�”}”(hj¨½h²hh³Nh´Nubj3 )�”}”(hŒ**cb**”h]”hŒcb”…”�”}”(hjÔ½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¨½ubhŒ and ”…”�”}”(hj¨½h²hh³Nh´Nubj3 )�”}”(hŒ**data**”h]”hŒdata”…”�”}”(hjæ½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¨½ubhŒ4 as hot plug notification callback. From now on the ”…”�”}”(hj¨½h²hh³Nh´Nubj3 )�”}”(hŒ**cb**”h]”hŒcb”…”�”}”(hjø½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¨½ubhŒ will be called with ”…”�”}”(hj¨½h²hh³Nh´Nubj3 )�”}”(hŒ**data**”h]”hŒdata”…”�”}”(hj ¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¨½ubhŒ� when an output status change is detected by the bridge, until hot plug notification gets disabled with drm_bridge_hpd_disable().”…”�”}”(hj¨½h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jϽh´MðhjÀ¼ubhÎ)�”}”(hŒ•Hot plug detection is supported only if the DRM_BRIDGE_OP_HPD flag is set in bridge->ops. This function shall not be called when the flag is not set.”h]”hŒ•Hot plug detection is supported only if the DRM_BRIDGE_OP_HPD flag is set in bridge->ops. This function shall not be called when the flag is not set.”…”�”}”(hj"¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MõhjÀ¼ubhÎ)�”}”(hŒ¡Only one hot plug detection callback can be registered at a time, it is an error to call this function when hot plug detection is already enabled for the bridge.”h]”hŒ¡Only one hot plug detection callback can be registered at a time, it is an error to call this function when hot plug detection is already enabled for the bridge.”…”�”}”(hj1¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MøhjÀ¼ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj­Ih²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ#drm_bridge_hpd_disable (C function)”Œc.drm_bridge_hpd_disable”hNt”auh1j† hj­Ih²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ7void drm_bridge_hpd_disable (struct drm_bridge *bridge)”h]”j¤ )�”}”(hŒ6void drm_bridge_hpd_disable(struct drm_bridge *bridge)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj`¾h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj\¾h²hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjo¾h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj\¾h²hh³jn¾h´MubjÍ )�”}”(hŒdrm_bridge_hpd_disable”h]”jÓ )�”}”(hŒdrm_bridge_hpd_disable”h]”hŒdrm_bridge_hpd_disable”…”�”}”(hj�¾h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj}¾ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj\¾h²hh³jn¾h´MubjÞ)�”}”(hŒ(struct drm_bridge *bridge)”h]”jä)�”}”(hŒstruct drm_bridge *bridge”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Œ drm_bridge”h]”hŒ drm_bridge”…”�”}”(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%)�”}”jjƒ¾sbŒc.drm_bridge_hpd_disable”†”asbuh1hhj™¾ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛ¾h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj™¾ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjé¾h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj™¾ubjÓ )�”}”(hŒbridge”h]”hŒbridge”…”�”}”(hjö¾h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj™¾ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj•¾ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj\¾h²hh³jn¾h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjX¾h²hh³jn¾h´Mubah}”(h]”jS¾ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jn¾h´MhjU¾h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ)disable hot plug detection for the bridge”h]”hŒ)disable hot plug detection for the bridge”…”�”}”(hj ¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Mhj¿h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjU¾h²hh³jn¾h´Mubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j8¿j$ j8¿j% ‰j& ‰j' ‰uh1j˜ h²hhj­Ih³Nh´Nubj) )�”}”(hX**Parameters** ``struct drm_bridge *bridge`` bridge control structure **Description** Call :c:type:`drm_bridge_funcs.hpd_disable ` if implemented and unregister the hot plug detection callback previously registered with drm_bridge_hpd_enable(). Once this function returns the callback will not be called by the bridge when an output status change occurs. Hot plug detection is supported only if the DRM_BRIDGE_OP_HPD flag is set in bridge->ops. This function shall not be called when the flag is not set.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjB¿h]”hŒ Parameters”…”�”}”(hjD¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj@¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M hj<¿ubjw )�”}”(hhh]”j| )�”}”(hŒ7``struct drm_bridge *bridge`` bridge control structure ”h]”(j‚ )�”}”(hŒ``struct drm_bridge *bridge``”h]”jˆ )�”}”(hja¿h]”hŒstruct drm_bridge *bridge”…”�”}”(hjc¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj_¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Mhj[¿ubjž )�”}”(hhh]”hÎ)�”}”(hŒbridge control structure”h]”hŒbridge control structure”…”�”}”(hjz¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jv¿h´Mhjw¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj[¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jv¿h´MhjX¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj<¿ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjœ¿h]”hŒ Description”…”�”}”(hjž¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjš¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Mhj<¿ubhÎ)�”}”(hXCall :c:type:`drm_bridge_funcs.hpd_disable ` if implemented and unregister the hot plug detection callback previously registered with drm_bridge_hpd_enable(). Once this function returns the callback will not be called by the bridge when an output status change occurs.”h]”(hŒCall ”…”�”}”(hj²¿h²hh³Nh´Nubh)�”}”(hŒ9:c:type:`drm_bridge_funcs.hpd_disable `”h]”jˆ )�”}”(hj¼¿h]”hŒdrm_bridge_funcs.hpd_disable”…”�”}”(hj¾¿h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjº¿ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Mhj²¿ubhŒà if implemented and unregister the hot plug detection callback previously registered with drm_bridge_hpd_enable(). Once this function returns the callback will not be called by the bridge when an output status change occurs.”…”�”}”(hj²¿h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÙ¿h´Mhj<¿ubhÎ)�”}”(hŒ•Hot plug detection is supported only if the DRM_BRIDGE_OP_HPD flag is set in bridge->ops. This function shall not be called when the flag is not set.”h]”hŒ•Hot plug detection is supported only if the DRM_BRIDGE_OP_HPD flag is set in bridge->ops. This function shall not be called when the flag is not set.”…”�”}”(hjä¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M#hj<¿ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj­Ih²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ"drm_bridge_hpd_notify (C function)”Œc.drm_bridge_hpd_notify”hNt”auh1j† hj­Ih²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒXvoid drm_bridge_hpd_notify (struct drm_bridge *bridge, enum drm_connector_status status)”h]”j¤ )�”}”(hŒWvoid drm_bridge_hpd_notify(struct drm_bridge *bridge, enum drm_connector_status status)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjÀh²hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M9ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"Àh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÀh²hh³j!Àh´M9ubjÍ )�”}”(hŒdrm_bridge_hpd_notify”h]”jÓ )�”}”(hŒdrm_bridge_hpd_notify”h]”hŒdrm_bridge_hpd_notify”…”�”}”(hj4Àh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj0Àubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÀh²hh³j!Àh´M9ubjÞ)�”}”(hŒ=(struct drm_bridge *bridge, enum drm_connector_status status)”h]”(jä)�”}”(hŒstruct drm_bridge *bridge”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjPÀh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjLÀubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]Àh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjLÀubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_bridge”h]”hŒ drm_bridge”…”�”}”(hjnÀh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjkÀubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jpÀŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj6ÀsbŒc.drm_bridge_hpd_notify”†”asbuh1hhjLÀubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽÀh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjLÀubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjœÀh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjLÀubjÓ )�”}”(hŒbridge”h]”hŒbridge”…”�”}”(hj©Àh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjLÀubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjHÀubjä)�”}”(hŒ enum drm_connector_status status”h]”(jª )�”}”(hjÂ7h]”hŒenum”…”�”}”(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Œdrm_connector_status”h]”hŒdrm_connector_status”…”�”}”(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.drm_bridge_hpd_notify”†”asbuh1hhj¾Àubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþÀh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¾ÀubjÓ )�”}”(hŒstatus”h]”hŒstatus”…”�”}”(hj Áh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¾Àubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjHÀubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjÀh²hh³j!Àh´M9ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj Àh²hh³j!Àh´M9ubah}”(h]”jÀah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j!Àh´M9hjÀh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ notify hot plug detection events”h]”hŒ notify hot plug detection events”…”�”}”(hj6Áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M9hj3Áh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÀh²hh³j!Àh´M9ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jNÁj$ jNÁj% ‰j& ‰j' ‰uh1j˜ h²hhj­Ih³Nh´Nubj) )�”}”(hXŽ**Parameters** ``struct drm_bridge *bridge`` bridge control structure ``enum drm_connector_status status`` output connection status **Description** Bridge drivers shall call this function to report hot plug events when they detect a change in the output status, when hot plug detection has been enabled by drm_bridge_hpd_enable(). This function shall be called in a context that can sleep.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjXÁh]”hŒ Parameters”…”�”}”(hjZÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjVÁubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M=hjRÁubjw )�”}”(hhh]”(j| )�”}”(hŒ7``struct drm_bridge *bridge`` bridge control structure ”h]”(j‚ )�”}”(hŒ``struct drm_bridge *bridge``”h]”jˆ )�”}”(hjwÁh]”hŒstruct drm_bridge *bridge”…”�”}”(hjyÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjuÁubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M:hjqÁubjž )�”}”(hhh]”hÎ)�”}”(hŒbridge control structure”h]”hŒbridge control structure”…”�”}”(hj�Áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jŒÁh´M:hj�Áubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjqÁubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jŒÁh´M:hjnÁubj| )�”}”(hŒ>``enum drm_connector_status status`` output connection status ”h]”(j‚ )�”}”(hŒ$``enum drm_connector_status status``”h]”jˆ )�”}”(hj°Áh]”hŒ enum drm_connector_status status”…”�”}”(hj²Áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj®Áubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M;hjªÁubjž )�”}”(hhh]”hÎ)�”}”(hŒoutput connection status”h]”hŒoutput connection status”…”�”}”(hjÉÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÅÁh´M;hjÆÁubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjªÁubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÅÁh´M;hjnÁubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjRÁubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjëÁh]”hŒ Description”…”�”}”(hjíÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjéÁubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M=hjRÁubhÎ)�”}”(hŒ¶Bridge drivers shall call this function to report hot plug events when they detect a change in the output status, when hot plug detection has been enabled by drm_bridge_hpd_enable().”h]”hŒ¶Bridge drivers shall call this function to report hot plug events when they detect a change in the output status, when hot plug detection has been enabled by drm_bridge_hpd_enable().”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M<hjRÁubhÎ)�”}”(hŒ:This function shall be called in a context that can sleep.”h]”hŒ:This function shall be called in a context that can sleep.”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M@hjRÁubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj­Ih²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ'of_drm_find_and_get_bridge (C function)”Œc.of_drm_find_and_get_bridge”hNt”auh1j† hj­Ih²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒGstruct drm_bridge * of_drm_find_and_get_bridge (struct device_node *np)”h]”j¤ )�”}”(hŒEstruct drm_bridge *of_drm_find_and_get_bridge(struct device_node *np)”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj?Âh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj;Âh²hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MOubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjMÂh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj;Âh²hh³jLÂh´MOubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_bridge”h]”hŒ drm_bridge”…”�”}”(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Œof_drm_find_and_get_bridge”sbŒc.of_drm_find_and_get_bridge”†”asbuh1hhj;Âh²hh³jLÂh´MOubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj;Âh²hh³jLÂh´MOubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj�Âh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj;Âh²hh³jLÂh´MOubjÍ )�”}”(hŒof_drm_find_and_get_bridge”h]”jÓ )�”}”(hj|Âh]”hŒof_drm_find_and_get_bridge”…”�”}”(hjžÂh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjšÂubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj;Âh²hh³jLÂh´MOubjÞ)�”}”(hŒ(struct device_node *np)”h]”jä)�”}”(hŒstruct device_node *np”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Œ device_node”h]”hŒ device_node”…”�”}”(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ï ]”jzÂŒc.of_drm_find_and_get_bridge”†”asbuh1hhjµÂubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõÂh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjµÂubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjµÂubjÓ )�”}”(hŒnp”h]”hŒnp”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjµÂubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj±Âubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj;Âh²hh³jLÂh´MOubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj7Âh²hh³jLÂh´MOubah}”(h]”j2Âah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jLÂh´MOhj4Âh²hubj )�”}”(hhh]”hÎ)�”}”(hŒJfind the bridge corresponding to the device node in the global bridge list”h]”hŒJfind the bridge corresponding to the device node in the global bridge list”…”�”}”(hj:Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MOhj7Ãh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj4Âh²hh³jLÂh´MOubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jRÃj$ jRÃj% ‰j& ‰j' ‰uh1j˜ h²hhj­Ih³Nh´Nubj) )�”}”(hŒé**Parameters** ``struct device_node *np`` device node **Description** The refcount of the returned bridge is incremented. Use drm_bridge_put() when done with it. **Return** drm_bridge control struct on success, NULL on failure”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj\Ãh]”hŒ Parameters”…”�”}”(hj^Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjZÃubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MShjVÃubjw )�”}”(hhh]”j| )�”}”(hŒ'``struct device_node *np`` device node ”h]”(j‚ )�”}”(hŒ``struct device_node *np``”h]”jˆ )�”}”(hj{Ãh]”hŒstruct device_node *np”…”�”}”(hj}Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjyÃubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MQhjuÃubjž )�”}”(hhh]”hÎ)�”}”(hŒ device node”h]”hŒ device node”…”�”}”(hj”Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j�Ãh´MQhj‘Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjuÃubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j�Ãh´MQhjrÃubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjVÃubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj¶Ãh]”hŒ Description”…”�”}”(hj¸Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj´Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MShjVÃubhÎ)�”}”(hŒ[The refcount of the returned bridge is incremented. Use drm_bridge_put() when done with it.”h]”hŒ[The refcount of the returned bridge is incremented. Use drm_bridge_put() when done with it.”…”�”}”(hjÌÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MRhjVÃubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjÝÃh]”hŒReturn”…”�”}”(hjßÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÛÃubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MUhjVÃubhÎ)�”}”(hŒ5drm_bridge control struct on success, NULL on failure”h]”hŒ5drm_bridge control struct on success, NULL on failure”…”�”}”(hjóÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MVhjVÃubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj­Ih²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œof_drm_find_bridge (C function)”Œc.of_drm_find_bridge”hNt”auh1j† hj­Ih²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ?struct drm_bridge * of_drm_find_bridge (struct device_node *np)”h]”j¤ )�”}”(hŒ=struct drm_bridge *of_drm_find_bridge(struct device_node *np)”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj"Äh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjÄh²hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Mhubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0Äh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÄh²hh³j/Äh´Mhubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_bridge”h]”hŒ drm_bridge”…”�”}”(hjAÄh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj>Äubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jCÄŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jŒof_drm_find_bridge”sbŒc.of_drm_find_bridge”†”asbuh1hhjÄh²hh³j/Äh´Mhubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbÄh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÄh²hh³j/Äh´Mhubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjpÄh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÄh²hh³j/Äh´MhubjÍ )�”}”(hŒof_drm_find_bridge”h]”jÓ )�”}”(hj_Äh]”hŒof_drm_find_bridge”…”�”}”(hj�Äh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj}Äubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÄh²hh³j/Äh´MhubjÞ)�”}”(hŒ(struct device_node *np)”h]”jä)�”}”(hŒstruct device_node *np”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Œ device_node”h]”hŒ device_node”…”�”}”(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.of_drm_find_bridge”†”asbuh1hhj˜Äubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØÄh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj˜Äubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjæÄh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj˜ÄubjÓ )�”}”(hŒnp”h]”hŒnp”…”�”}”(hjóÄh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj˜Äubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj”Äubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjÄh²hh³j/Äh´Mhubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjÄh²hh³j/Äh´Mhubah}”(h]”jÄah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j/Äh´MhhjÄh²hubj )�”}”(hhh]”hÎ)�”}”(hŒJfind the bridge corresponding to the device node in the global bridge list”h]”hŒJfind the bridge corresponding to the device node in the global bridge list”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MhhjÅh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÄh²hh³j/Äh´Mhubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j5Åj$ j5Åj% ‰j& ‰j' ‰uh1j˜ h²hhj­Ih³Nh´Nubj) )�”}”(hX@**Parameters** ``struct device_node *np`` device node **Description** This function is deprecated. Convert to of_drm_find_and_get_bridge() instead for proper refcounting. The bridge returned by this function is not refcounted. This is dangerous because the bridge might be deallocated even before the caller has a chance to use it. To use this function you have to do one of: - get a reference with drm_bridge_get() as soon as possible to minimize the race window, and then drm_bridge_put() when no longer using the pointer - not call drm_bridge_get() or drm_bridge_put() at all, which used to be the correct practice before dynamic bridge lifetime was introduced - again, convert to of_drm_find_and_get_bridge(), which is the only safe thing to do **Return** drm_bridge control struct on success, NULL on failure”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj?Åh]”hŒ Parameters”…”�”}”(hjAÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj=Åubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Mlhj9Åubjw )�”}”(hhh]”j| )�”}”(hŒ'``struct device_node *np`` device node ”h]”(j‚ )�”}”(hŒ``struct device_node *np``”h]”jˆ )�”}”(hj^Åh]”hŒstruct device_node *np”…”�”}”(hj`Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj\Åubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MkhjXÅubjž )�”}”(hhh]”hÎ)�”}”(hŒ device node”h]”hŒ device node”…”�”}”(hjwÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jsÅh´MkhjtÅubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjXÅubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jsÅh´MkhjUÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj9ÅubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj™Åh]”hŒ Description”…”�”}”(hj›Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj—Åubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Mmhj9ÅubhÎ)�”}”(hŒdThis function is deprecated. Convert to of_drm_find_and_get_bridge() instead for proper refcounting.”h]”hŒdThis function is deprecated. Convert to of_drm_find_and_get_bridge() instead for proper refcounting.”…”�”}”(hj¯Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Mlhj9ÅubhÎ)�”}”(hŒÌThe bridge returned by this function is not refcounted. This is dangerous because the bridge might be deallocated even before the caller has a chance to use it. To use this function you have to do one of:”h]”hŒÌThe bridge returned by this function is not refcounted. This is dangerous because the bridge might be deallocated even before the caller has a chance to use it. To use this function you have to do one of:”…”�”}”(hj¾Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´Mohj9Åubhú)�”}”(hhh]”(hÿ)�”}”(hŒ’get a reference with drm_bridge_get() as soon as possible to minimize the race window, and then drm_bridge_put() when no longer using the pointer ”h]”hÎ)�”}”(hŒ‘get a reference with drm_bridge_get() as soon as possible to minimize the race window, and then drm_bridge_put() when no longer using the pointer”h]”hŒ‘get a reference with drm_bridge_get() as soon as possible to minimize the race window, and then drm_bridge_put() when no longer using the pointer”…”�”}”(hjÔÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MshjÐÅubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjÍÅubhÿ)�”}”(hŒŠnot call drm_bridge_get() or drm_bridge_put() at all, which used to be the correct practice before dynamic bridge lifetime was introduced ”h]”hÎ)�”}”(hŒ‰not call drm_bridge_get() or drm_bridge_put() at all, which used to be the correct practice before dynamic bridge lifetime was introduced”h]”hŒ‰not call drm_bridge_get() or drm_bridge_put() at all, which used to be the correct practice before dynamic bridge lifetime was introduced”…”�”}”(hjíÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MwhjéÅubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjÍÅubhÿ)�”}”(hŒSagain, convert to of_drm_find_and_get_bridge(), which is the only safe thing to do ”h]”hÎ)�”}”(hŒRagain, convert to of_drm_find_and_get_bridge(), which is the only safe thing to do”h]”hŒRagain, convert to of_drm_find_and_get_bridge(), which is the only safe thing to do”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´MzhjÆubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjÍÅubeh}”(h]”h ]”h"]”h$]”h&]”jNjÅ<uh1hùh³jâÅh´Mshj9ÅubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj#Æh]”hŒReturn”…”�”}”(hj%Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj!Æubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M}hj9ÅubhÎ)�”}”(hŒ5drm_bridge control struct on success, NULL on failure”h]”hŒ5drm_bridge control struct on success, NULL on failure”…”�”}”(hj9Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M~hj9Åubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj­Ih²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ*of_drm_get_bridge_by_endpoint (C function)”Œc.of_drm_get_bridge_by_endpoint”hNt”auh1j† hj­Ih²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒhstruct drm_bridge * of_drm_get_bridge_by_endpoint (const struct device_node *np, int port, int endpoint)”h]”j¤ )�”}”(hŒfstruct drm_bridge *of_drm_get_bridge_by_endpoint(const struct device_node *np, int port, int endpoint)”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjhÆh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjdÆh²hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M’ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvÆh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjdÆh²hh³juÆh´M’ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_bridge”h]”hŒ drm_bridge”…”�”}”(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Œof_drm_get_bridge_by_endpoint”sbŒc.of_drm_get_bridge_by_endpoint”†”asbuh1hhjdÆh²hh³juÆh´M’ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨Æh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjdÆh²hh³juÆh´M’ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj¶Æh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjdÆh²hh³juÆh´M’ubjÍ )�”}”(hŒof_drm_get_bridge_by_endpoint”h]”jÓ )�”}”(hj¥Æh]”hŒof_drm_get_bridge_by_endpoint”…”�”}”(hjÇÆh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÃÆubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjdÆh²hh³juÆh´M’ubjÞ)�”}”(hŒ6(const struct device_node *np, int port, int endpoint)”h]”(jä)�”}”(hŒconst struct device_node *np”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(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Œ device_node”h]”hŒ device_node”…”�”}”(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.of_drm_get_bridge_by_endpoint”†”asbuh1hhjÞÆubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9Çh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÞÆubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjGÇh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÞÆubjÓ •)�”}”(hŒnp”h]”hŒnp”…”�”}”(hjTÇh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÞÆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÚÆubjä)�”}”(hŒint port”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjmÇh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjiÇubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{Çh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjiÇubjÓ )�”}”(hŒport”h]”hŒport”…”�”}”(hj‰Çh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjiÇubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÚÆubjä)�”}”(hŒ int endpoint”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(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Œendpoint”h]”hŒendpoint”…”�”}”(hj¾Çh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjžÇubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÚÆubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjdÆh²hh³juÆh´M’ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj`Æh²hh³juÆh´M’ubah}”(h]”j[Æah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³juÆh´M’hj]Æh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ.return DRM bridge connected to a port/endpoint”h]”hŒ.return DRM bridge connected to a port/endpoint”…”�”}”(hjèÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M’hjåÇh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj]Æh²hh³juÆh´M’ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jÈj$ jÈj% ‰j& ‰j' ‰uh1j˜ h²hhj­Ih³Nh´Nubj) )�”}”(hX0**Parameters** ``const struct device_node *np`` device tree node containing output ports ``int port`` port in the device tree node, or -1 for the first port found ``int endpoint`` endpoint in the device tree node, or -1 for the first endpoint found **Description** Given a DT node's port and endpoint number, find the connected node and return the associated drm_bridge device. The refcount of the returned bridge is incremented. Use drm_bridge_put() when done with it. Returns a pointer to the connected drm_bridge, or a negative error on failure”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj Èh]”hŒ Parameters”…”�”}”(hj Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÈubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M–hjÈubjw )�”}”(hhh]”(j| )�”}”(hŒJ``const struct device_node *np`` device tree node containing output ports ”h]”(j‚ )�”}”(hŒ ``const struct device_node *np``”h]”jˆ )�”}”(hj)Èh]”hŒconst struct device_node *np”…”�”}”(hj+Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj'Èubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M“hj#Èubjž )�”}”(hhh]”hÎ)�”}”(hŒ(device tree node containing output ports”h]”hŒ(device tree node containing output ports”…”�”}”(hjBÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j>Èh´M“hj?Èubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj#Èubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j>Èh´M“hj Èubj| )�”}”(hŒJ``int port`` port in the device tree node, or -1 for the first port found ”h]”(j‚ )�”}”(hŒ ``int port``”h]”jˆ )�”}”(hjbÈh]”hŒint port”…”�”}”(hjdÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj`Èubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:193: ./drivers/gpu/drm/drm_bridge.c”h´M”hj\Èubjž )�”}”(hhh]”hÎ)�”}”(hŒÍubjä)�”}”(hŒstruct drm_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Œ drm_encoder”h]”hŒ drm_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ÍŒc.drm_bridge_connector_init”†”asbuh1hhj²Íubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjòÍh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj²Íubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj²Í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”ˆjê jë uh1jãhj>Íubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjÈÌh²hh³jÙÌh´M#ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ-Initialise a connector for a chain of bridges”h]”hŒ-Initialise a connector for a chain of bridges”…”�”}”(hj7Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œs/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:206: ./drivers/gpu/drm/display/drm_bridge_connector.c”h´M#hj4Î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# jOÎj$ jOÎj% ‰j& ‰j' ‰uh1j˜ h²hhj¢Ìh³Nh´Nubj) )�”}”(hXÕ**Parameters** ``struct drm_device *drm`` the DRM device ``struct drm_encoder *encoder`` the encoder where the bridge chain starts **Description** Create a new :c:type:`drm_bridge_connector` for the **drm** device. The connector is allocated, initialised, registered with the **drm** device and attached to **encoder**. The connector is associated with a chain of bridges that starts at the **encoder**. All bridges in the chain shall report bridge operation flags (:c:type:`drm_bridge->ops `) and bridge output type (:c:type:`drm_bridge->type `), and none of them may create a DRM connector directly. Returns a pointer to the new connector on success, or a negative error pointer otherwise.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjYÎh]”hŒ Parameters”…”�”}”(hj[Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjWÎubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œs/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:206: ./drivers/gpu/drm/display/drm_bridge_connector.c”h´M'hjSÎubjw )�”}”(hhh]”(j| )�”}”(hŒ*``struct drm_device *drm`` the DRM device ”h]”(j‚ )�”}”(hŒ``struct drm_device *drm``”h]”jˆ )�”}”(hjxÎh]”hŒstruct drm_device *drm”…”�”}”(hjzÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjvÎubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œs/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:206: ./drivers/gpu/drm/display/drm_bridge_connector.c”h´M$hjrÎubjž )�”}”(hhh]”hÎ)�”}”(hŒthe DRM device”h]”hŒthe DRM device”…”�”}”(hj‘Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j�Îh´M$hjŽÎubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjrÎubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j�Îh´M$hjoÎubj| )�”}”(hŒJ``struct drm_encoder *encoder`` the encoder where the bridge chain starts ”h]”(j‚ )�”}”(hŒ``struct drm_encoder *encoder``”h]”jˆ )�”}”(hj±Îh]”hŒstruct drm_encoder *encoder”…”�”}”(hj³Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¯Îubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œs/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:206: ./drivers/gpu/drm/display/drm_bridge_connector.c”h´M%hj«Îubjž )�”}”(hhh]”hÎ)�”}”(hŒ)the encoder where the bridge chain starts”h]”hŒ)the encoder where the bridge chain starts”…”�”}”(hjÊÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÆÎh´M%hjÇÎubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj«Îubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÆÎh´M%hjoÎubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjSÎubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjìÎh]”hŒ Description”…”�”}”(hjîÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjêÎubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œs/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:206: ./drivers/gpu/drm/display/drm_bridge_connector.c”h´M'hjSÎubhÎ)�”}”(hŒ¬Create a new :c:type:`drm_bridge_connector` for the **drm** device. The connector is allocated, initialised, registered with the **drm** device and attached to **encoder**.”h]”(hŒ Create a new ”…”�”}”(hjÏh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_bridge_connector`”h]”jˆ )�”}”(hj Ïh]”hŒdrm_bridge_connector”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj Ïubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_bridge_connector”uh1hh³Œs/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:206: ./drivers/gpu/drm/display/drm_bridge_connector.c”h´M&hjÏubhŒ for the ”…”�”}”(hjÏh²hh³Nh´Nubj3 )�”}”(hŒ**drm**”h]”hŒdrm”…”�”}”(hj.Ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÏubhŒF device. The connector is allocated, initialised, registered with the ”…”�”}”(hjÏh²hh³Nh´Nubj3 )�”}”(hŒ**drm**”h]”hŒdrm”…”�”}”(hj@Ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÏubhŒ device and attached to ”…”�”}”(hjÏh²hh³Nh´Nubj3 )�”}”(hŒ **encoder**”h]”hŒencoder”…”�”}”(hjRÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÏubhŒ.”…”�”}”(hjÏh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j)Ïh´M&hjSÎubhÎ)�”}”(hX1The connector is associated with a chain of bridges that starts at the **encoder**. All bridges in the chain shall report bridge operation flags (:c:type:`drm_bridge->ops `) and bridge output type (:c:type:`drm_bridge->type `), and none of them may create a DRM connector directly.”h]”(hŒGThe connector is associated with a chain of bridges that starts at the ”…”�”}”(hjjÏh²hh³Nh´Nubj3 )�”}”(hŒ **encoder**”h]”hŒencoder”…”�”}”(hjrÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjjÏubhŒ@. All bridges in the chain shall report bridge operation flags (”…”�”}”(hjjÏh²hh³Nh´Nubh)�”}”(hŒ&:c:type:`drm_bridge->ops `”h]”jˆ )�”}”(hj†Ïh]”hŒdrm_bridge->ops”…”�”}”(hjˆÏh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj„Ïubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_bridge”uh1hh³Œs/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:206: ./drivers/gpu/drm/display/drm_bridge_connector.c”h´M*hjjÏubhŒ) and bridge output type (”…”�”}”(hjjÏh²hh³Nh´Nubh)�”}”(hŒ':c:type:`drm_bridge->type `”h]”jˆ )�”}”(hjªÏh]”hŒdrm_bridge->type”…”�”}”(hj¬Ïh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj¨Ïubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_bridge”uh1hh³j£Ïh´M*hjjÏubhŒ8), and none of them may create a DRM connector directly.”…”�”}”(hjjÏh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j£Ïh´M*hjSÎubhÎ)�”}”(hŒYReturns a pointer to the new connector on success, or a negative error pointer otherwise.”h]”hŒYReturns a pointer to the new connector on success, or a negative error pointer otherwise.”…”�”}”(hjÑÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œs/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:206: ./drivers/gpu/drm/display/drm_bridge_connector.c”h´M/hjSÎubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj¢Ìh²hh³Nh´Nubeh}”(h]”jŽah ]”h"]”Œ!bridge connector helper reference”ah$]”h&]”uh1hµhjc?h²hh³hÌh´KÌubh¶)�”}”(hhh]”(h»)�”}”(hŒPanel-Bridge Helper Reference”h]”hŒPanel-Bridge Helper Reference”…”�”}”(hjñÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÊjªuh1hºhjîÏh²hh³hÌh´KÒubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ drm_bridge_is_panel (C function)”Œc.drm_bridge_is_panel”hNt”auh1j† hjîÏh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ:bool drm_bridge_is_panel (const struct drm_bridge *bridge)”h]”j¤ )�”}”(hŒ9bool drm_bridge_is_panel(const struct drm_bridge *bridge)”h]”(j¦)�”}”(hj£Ih]”hŒbool”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjÐh²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.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Œdrm_bridge_is_panel”h]”jÓ )�”}”(hŒdrm_bridge_is_panel”h]”hŒdrm_bridge_is_panel”…”�”}”(hj8Ðh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj4Ðubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÐh²hh³j%Ðh´KàubjÞ)�”}”(hŒ!(const struct drm_bridge *bridge)”h]”jä)�”}”(hŒconst struct drm_bridge *bridge”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hjTÐh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjPÐubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjaÐh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjPÐubjª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjoÐh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjPÐubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|Ðh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjPÐubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_bridge”h]”hŒ drm_bridge”…”�”}”(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%)�”}”jj:ÐsbŒc.drm_bridge_is_panel”†”asbuh1hhjPÐubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­Ðh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjPÐubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj»Ðh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjPÐubjÓ )�”}”(hŒbridge”h]”hŒbridge”…”�”}”(hjÈÐh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjPÐubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjLÐubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjÐh²hh³j%Ðh´Kàubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ)Checks if a drm_bridge is a panel_bridge.”h]”hŒ)Checks if a drm_bridge is a panel_bridge.”…”�”}”(hjòÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.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²hhjîÏh³Nh´Nubj) )�”}”(hŒ§**Parameters** ``const struct drm_bridge *bridge`` The drm_bridge to be checked. **Description** Returns true if the bridge is a panel bridge, or false otherwise.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjÑh]”hŒ Parameters”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÑubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´KähjÑubjw )�”}”(hhh]”j| )�”}”(hŒB``const struct drm_bridge *bridge`` The drm_bridge to be checked. ”h]”(j‚ )�”}”(hŒ#``const struct drm_bridge *bridge``”h]”jˆ )�”}”(hj3Ñh]”hŒconst struct drm_bridge *bridge”…”�”}”(hj5Ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj1Ñubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´Kâhj-Ñubjž )�”}”(hhh]”hÎ)�”}”(hŒThe drm_bridge to be checked.”h]”hŒThe drm_bridge to be checked.”…”�”}”(hjLÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jHÑh´KâhjIÑubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj-Ñubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jHÑh´Kâhj*Ñubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÑubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjnÑh]”hŒ Description”…”�”}”(hjpÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjlÑubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´KähjÑubhÎ)�”}”(hŒAReturns true if the bridge is a panel bridge, or false otherwise.”h]”hŒAReturns true if the bridge is a panel bridge, or false otherwise.”…”�”}”(hj„Ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´KãhjÑubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjîÏh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ!drm_panel_bridge_add (C function)”Œc.drm_panel_bridge_add”hNt”auh1j† hjîÏh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒBstruct drm_bridge * drm_panel_bridge_add (struct drm_panel *panel)”h]”j¤ )�”}”(hŒ@struct drm_bridge *drm_panel_bridge_add(struct drm_panel *panel)”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj³Ñh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj¯Ñh²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.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íubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_bridge”h]”hŒ drm_bridge”…”�”}”(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Œdrm_panel_bridge_add”sbŒc.drm_panel_bridge_add”†”asbuh1hhj¯Ñh²hh³jÀÑh´Kíubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjóÑh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¯Ñh²hh³jÀÑh´Kíubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¯Ñh²hh³jÀÑh´KíubjÍ )�”}”(hŒdrm_panel_bridge_add”h]”jÓ )�”}”(hjðÑh]”hŒdrm_panel_bridge_add”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÒubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj¯Ñh²hh³jÀÑh´KíubjÞ)�”}”(hŒ(struct drm_panel *panel)”h]”jä)�”}”(hŒstruct drm_panel *panel”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Œ drm_panel”h]”hŒ drm_panel”…”�”}”(hjKÒh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjHÒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jMÒŒmodname”NŒ classname”Njé jì )�”}”jï ]”jîÑŒc.drm_panel_bridge_add”†”asbuh1hhj)Òubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjiÒh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj)Òubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjwÒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj)ÒubjÓ )�”}”(hŒpanel”h]”hŒpanel”…”�”}”(hj„Òh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj)Òubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj%Òubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj¯Ñh²hh³jÀÑh´Kíubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ~Creates a :c:type:`drm_bridge` and :c:type:`drm_connector` that just calls the appropriate functions from :c:type:`drm_panel`.”h]”(hŒ Creates a ”…”�”}”(hj®Òh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_bridge`”h]”jˆ )�”}”(hj¸Òh]”hŒ drm_bridge”…”�”}”(hjºÒh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj¶Òubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jì )�”}”jï ]”jîÑŒc.drm_panel_bridge_add”†”asbjñ Œ drm_bridge”uh1hh³j%Ðh´Kàhj®ÒubhŒ and ”…”�”}”(hj®Òh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_connector`”h]”jˆ )�”}”(hjàÒh]”hŒ drm_connector”…”�”}”(hjâÒh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÞÒubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jÔÒjñ Œ drm_connector”uh1hh³j%Ðh´Kàhj®ÒubhŒ0 that just calls the appropriate functions from ”…”�”}”(hj®Òh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_panel`”h]”jˆ )�”}”(hjÓh]”hŒ drm_panel”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÓubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jÔÒjñ Œ drm_panel”uh1hh³j%Ðh´Kàhj®ÒubhŒ.”…”�”}”(hj®Òh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.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# j4Ój$ j4Ój% ‰j& ‰j' ‰uh1j˜ h²hhjîÏh³Nh´Nubj) )�”}”(hX;**Parameters** ``struct drm_panel *panel`` The drm_panel being wrapped. Must be non-NULL. **Description** For drivers converting from directly using drm_panel: The expected usage pattern is that during either encoder module probe or DSI host attach, a drm_panel will be looked up through drm_of_find_panel_or_bridge(). drm_panel_bridge_add() is used to wrap that panel in the new bridge, and the result can then be passed to drm_bridge_attach(). The drm_panel_prepare() and related functions can be dropped from the encoder driver (they're now called by the KMS helpers before calling into the encoder), along with connector creation. When done with the bridge (after drm_mode_config_cleanup() if the bridge has already been attached), then drm_panel_bridge_remove() to free it. The connector type is set to **panel->connector_type**, which must be set to a known type. Calling this function with a panel whose connector type is DRM_MODE_CONNECTOR_Unknown will return ERR_PTR(-EINVAL). See devm_drm_panel_bridge_add() for an automatically managed version of this function.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj>Óh]”hŒ Parameters”…”�”}”(hj@Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj<Óubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´Kñhj8Óubjw )�”}”(hhh]”j| )�”}”(hŒL``struct drm_panel *panel`` The drm_panel being wrapped. Must be non-NULL. ”h]”(j‚ )�”}”(hŒ``struct drm_panel *panel``”h]”jˆ )�”}”(hj]Óh]”hŒstruct drm_panel *panel”…”�”}”(hj_Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj[Óubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´KðhjWÓubjž )�”}”(hhh]”hÎ)�”}”(hŒ/The drm_panel being wrapped. Must be non-NULL.”h]”hŒ/The drm_panel being wrapped. Must be non-NULL.”…”�”}”(hjvÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jrÓh´KðhjsÓubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjWÓubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jrÓh´KðhjTÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj8ÓubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj˜Óh]”hŒ Description”…”�”}”(hjšÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj–Óubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´Kòhj8ÓubhÎ)�”}”(hX£For drivers converting from directly using drm_panel: The expected usage pattern is that during either encoder module probe or DSI host attach, a drm_panel will be looked up through drm_of_find_panel_or_bridge(). drm_panel_bridge_add() is used to wrap that panel in the new bridge, and the result can then be passed to drm_bridge_attach(). The drm_panel_prepare() and related functions can be dropped from the encoder driver (they're now called by the KMS helpers before calling into the encoder), along with connector creation. When done with the bridge (after drm_mode_config_cleanup() if the bridge has already been attached), then drm_panel_bridge_remove() to free it.”h]”hX¥For drivers converting from directly using drm_panel: The expected usage pattern is that during either encoder module probe or DSI host attach, a drm_panel will be looked up through drm_of_find_panel_or_bridge(). drm_panel_bridge_add() is used to wrap that panel in the new bridge, and the result can then be passed to drm_bridge_attach(). The drm_panel_prepare() and related functions can be dropped from the encoder driver (they’re now called by the KMS helpers before calling into the encoder), along with connector creation. When done with the bridge (after drm_mode_config_cleanup() if the bridge has already been attached), then drm_panel_bridge_remove() to free it.”…”�”}”(hj®Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´Kñhj8ÓubhÎ)�”}”(hŒÎThe connector type is set to **panel->connector_type**, which must be set to a known type. Calling this function with a panel whose connector type is DRM_MODE_CONNECTOR_Unknown will return ERR_PTR(-EINVAL).”h]”(hŒThe connector type is set to ”…”�”}”(hj½Óh²hh³Nh´Nubj3 )�”}”(hŒ**panel->connector_type**”h]”hŒpanel->connector_type”…”�”}”(hjÅÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj½ÓubhŒ˜, which must be set to a known type. Calling this function with a panel whose connector type is DRM_MODE_CONNECTOR_Unknown will return ERR_PTR(-EINVAL).”…”�”}”(hj½Óh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´Kýhj8ÓubhÎ)�”}”(hŒVSee devm_drm_panel_bridge_add() for an automatically managed version of this function.”h]”hŒVSee devm_drm_panel_bridge_add() for an automatically managed version of this function.”…”�”}”(hjÞÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´Mhj8Óubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjîÏh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ'drm_panel_bridge_add_typed (C function)”Œc.drm_panel_bridge_add_typed”hNt”auh1j† hjîÏh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ\struct drm_bridge * drm_panel_bridge_add_typed (struct drm_panel *panel, u32 connector_type)”h]”j¤ )�”}”(hŒZstruct drm_bridge *drm_panel_bridge_add_typed(struct drm_panel *panel, u32 connector_type)”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj Ôh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj Ôh²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj Ôh²hh³jÔh´Mubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_bridge”h]”hŒ drm_bridge”…”�”}”(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Œdrm_panel_bridge_add_typed”sbŒc.drm_panel_bridge_add_typed”†”asbuh1hhj Ôh²hh³jÔh´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjMÔh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj Ôh²hh³jÔh´Mubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj[Ôh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj Ôh²hh³jÔh´MubjÍ )�”}”(hŒdrm_panel_bridge_add_typed”h]”jÓ )�”}”(hjJÔh]”hŒdrm_panel_bridge_add_typed”…”�”}”(hjlÔh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjhÔubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj Ôh²hh³jÔh´MubjÞ)�”}”(hŒ-(struct drm_panel *panel, u32 connector_type)”h]”(jä)�”}”(hŒstruct drm_panel *panel”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Œ drm_panel”h]”hŒ drm_panel”…”�”}”(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ï ]”jHÔŒc.drm_panel_bridge_add_typed”†”asbuh1hhjƒÔubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃÔh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjƒÔubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÑÔh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjƒÔubjÓ )�”}”(hŒpanel”h]”hŒpanel”…”�”}”(hjÞÔh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjƒÔubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÔubjä)�”}”(hŒu32 connector_type”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ï ]”jHÔŒc.drm_panel_bridge_add_typed”†”asbuh1hhjóÔubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjóÔubjÓ )�”}”(hŒconnector_type”h]”hŒconnector_type”…”�”}”(hj&Õh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjóÔubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÔubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj Ôh²hh³jÔh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjÔh²hh³jÔh´Mubah}”(h]”jÔah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jÔh´MhjÔh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ[Creates a :c:type:`drm_bridge` and :c:type:`drm_connector` with an explicit connector type.”h]”(hŒ Creates a ”…”�”}”(hjPÕh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_bridge`”h]”jˆ )�”}”(hjZÕh]”hŒ drm_bridge”…”�”}”(hj\Õh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjXÕubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jì )�”}”jï ]”jHÔŒc.drm_panel_bridge_add_typed”†”asbjñ Œ drm_bridge”uh1hh³j%Ðh´KàhjPÕubhŒ and ”…”�”}”(hjPÕh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_connector`”h]”jˆ )�”}”(hj‚Õh]”hŒ drm_connector”…”�”}”(hj„Õh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj€Õubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jvÕjñ Œ drm_connector”uh1hh³j%Ðh´KàhjPÕubhŒ! with an explicit connector type.”…”�”}”(hjPÕh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´MhjMÕh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÔh²hh³jÔh´Mubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j³Õj$ j³Õj% ‰j& ‰j' ‰uh1j˜ h²hhjîÏh³Nh´Nubj) )�”}”(hXê**Parameters** ``struct drm_panel *panel`` The drm_panel being wrapped. Must be non-NULL. ``u32 connector_type`` The connector type (DRM_MODE_CONNECTOR_*) **Description** This is just like drm_panel_bridge_add(), but forces the connector type to **connector_type** instead of infering it from the panel. This function is deprecated and should not be used in new drivers. Use drm_panel_bridge_add() instead, and fix panel drivers as necessary if they don't report a connector type.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj½Õh]”hŒ Parameters”…”�”}”(hj¿Õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj»Õubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´Mhj·Õubjw )�”}”(hhh]”(j| )�”}”(hŒL``struct drm_panel *panel`` The drm_panel being wrapped. Must be non-NULL. ”h]”(j‚ )�”}”(hŒ``struct drm_panel *panel``”h]”jˆ )�”}”(hjÜÕh]”hŒstruct drm_panel *panel”…”�”}”(hjÞÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÚÕubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´MhjÖÕubjž )�”}”(hhh]”hÎ)�”}”(hŒ/The drm_panel being wrapped. Must be non-NULL.”h]”hŒ/The drm_panel being wrapped. Must be non-NULL.”…”�”}”(hjõÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jñÕh´MhjòÕubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÖÕubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jñÕh´MhjÓÕubj| )�”}”(hŒA``u32 connector_type`` The connector type (DRM_MODE_CONNECTOR_*) ”h]”(j‚ )�”}”(hŒ``u32 connector_type``”h]”jˆ )�”}”(hjÖh]”hŒu32 connector_type”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÖubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´MhjÖubjž )�”}”(hhh]”hÎ)�”}”(hŒ)The connector type (DRM_MODE_CONNECTOR_*)”h]”hŒ)The connector type (DRM_MODE_CONNECTOR_*)”…”�”}”(hj.Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j*Öh´Mhj+Öubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÖubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j*Öh´MhjÓÕubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj·ÕubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjPÖh]”hŒ Description”…”�”}”(hjRÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjNÖubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´Mhj·ÕubhÎ)�”}”(hŒ„This is just like drm_panel_bridge_add(), but forces the connector type to **connector_type** instead of infering it from the panel.”h]”(hŒKThis is just like drm_panel_bridge_add(), but forces the connector type to ”…”�”}”(hjfÖh²hh³Nh´Nubj3 )�”}”(hŒ**connector_type**”h]”hŒconnector_type”…”�”}”(hjnÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjfÖubhŒ' instead of infering it from the panel.”…”�”}”(hjfÖh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´Mhj·ÕubhÎ)�”}”(hŒ°This function is deprecated and should not be used in new drivers. Use drm_panel_bridge_add() instead, and fix panel drivers as necessary if they don't report a connector type.”h]”hŒ²This function is deprecated and should not be used in new drivers. Use drm_panel_bridge_add() instead, and fix panel drivers as necessary if they don’t report a connector type.”…”�”}”(hj‡Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´Mhj·Õubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjîÏh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ$drm_panel_bridge_remove (C function)”Œc.drm_panel_bridge_remove”hNt”auh1j† hjîÏh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ8void drm_panel_bridge_remove (struct drm_bridge *bridge)”h]”j¤ )�”}”(hŒ7void drm_panel_bridge_remove(struct drm_bridge *bridge)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¶Öh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj²Öh²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´M7ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅÖh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj²Öh²hh³jÄÖh´M7ubjÍ )�”}”(hŒdrm_panel_bridge_remove”h]”jÓ )�”}”(hŒdrm_panel_bridge_remove”h]”hŒdrm_panel_bridge_remove”…”�”}”(hj×Öh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÓÖubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj²Öh²hh³jÄÖh´M7ubjÞ)�”}”(hŒ(struct drm_bridge *bridge)”h]”jä)�”}”(hŒstruct drm_bridge *bridge”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Œ drm_bridge”h]”hŒ drm_bridge”…”�”}”(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%)�”}”jjÙÖsbŒc.drm_panel_bridge_remove”†”asbuh1hhjïÖubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1×h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjïÖubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj?×h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjïÖubjÓ )�”}”(hŒbridge”h]”hŒbridge”…”�”}”(hjL×h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjïÖubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjëÖubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj²Öh²hh³jÄÖh´M7ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj®Öh²hh³jÄÖh´M7ubah}”(h]”j©Öah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jÄÖh´M7hj«Öh²hubj )�”}”(hhh]”hÎ)�”}”(hŒEUnregisters and frees a drm_bridge created by drm_panel_bridge_add().”h]”hŒEUnregisters and frees a drm_bridge created by drm_panel_bridge_add().”…”�”}”(hjv×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´M7hjs×h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj«Öh²hh³jÄÖh´M7ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jŽ×j$ jŽ×j% ‰j& ‰j' ‰uh1j˜ h²hhjîÏh³Nh´Nubj) )�”}”(hŒK**Parameters** ``struct drm_bridge *bridge`` The drm_bridge being freed.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj˜×h]”hŒ Parameters”…”�”}”(hjš×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj–×ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´M;hj’×ubjw )�”}”(hhh]”j| )�”}”(hŒ9``struct drm_bridge *bridge`` The drm_bridge being freed.”h]”(j‚ )�”}”(hŒ``struct drm_bridge *bridge``”h]”jˆ )�”}”(hj·×h]”hŒstruct drm_bridge *bridge”…”�”}”(hj¹×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjµ×ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´M=hj±×ubjž )�”}”(hhh]”hÎ)�”}”(hŒThe drm_bridge being freed.”h]”hŒThe drm_bridge being freed.”…”�”}”(hjÐ×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´M:hjÍ×ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj±×ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÌ×h´M=hj®×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj’×ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjîÏh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ-drm_panel_bridge_set_orientation (C function)”Œ"c.drm_panel_bridge_set_orientation”hNt”auh1j† hjîÏh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒaint drm_panel_bridge_set_orientation (struct drm_connector *connector, struct drm_bridge *bridge)”h]”j¤ )�”}”(hŒ`int drm_panel_bridge_set_orientation(struct drm_connector *connector, struct drm_bridge *bridge)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj Øh²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´MTubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Øh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj Øh²hh³jØh´MTubjÍ )�”}”(hŒ drm_panel_bridge_set_orientation”h]”jÓ )�”}”(hŒ drm_panel_bridge_set_orientation”h]”hŒ drm_panel_bridge_set_orientation”…”�”}”(hj2Øh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj.Øubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj Øh²hh³jØh´MTubjÞ)�”}”(hŒ<(struct drm_connector *connector, struct drm_bridge *bridge)”h]”(jä)�”}”(hŒstruct drm_connector *connector”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjNØh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjJØubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[Øh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjJØubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_connector”h]”hŒ drm_connector”…”�”}”(hjlØh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjiØubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jnØŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj4ØsbŒ"c.drm_panel_bridge_set_orientation”†”asbuh1hhjJØubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒØh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjJØubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjšØh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjJØubjÓ )�”}”(hŒ connector”h]”hŒ connector”…”�”}”(hj§Øh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjJØubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjFØubjä)�”}”(hŒstruct drm_bridge *bridge”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Œ drm_bridge”h]”hŒ drm_bridge”…”�”}”(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.drm_panel_bridge_set_orientation”†”asbuh1hhj¼Øubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjüØh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¼Øubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj Ùh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¼ØubjÓ )�”}”(hŒbridge”h]”hŒbridge”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¼Øubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjFØubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj Øh²hh³jØh´MTubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj Øh²hh³jØh´MTubah}”(h]”jØah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jØh´MThjØh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ^Set the connector's panel orientation from the bridge that can be transformed to panel bridge.”h]”hŒ`Set the connector’s panel orientation from the bridge that can be transformed to panel bridge.”…”�”}”(hjAÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´MThj>Ùh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjØh²hh³jØh´MTubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jYÙj$ jYÙj% ‰j& ‰j' ‰uh1j˜ h²hhjîÏh³Nh´Nubj) )�”}”(hŒö**Parameters** ``struct drm_connector *connector`` The connector to be set panel orientation. ``struct drm_bridge *bridge`` The drm_bridge to be transformed to panel bridge. **Description** Returns 0 on success, negative errno on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjcÙh]”hŒ Parameters”…”�”}”(hjeÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjaÙubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´MXhj]Ùubjw )�”}”(hhh]”(j| )�”}”(hŒO``struct drm_connector *connector`` The connector to be set panel orientation. ”h]”(j‚ )�”}”(hŒ#``struct drm_connector *connector``”h]”jˆ )�”}”(hj‚Ùh]”hŒstruct drm_connector *connector”…”�”}”(hj„Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj€Ùubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´MWhj|Ùubjž )�”}”(hhh]”hÎ)�”}”(hŒ*The connector to be set panel orientation.”h]”hŒ*The connector to be set panel orientation.”…”�”}”(hj›Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j—Ùh´MWhj˜Ùubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj|Ùubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j—Ùh´MWhjyÙubj| )�”}”(hŒP``struct drm_bridge *bridge`` The drm_bridge to be transformed to panel bridge. ”h]”(j‚ )�”}”(hŒ``struct drm_bridge *bridge``”h]”jˆ )�”}”(hj»Ùh]”hŒstruct drm_bridge *bridge”…”�”}”(hj½Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¹Ùubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´MXhjµÙubjž )�”}”(hhh]”hÎ)�”}”(hŒ1The drm_bridge to be transformed to panel bridge.”h]”hŒ1The drm_bridge to be transformed to panel bridge.”…”�”}”(hjÔÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÐÙh´MXhjÑÙubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjµÙubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÐÙh´MXhjyÙubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj]ÙubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjöÙh]”hŒ Description”…”�”}”(hjøÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjôÙubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´MZhj]ÙubhÎ)�”}”(hŒ0Returns 0 on success, negative errno on failure.”h]”hŒ0Returns 0 on success, negative errno on failure.”…”�”}”(hj Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´MYhj]Ùubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjîÏh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ&devm_drm_panel_bridge_add (C function)”Œc.devm_drm_panel_bridge_add”hNt”auh1j† hjîÏh²hh³Nh´Nubj™ )�”}”(hhh]”(jž •)�”}”(hŒ[struct drm_bridge * devm_drm_panel_bridge_add (struct device *dev, struct drm_panel *panel)”h]”j¤ )�”}”(hŒYstruct drm_bridge *devm_drm_panel_bridge_add(struct device *dev, struct drm_panel *panel)”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj;Úh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj7Úh²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´Mxubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIÚh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj7Úh²hh³jHÚh´Mxubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_bridge”h]”hŒ drm_bridge”…”�”}”(hjZÚh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjWÚubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j\ÚŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jŒdevm_drm_panel_bridge_add”sbŒc.devm_drm_panel_bridge_add”†”asbuh1hhj7Úh²hh³jHÚh´Mxubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{Úh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj7Úh²hh³jHÚh´Mxubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj‰Úh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj7Úh²hh³jHÚh´MxubjÍ )�”}”(hŒdevm_drm_panel_bridge_add”h]”jÓ )�”}”(hjxÚh]”hŒdevm_drm_panel_bridge_add”…”�”}”(hjšÚh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj–Úubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj7Úh²hh³jHÚh´MxubjÞ)�”}”(hŒ-(struct device *dev, struct drm_panel *panel)”h]”(jä)�”}”(hŒstruct device *dev”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Œdevice”h]”hŒdevice”…”�”}”(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ï ]”jvÚŒc.devm_drm_panel_bridge_add”†”asbuh1hhj±Úubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñÚh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj±Úubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÿÚh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj±ÚubjÓ )�”}”(hŒdev”h]”hŒdev”…”�”}”(hj Ûh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj±Úubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj­Úubjä)�”}”(hŒstruct drm_panel *panel”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj%Ûh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj!Ûubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2Ûh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj!Ûubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_panel”h]”hŒ drm_panel”…”�”}”(hjCÛh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj@Ûubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jEÛŒmodname”NŒ classname”Njé jì )�”}”jï ]”jvÚŒc.devm_drm_panel_bridge_add”†”asbuh1hhj!Ûubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjaÛh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj!Ûubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjoÛh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj!ÛubjÓ )�”}”(hŒpanel”h]”hŒpanel”…”�”}”(hj|Ûh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj!Ûubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj­Úubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj7Úh²hh³jHÚh´Mxubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj3Úh²hh³jHÚh´Mxubah}”(h]”j.Úah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jHÚh´Mxhj0Úh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ†Creates a managed :c:type:`drm_bridge` and :c:type:`drm_connector` that just calls the appropriate functions from :c:type:`drm_panel`.”h]”(hŒCreates a managed ”…”�”}”(hj¦Ûh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_bridge`”h]”jˆ )�”}”(hj°Ûh]”hŒ drm_bridge”…”�”}”(hj²Ûh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj®Ûubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jì )�”}”jï ]”jvÚŒc.devm_drm_panel_bridge_add”†”asbjñ Œ drm_bridge”uh1hh³j%Ðh´Kàhj¦ÛubhŒ and ”…”�”}”(hj¦Ûh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_connector`”h]”jˆ )�”}”(hjØÛh]”hŒ drm_connector”…”�”}”(hjÚÛh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÖÛubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jÌÛjñ Œ drm_connector”uh1hh³j%Ðh´Kàhj¦ÛubhŒ0 that just calls the appropriate functions from ”…”�”}”(hj¦Ûh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_panel`”h]”jˆ )�”}”(hjûÛh]”hŒ drm_panel”…”�”}”(hjýÛh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjùÛubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jÌÛjñ Œ drm_panel”uh1hh³j%Ðh´Kàhj¦ÛubhŒ.”…”�”}”(hj¦Ûh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´Mxhj£Ûh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj0Úh²hh³jHÚh´Mxubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j,Üj$ j,Üj% ‰j& ‰j' ‰uh1j˜ h²hhjîÏh³Nh´Nubj) )�”}”(hX1**Parameters** ``struct device *dev`` device to tie the bridge lifetime to ``struct drm_panel *panel`` The drm_panel being wrapped. Must be non-NULL. **Description** This is the managed version of drm_panel_bridge_add() which automatically calls drm_panel_bridge_remove() when **dev** is unbound.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj6Üh]”hŒ Parameters”…”�”}”(hj8Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj4Üubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´M|hj0Üubjw )�”}”(hhh]”(j| )�”}”(hŒ<``struct device *dev`` device to tie the bridge lifetime to ”h]”(j‚ )�”}”(hŒ``struct device *dev``”h]”jˆ )�”}”(hjUÜh]”hŒstruct device *dev”…”�”}”(hjWÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjSÜubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´MzhjOÜubjž )�”}”(hhh]”hÎ)�”}”(hŒ$device to tie the bridge lifetime to”h]”hŒ$device to tie the bridge lifetime to”…”�”}”(hjnÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jjÜh´MzhjkÜubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjOÜubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jjÜh´MzhjLÜubj| )�”}”(hŒL``struct drm_panel *panel`` The drm_panel being wrapped. Must be non-NULL. ”h]”(j‚ )�”}”(hŒ``struct drm_panel *panel``”h]”jˆ )�”}”(hjŽÜh]”hŒstruct drm_panel *panel”…”�”}”(hj�Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjŒÜubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´M{hjˆÜubjž )�”}”(hhh]”hÎ)�”}”(hŒ/The drm_panel being wrapped. Must be non-NULL.”h]”hŒ/The drm_panel being wrapped. Must be non-NULL.”…”�”}”(hj§Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j£Üh´M{hj¤Üubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjˆÜubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j£Üh´M{hjLÜubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj0ÜubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjÉÜh]”hŒ Description”…”�”}”(hjËÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÇÜubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´M}hj0ÜubhÎ)�”}”(hŒ‚This is the managed version of drm_panel_bridge_add() which automatically calls drm_panel_bridge_remove() when **dev** is unbound.”h]”(hŒoThis is the managed version of drm_panel_bridge_add() which automatically calls drm_panel_bridge_remove() when ”…”�”}”(hjßÜh²hh³Nh´Nubj3 )�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hjçÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjßÜubhŒ is unbound.”…”�”}”(hjßÜh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´M|hj0Üubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjîÏh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ,devm_drm_panel_bridge_add_typed (C function)”Œ!c.devm_drm_panel_bridge_add_typed”hNt”auh1j† hjîÏh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒustruct drm_bridge * devm_drm_panel_bridge_add_typed (struct device *dev, struct drm_panel *panel, u32 connector_type)”h]”j¤ )�”}”(hŒsstruct drm_bridge *devm_drm_panel_bridge_add_typed(struct device *dev, struct drm_panel *panel, u32 connector_type)”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj Ýh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjÝh²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.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Œubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_bridge”h]”hŒ drm_bridge”…”�”}”(hj?Ýh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj<Ýubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jAÝŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jŒdevm_drm_panel_bridge_add_typed”sbŒ!c.devm_drm_panel_bridge_add_typed”†”asbuh1hhjÝh²hh³j-Ýh´MŒubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`Ýh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÝh²hh³j-Ýh´MŒubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjnÝh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÝh²hh³j-Ýh´MŒubjÍ )�”}”(hŒdevm_drm_panel_bridge_add_typed”h]”jÓ )�”}”(hj]Ýh]”hŒdevm_drm_panel_bridge_add_typed”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj{Ýubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÝh²hh³j-Ýh´MŒubjÞ)�”}”(hŒA(struct device *dev, struct drm_panel *panel, u32 connector_type)”h]”(jä)�”}”(hŒstruct device *dev”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Œdevice”h]”hŒdevice”…”�”}”(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.devm_drm_panel_bridge_add_typed”†”asbuh1hhj–Ýubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖÝh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj–Ýubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjäÝh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj–ÝubjÓ )�”}”(hŒdev”h]”hŒdev”…”�”}”(hjñÝh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj–Ýubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj’Ýubjä)�”}”(hŒstruct drm_panel *panel”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Œ drm_panel”h]”hŒ drm_panel”…”�”}”(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.devm_drm_panel_bridge_add_typed”†”asbuh1hhjÞubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFÞh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÞubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjTÞh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÞubjÓ )�”}”(hŒpanel”h]”hŒpanel”…”�”}”(hjaÞh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÞubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj’Ýubjä)�”}”(hŒu32 connector_type”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu32”h]”hŒu32”…”�”}”(hj}Þh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjzÞubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jÞŒmodname”NŒ classname”Njé jì )�”}”jï ]”j[ÝŒ!c.devm_drm_panel_bridge_add_typed”†”asbuh1hhjvÞubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›Þh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjvÞubjÓ )�”}”(hŒconnector_type”h]”hŒconnector_type”…”�”}”(hj©Þh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjvÞubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj’Ýubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjÝh²hh³j-Ýh´MŒubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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ŒcCreates a managed :c:type:`drm_bridge` and :c:type:`drm_connector` with an explicit connector type.”h]”(hŒCreates a managed ”…”�”}”(hjÓÞh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_bridge`”h]”jˆ )�”}”(hjÝÞh]”hŒ drm_bridge”…”�”}”(hjßÞh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÛÞubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jì )�”}”jï ]”j[ÝŒ!c.devm_drm_panel_bridge_add_typed”†”asbjñ Œ drm_bridge”uh1hh³j%Ðh´KàhjÓÞubhŒ and ”…”�”}”(hjÓÞh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_connector`”h]”jˆ )�”}”(hjßh]”hŒ drm_connector”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjßubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jùÞjñ Œ drm_connector”uh1hh³j%Ðh´KàhjÓÞubhŒ! with an explicit connector type.”…”�”}”(hjÓÞh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.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# j6ßj$ j6ßj% ‰j& ‰j' ‰uh1j˜ h²hhjîÏh³Nh´Nubj) )�”}”(hX3**Parameters** ``struct device *dev`` device to tie the bridge lifetime to ``struct drm_panel *panel`` The drm_panel being wrapped. Must be non-NULL. ``u32 connector_type`` The connector type (DRM_MODE_CONNECTOR_*) **Description** This is just like devm_drm_panel_bridge_add(), but forces the connector type to **connector_type** instead of infering it from the panel. This function is deprecated and should not be used in new drivers. Use devm_drm_panel_bridge_add() instead, and fix panel drivers as necessary if they don't report a connector type.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj@ßh]”hŒ Parameters”…”�”}”(hjBßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj>ßubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´M�hj:ßubjw )�”}”(hhh]”(j| )�”}”(hŒ<``struct device *dev`` device to tie the bridge lifetime to ”h]”(j‚ )�”}”(hŒ``struct device *dev``”h]”jˆ )�”}”(hj_ßh]”hŒstruct device *dev”…”�”}”(hjaßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj]ßubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´MŽhjYßubjž )�”}”(hhh]”hÎ)�”}”(hŒ$device to tie the bridge lifetime to”h]”hŒ$device to tie the bridge lifetime to”…”�”}”(hjxßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jtßh´MŽhjußubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjYßubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jtßh´MŽhjVßubj| )�”}”(hŒL``struct drm_panel *panel`` The drm_panel being wrapped. Must be non-NULL. ”h]”(j‚ )�”}”(hŒ``struct drm_panel *panel``”h]”jˆ )�”}”(hj˜ßh]”hŒstruct drm_panel *panel”…”�”}”(hjšßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj–ßubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´M�hj’ßubjž )�”}”(hhh]”hÎ)�”}”(hŒ/The drm_panel being wrapped. Must be non-NULL.”h]”hŒ/The drm_panel being wrapped. Must be non-NULL.”…”�”}”(hj±ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j­ßh´M�hj®ßubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj’ßubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j­ßh´M�hjVßubj| )�”}”(hŒA``u32 connector_type`` The connector type (DRM_MODE_CONNECTOR_*) ”h]”(j‚ )�”}”(hŒ``u32 connector_type``”h]”jˆ )�”}”(hjÑßh]”hŒu32 connector_type”…”�”}”(hjÓßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÏßubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´M�hjËßubjž )�”}”(hhh]”hÎ)�”}”(hŒ)The connector type (DRM_MODE_CONNECTOR_*)”h]”hŒ)The connector type (DRM_MODE_CONNECTOR_*)”…”�”}”(hjêßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jæßh´M�hjçßubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjËßubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jæßh´M�hjVßubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj:ßubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj àh]”hŒ Description”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj àubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´M’hj:ßubhÎ)�”}”(hŒ‰This is just like devm_drm_panel_bridge_add(), but forces the connector type to **connector_type** instead of infering it from the panel.”h]”(hŒPThis is just like devm_drm_panel_bridge_add(), but forces the connector type to ”…”�”}”(hj"àh²hh³Nh´Nubj3 )�”}”(hŒ**connector_type**”h]”hŒconnector_type”…”�”}”(hj*àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj"àubhŒ' instead of infering it from the panel.”…”�”}”(hj"àh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´M‘hj:ßubhÎ)�”}”(hŒµThis function is deprecated and should not be used in new drivers. Use devm_drm_panel_bridge_add() instead, and fix panel drivers as necessary if they don't report a connector type.”h]”hŒ·This function is deprecated and should not be used in new drivers. Use devm_drm_panel_bridge_add() instead, and fix panel drivers as necessary if they don’t report a connector type.”…”�”}”(hjCàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´M”hj:ßubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjîÏh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ"drmm_panel_bridge_add (C function)”Œc.drmm_panel_bridge_add”hNt”auh1j† hjîÏh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ[struct drm_bridge * drmm_panel_bridge_add (struct drm_device *drm, struct drm_panel *panel)”h]”j¤ )�”}”(hŒYstruct drm_bridge *drmm_panel_bridge_add(struct drm_device *drm, struct drm_panel *panel)”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjràh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjnàh²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´M¹ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€àh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjnàh²hh³jàh´M¹ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_bridge”h]”hŒ drm_bridge”…”�”}”(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Œdrmm_panel_bridge_add”sbŒc.drmm_panel_bridge_add”†”asbuh1hhjnàh²hh³jàh´M¹ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²àh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjnàh²hh³jàh´M¹ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÀàh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjnàh²hh³jàh´M¹ubjÍ )�”}”(hŒdrmm_panel_bridge_add”h]”jÓ )�”}”(hj¯àh]”hŒdrmm_panel_bridge_add”…”�”}”(hjÑàh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÍàubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjnàh²hh³jàh´M¹ubjÞ)�”}”(hŒ1(struct drm_device *drm, struct drm_panel *panel)”h]”(jä)�”}”(hŒstruct drm_device *drm”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Œ drm_device”h]”hŒ drm_device”…”�”}”(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.drmm_panel_bridge_add”†”asbuh1hhjèàubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(áh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjèàubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj6áh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjèàubjÓ )�”}”(hŒdrm”h]”hŒdrm”…”�”}”(hjCáh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjèàubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjäàubjä)�”}”(hŒstruct drm_panel *panel”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj\áh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjXáubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjiáh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjXáubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_panel”h]”hŒ drm_panel”…”�”}”(hjzáh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjwáubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j|áŒmodname”NŒ classname”Njé jì )�”}”jï ]”j­àŒc.drmm_panel_bridge_add”†”asbuh1hhjXáubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜áh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjXáubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj¦áh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjXáubjÓ )�”}”(hŒpanel”h]”hŒpanel”…”�”}”(hj³áh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjXáubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjäàubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjnàh²hh³jàh´M¹ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjjàh²hh³jàh´M¹ubah}”(h]”jeàah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jàh´M¹hjgàh²hubj )�”}”(hhh]”hÎ)�”}”(hŒŠCreates a DRM-managed :c:type:`drm_bridge` and :c:type:`drm_connector` that just calls the appropriate functions from :c:type:`drm_panel`.”h]”(hŒCreates a DRM-managed ”…”�”}”(hjÝáh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_bridge`”h]”jˆ )�”}”(hjçáh]”hŒ drm_bridge”…”�”}”(hjéáh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjåáubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jì )�”}”jï ]”j­àŒc.drmm_panel_bridge_add”†”asbjñ Œ drm_bridge”uh1hh³j%Ðh´KàhjÝáubhŒ and ”…”�”}”(hjÝáh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_connector`”h]”jˆ )�”}”(hjâh]”hŒ drm_connector”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj âubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jâjñ Œ drm_connector”uh1hh³j%Ðh´KàhjÝáubhŒ0 that just calls the appropriate functions from ”…”�”}”(hjÝáh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_panel`”h]”jˆ )�”}”(hj2âh]”hŒ drm_panel”…”�”}”(hj4âh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj0âubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jâjñ Œ drm_panel”uh1hh³j%Ðh´KàhjÝáubhŒ.”…”�”}”(hjÝáh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´M¹hjÚáh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjgàh²hh³jàh´M¹ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jcâj$ jcâj% ‰j& ‰j' ‰uh1j˜ h²hhjîÏh³Nh´Nubj) )�”}”(hX@**Parameters** ``struct drm_device *drm`` DRM device to tie the bridge lifetime to ``struct drm_panel *panel`` The drm_panel being wrapped. Must be non-NULL. **Description** This is the DRM-managed version of drm_panel_bridge_add() which automatically calls drm_panel_bridge_remove() when **dev** is cleaned up.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjmâh]”hŒ Parameters”…”�”}”(hjoâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjkâubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´M½hjgâubjw )�”}”(hhh]”(j| )�”}”(hŒD``struct drm_device *drm`` DRM device to tie the bridge lifetime to ”h]”(j‚ )�”}”(hŒ``struct drm_device *drm``”h]”jˆ )�”}”(hjŒâh]”hŒstruct drm_device *drm”…”�”}”(hjŽâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjŠâubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´M½hj†âubjž )�”}”(hhh]”hÎ)�”}”(hŒ(DRM device to tie the bridge lifetime to”h]”hŒ(DRM device to tie the bridge lifetime to”…”�”}”(hj¥âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¡âh´M½hj¢âubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj†âubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¡âh´M½hjƒâubj| )�”}”(hŒL``struct drm_panel *panel`` The drm_panel being wrapped. Must be non-NULL. ”h]”(j‚ )�”}”(hŒ``struct drm_panel *panel``”h]”jˆ )�”}”(hjÅâh]”hŒstruct drm_panel *panel”…”�”}”(hjÇâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÃâubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´M¾hj¿âubjž )�”}”(hhh]”hÎ)�”}”(hŒ/The drm_panel being wrapped. Must be non-NULL.”h]”hŒ/The drm_panel being wrapped. Must be non-NULL.”…”�”}”(hjÞâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÚâh´M¾hjÛâubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¿âubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÚâh´M¾hjƒâubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjgâubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjãh]”hŒ Description”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjþâubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´MÀhjgâubhÎ)�”}”(hŒ‰This is the DRM-managed version of drm_panel_bridge_add() which automatically calls drm_panel_bridge_remove() when **dev** is cleaned up.”h]”(hŒsThis is the DRM-managed version of drm_panel_bridge_add() which automatically calls drm_panel_bridge_remove() when ”…”�”}”(hjãh²hh³Nh´Nubj3 )�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjãubhŒ is cleaned up.”…”�”}”(hjãh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´M¿hjgâubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjîÏh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ'drm_panel_bridge_connector (C function)”Œc.drm_panel_bridge_connector”hNt”auh1j† hjîÏh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒMstruct drm_connector * drm_panel_bridge_connector (struct drm_bridge *bridge)”h]”j¤ )�”}”(hŒKstruct drm_connector *drm_panel_bridge_connector(struct drm_bridge *bridge)”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjWãh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjSãh²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´MØubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeãh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjSãh²hh³jdãh´MØubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_connector”h]”hŒ drm_connector”…”�”}”(hjvãh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjsãubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jxãŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jŒdrm_panel_bridge_connector”sbŒc.drm_panel_bridge_connector”†”asbuh1hhjSãh²hh³jdãh´MØubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—ãh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjSãh²hh³jdãh´MØubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj¥ãh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjSãh²hh³jdãh´MØubjÍ )�”}”(hŒdrm_panel_bridge_connector”h]”jÓ )�”}”(hj”ãh]”hŒdrm_panel_bridge_connector”…”�”}”(hj¶ãh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj²ãubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjSãh²hh³jdãh´MØubjÞ)�”}”(hŒ(struct drm_bridge *bridge)”h]”jä)�”}”(hŒstruct drm_bridge *bridge”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Œ drm_bridge”h]”hŒ drm_bridge”…”�”}”(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.drm_panel_bridge_connector”†”asbuh1hhjÍãubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj äh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÍãubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÍãubjÓ )�”}”(hŒbridge”h]”hŒbridge”…”�”}”(hj(äh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÍãubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÉãubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjSãh²hh³jdãh´MØubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjOãh²hh³jdãh´MØubah}”(h]”jJãah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jdãh´MØhjLãh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ)return the connector for the panel bridge”h]”hŒ)return the connector for the panel bridge”…”�”}”(hjRäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´MØhjOäh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjLãh²hh³jdãh´MØubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jjäj$ jjäj% ‰j& ‰j' ‰uh1j˜ h²hhjîÏh³Nh´Nubj) )�”}”(hŒÕ**Parameters** ``struct drm_bridge *bridge`` The drm_bridge. **Description** drm_panel_bridge creates the connector. This function gives external access to the connector. **Return** Pointer to drm_connector”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjtäh]”hŒ Parameters”…”�”}”(hjväh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjräubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´MÜhjnäubjw )�”}”(hhh]”j| )�”}”(hŒ.``struct drm_bridge *bridge`` The drm_bridge. ”h]”(j‚ )�”}”(hŒ``struct drm_bridge *bridge``”h]”jˆ )�”}”(hj“äh]”hŒstruct drm_bridge *bridge”…”�”}”(hj•äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj‘äubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´MÙhj�äubjž )�”}”(hhh]”hÎ)�”}”(hŒThe drm_bridge.”h]”hŒThe drm_bridge.”…”�”}”(hj¬äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¨äh´MÙhj©äubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj�äubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¨äh´MÙhjŠäubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjnäubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjÎäh]”hŒ Description”…”�”}”(hjÐäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÌäubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´MÛhjnäubhÎ)�”}”(hŒ]drm_panel_bridge creates the connector. This function gives external access to the connector.”h]”hŒ]drm_panel_bridge creates the connector. This function gives external access to the connector.”…”�”}”(hjääh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´MÚhjnäubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjõäh]”hŒReturn”…”�”}”(hj÷äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjóäubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´MÝhjnäubhÎ)�”}”(hŒPointer to drm_connector”h]”hŒPointer to drm_connector”…”�”}”(hj åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´MÞhjnäubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjîÏh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ#devm_drm_of_get_bridge (C function)”Œc.devm_drm_of_get_bridge”hNt”auh1j† hjîÏh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒostruct drm_bridge * devm_drm_of_get_bridge (struct device *dev, struct device_node *np, u32 port, u32 endpoint)”h]”j¤ )�”}”(hŒmstruct drm_bridge *devm_drm_of_get_bridge(struct device *dev, struct device_node *np, u32 port, u32 endpoint)”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj:åh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj6åh²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´Mìubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHåh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj6åh²hh³jGåh´Mìubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_bridge”h]”hŒ drm_bridge”…”�”}”(hjYåh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjVåubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j[åŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jŒdevm_drm_of_get_bridge”sbŒc.devm_drm_of_get_bridge”†”asbuh1hhj6åh²hh³jGåh´Mìubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjzåh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj6åh²hh³jGåh´Mìubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjˆåh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj6åh²hh³jGåh´MìubjÍ )�”}”(hŒdevm_drm_of_get_bridge”h]”jÓ )�”}”(hjwåh]”hŒdevm_drm_of_get_bridge”…”�”}”(hj™åh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj•åubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj6åh²hh³jGåh´MìubjÞ)�”}”(hŒD(struct device *dev, struct device_node *np, u32 port, u32 endpoint)”h]”(jä)�”}”(hŒstruct device *dev”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Œdevice”h]”hŒdevice”…”�”}”(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ï ]”juåŒc.devm_drm_of_get_bridge”†”asbuh1hhj°åubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjðåh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj°åubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjþåh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj°åubjÓ )�”}”(hŒdev”h]”hŒdev”…”�”}”(hj æh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj°åubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¬åubjä)�”}”(hŒstruct device_node *np”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj$æh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj æubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1æh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj æubh)�”}”(hhh]”jÓ )�”}”(hŒ device_node”h]”hŒ device_node”…”�”}”(hjBæh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj?æubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jDæŒmodname”NŒ classname”Njé jì )�”}”jï ]”juåŒc.devm_drm_of_get_bridge”†”asbuh1hhj æubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`æh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj æubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjnæh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj æubjÓ )�”}”(hŒnp”h]”hŒnp”…”�”}”(hj{æh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj æubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¬åubjä)�”}”(hŒu32 port”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ï ]”juåŒc.devm_drm_of_get_bridge”†”asbuh1hhj�æubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµæh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj�æubjÓ )�”}”(hŒport”h]”hŒport”…”�”}”(hjÃæh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj�æubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¬åubjä)�”}”(hŒ u32 endpoint”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ï ]”juåŒc.devm_drm_of_get_bridge”†”asbuh1hhjØæubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýæh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjØæubjÓ )�”}”(hŒendpoint”h]”hŒendpoint”…”�”}”(hj çh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjØæubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¬åubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj6åh²hh³jGåh´Mìubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj2åh²hh³jGåh´Mìubah}”(h]”j-åah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jGåh´Mìhj/åh²hubj )�”}”(hhh]”hÎ)�”}”(hŒReturn next bridge in the chain”h]”hŒReturn next bridge in the chain”…”�”}”(hj5çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´Mìhj2çh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj/åh²hh³jGåh´Mìubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jMçj$ jMçj% ‰j& ‰j' ‰uh1j˜ h²hhjîÏh³Nh´Nubj) )�”}”(hX**Parameters** ``struct device *dev`` device to tie the bridge lifetime to ``struct device_node *np`` device tree node containing encoder output ports ``u32 port`` port in the device tree node ``u32 endpoint`` endpoint in the device tree node **Description** Given a DT node's port and endpoint number, finds the connected node and returns the associated bridge if any, or creates and returns a drm panel bridge instance if a panel is connected. Returns a pointer to the bridge if successful, or an error pointer otherwise.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjWçh]”hŒ Parameters”…”�”}”(hjYçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjUçubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´MðhjQçubjw )�”}”(hhh]”(j| )�”}”(hŒ<``struct device *dev`` device to tie the bridge lifetime to ”h]”(j‚ )�”}”(hŒ``struct device *dev``”h]”jˆ )�”}”(hjvçh]”hŒstruct device *dev”…”�”}”(hjxçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjtçubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´Míhjpçubjž )�”}”(hhh]”hÎ)�”}”(hŒ$device to tie the bridge lifetime to”h]”hŒ$device to tie the bridge lifetime to”…”�”}”(hj�çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j‹çh´MíhjŒçubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjpçubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j‹çh´Míhjmçubj| )�”}”(hŒL``struct device_node *np`` device tree node containing encoder output ports ”h]”(j‚ )�”}”(hŒ``struct device_node *np``”h]”jˆ )�”}”(hj¯çh]”hŒstruct device_node *np”…”�”}”(hj±çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj­çubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´Mîhj©çubjž )�”}”(hhh]”hÎ)�”}”(hŒ0device tree node containing encoder output ports”h]”hŒ0device tree node containing encoder output ports”…”�”}”(hjÈçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÄçh´MîhjÅçubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj©çubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÄçh´Mîhjmçubj| )�”}”(hŒ*``u32 port`` port in the device tree node ”h]”(j‚ )�”}”(hŒ ``u32 port``”h]”jˆ )�”}”(hjèçh]”hŒu32 port”…”�”}”(hjêçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjæçubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´Mïhjâçubjž )�”}”(hhh]”hÎ)�”}”(hŒport in the device tree node”h]”hŒport in the device tree node”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jýçh´Mïhjþçubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjâçubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jýçh´Mïhjmçubj| )�”}”(hŒ2``u32 endpoint`` endpoint in the device tree node ”h]”(j‚ )�”}”(hŒ``u32 endpoint``”h]”jˆ )�”}”(hj!èh]”hŒ u32 endpoint”…”�”}”(hj#èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjèubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´Mðhjèubjž )�”}”(hhh]”hÎ)�”}”(hŒ endpoint in the device tree node”h]”hŒ endpoint in the device tree node”…”�”}”(hj:èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j6èh´Mðhj7èubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjèubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j6èh´Mðhjmçubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjQçubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj\èh]”hŒ Description”…”�”}”(hj^èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjZèubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´MòhjQçubhÎ)�”}”(hŒºGiven a DT node's port and endpoint number, finds the connected node and returns the associated bridge if any, or creates and returns a drm panel bridge instance if a panel is connected.”h]”hŒ¼Given a DT node’s port and endpoint number, finds the connected node and returns the associated bridge if any, or creates and returns a drm panel bridge instance if a panel is connected.”…”�”}”(hjrèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´MñhjQçubhÎ)�”}”(hŒMReturns a pointer to the bridge if successful, or an error pointer otherwise.”h]”hŒMReturns a pointer to the bridge if successful, or an error pointer otherwise.”…”�”}”(hj�èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´MõhjQçubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjîÏh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrmm_of_get_bridge (C function)”Œc.drmm_of_get_bridge”hNt”auh1j† hjîÏh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒostruct drm_bridge * drmm_of_get_bridge (struct drm_device *drm, struct device_node *np, u32 port, u32 endpoint)”h]”j¤ )�”}”(hŒmstruct drm_bridge *drmm_of_get_bridge(struct drm_device *drm, struct device_node *np, u32 port, u32 endpoint)”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj°èh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj¬èh²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾èh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¬èh²hh³j½èh´Mubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_bridge”h]”hŒ drm_bridge”…”�”}”(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Œdrmm_of_get_bridge”sbŒc.drmm_of_get_bridge”†”asbuh1hhj¬èh²hh³j½èh´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjðèh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¬èh²hh³j½èh´Mubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjþèh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¬èh²hh³j½èh´MubjÍ )�”}”(hŒdrmm_of_get_bridge”h]”jÓ )�”}”(hjíèh]”hŒdrmm_of_get_bridge”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj éubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj¬èh²hh³j½èh´MubjÞ)�”}”(hŒH(struct drm_device *drm, struct device_node *np, u32 port, u32 endpoint)”h]”(jä)�”}”(hŒstruct drm_device *drm”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj*éh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj&éubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7éh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj&éubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_device”h]”hŒ drm_device”…”�”}”(hjHéh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjEéubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jJéŒmodname”NŒ classname”Njé jì )�”}”jï ]”jëèŒc.drmm_of_get_bridge”†”asbuh1hhj&éubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjféh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj&éubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjtéh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj&éubjÓ )�”}”(hŒdrm”h]”hŒdrm”…”�”}”(hj�éh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj&éubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj"éubjä)�”}”(hŒstruct device_node *np”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Œ device_node”h]”hŒ device_node”…”�”}”(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.drmm_of_get_bridge”†”asbuh1hhj–éubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖéh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj–éubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjäéh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj–éubjÓ )�”}”(hŒnp”h]”hŒnp”…”�”}”(hjñéh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj–éubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj"éubjä)�”}”(hŒu32 port”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.drmm_of_get_bridge”†”asbuh1hhjêubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+êh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjêubjÓ )�”}”(hŒport”h]”hŒport”…”�”}”(hj9êh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjêubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj"éubjä)�”}”(hŒ u32 endpoint”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu32”h]”hŒu32”…”�”}”(hjUêh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjRêubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jWêŒmodname”NŒ classname”Njé jì )�”}”jï ]”jëèŒc.drmm_of_get_bridge”†”asbuh1hhjNêubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjsêh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjNêubjÓ )�”}”(hŒendpoint”h]”hŒendpoint”…”�”}”(hj�êh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjNêubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj"éubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj¬èh²hh³j½èh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj¨èh²hh³j½èh´Mubah}”(h]”j£èah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j½èh´Mhj¥èh²hubj )�”}”(hhh]”hÎ)�”}”(hŒReturn next bridge in the chain”h]”hŒReturn next bridge in the chain”…”�”}”(hj«êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´Mhj¨êh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¥èh²hh³j½èh´Mubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jÃêj$ jÃêj% ‰j& ‰j' ‰uh1j˜ h²hhjîÏh³Nh´Nubj) )�”}”(hX+**Parameters** ``struct drm_device *drm`` device to tie the bridge lifetime to ``struct device_node *np`` device tree node containing encoder output ports ``u32 port`` port in the device tree node ``u32 endpoint`` endpoint in the device tree node **Description** Given a DT node's port and endpoint number, finds the connected node and returns the associated bridge if any, or creates and returns a drm panel bridge instance if a panel is connected. Returns a drmm managed pointer to the bridge if successful, or an error pointer otherwise.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjÍêh]”hŒ Parameters”…”�”}”(hjÏêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjËêubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´MhjÇêubjw )�”}”(hhh]”(j| )�”}”(hŒ@``struct drm_device *drm`` device to tie the bridge lifetime to ”h]”(j‚ )�”}”(hŒ``struct drm_device *drm``”h]”jˆ )�”}”(hjìêh]”hŒstruct drm_device *drm”…”�”}”(hjîêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjêêubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´Mhjæêubjž )�”}”(hhh]”hÎ)�”}”(hŒ$device to tie the bridge lifetime to”h]”hŒ$device to tie the bridge lifetime to”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jëh´Mhjëubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjæêubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jëh´Mhjãêubj| )�”}”(hŒL``struct device_node *np`` device tree node containing encoder output ports ”h]”(j‚ )�”}”(hŒ``struct device_node *np``”h]”jˆ )�”}”(hj%ëh]”hŒstruct device_node *np”…”�”}”(hj'ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj#ëubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´Mhjëubjž )�”}”(hhh]”hÎ)�”}”(hŒ0device tree node containing encoder output ports”h]”hŒ0device tree node containing encoder output ports”…”�”}”(hj>ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j:ëh´Mhj;ëubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjëubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j:ëh´Mhjãêubj| )�”}”(hŒ*``u32 port`` port in the device tree node ”h]”(j‚ )�”}”(hŒ ``u32 port``”h]”jˆ )�”}”(hj^ëh]”hŒu32 port”…”�”}”(hj`ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj\ëubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´MhjXëubjž )�”}”(hhh]”hÎ)�”}”(hŒport in the device tree node”h]”hŒport in the device tree node”…”�”}”(hjwëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jsëh´Mhjtëubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjXëubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jsëh´Mhjãêubj| )�”}”(hŒ2``u32 endpoint`` endpoint in the device tree node ”h]”(j‚ )�”}”(hŒ``u32 endpoint``”h]”jˆ )�”}”(hj—ëh]”hŒ u32 endpoint”…”�”}”(hj™ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj•ëubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´Mhj‘ëubjž )�”}”(hhh]”hÎ)�”}”(hŒ endpoint in the device tree node”h]”hŒ endpoint in the device tree node”…”�”}”(hj°ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¬ëh´Mhj­ëubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj‘ëubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¬ëh´Mhjãêubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÇêubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjÒëh]”hŒ Description”…”�”}”(hjÔëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÐëubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´MhjÇêubhÎ)�”}”(hŒºGiven a DT node's port and endpoint number, finds the connected node and returns the associated bridge if any, or creates and returns a drm panel bridge instance if a panel is connected.”h]”hŒ¼Given a DT node’s port and endpoint number, finds the connected node and returns the associated bridge if any, or creates and returns a drm panel bridge instance if a panel is connected.”…”�”}”(hjèëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´MhjÇêubhÎ)�”}”(hŒZReturns a drmm managed pointer to the bridge if successful, or an error pointer otherwise.”h]”hŒZReturns a drmm managed pointer to the bridge if successful, or an error pointer otherwise.”…”�”}”(hj÷ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:212: ./drivers/gpu/drm/bridge/panel.c”h´MhjÇêubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjîÏh²hh³Nh´Nubj€B)�”}”(hŒ.. _drm_panel_helper:”h]”h}”(h]”h ]”h"]”h$]”h&]”hÊŒdrm-panel-helper”uh1jBh´K×hjîÏh²hh³hÌubeh}”(h]”j°ah ]”h"]”Œpanel-bridge helper reference”ah$]”h&]”uh1hµhjc?h²hh³hÌh´KÒubeh}”(h]”(j_j[?eh ]”h"]”(Œbridges”Œ drm_bridges”eh$]”h&]”uh1hµhh·h²hh³hÌh´K”j^X}”j$ìjQ?sj`X}”j[?jQ?subh¶)�”}”(hhh]”(h»)�”}”(hŒPanel Helper Reference”h]”hŒPanel Helper Reference”…”�”}”(hj,ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÊjØuh1hºhj)ìh²hh³hÌh´KÚubhÎ)�”}”(hŒ˜The DRM panel helpers allow drivers to register panel objects with a central registry and provide functions to retrieve those panels in display drivers.”h]”hŒ˜The DRM panel helpers allow drivers to register panel objects with a central registry and provide functions to retrieve those panels in display drivers.”…”�”}”(hj:ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:220: ./drivers/gpu/drm/drm_panel.c”h´K'hj)ìh²hubhÎ)�”}”(hŒ›For easy integration into drivers using the :c:type:`drm_bridge` infrastructure please take look at drm_panel_bridge_add() and devm_drm_panel_bridge_add().”h]”(hŒ,For easy integration into drivers using the ”…”�”}”(hjIìh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_bridge`”h]”jˆ )�”}”(hjSìh]”hŒ drm_bridge”…”�”}”(hjUìh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjQìubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œ drm_bridge”uh1hh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:220: ./drivers/gpu/drm/drm_panel.c”h´K+hjIìubhŒ[ infrastructure please take look at drm_panel_bridge_add() and devm_drm_panel_bridge_add().”…”�”}”(hjIìh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jpìh´K+hj)ìh²hubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_panel_funcs (C struct)”Œc.drm_panel_funcs”hNt”auh1j† hj)ìh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒdrm_panel_funcs”h]”j¤ )�”}”(hŒstruct drm_panel_funcs”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj”ìh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj�ìh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:223: ./include/drm/drm_panel.h”h´Kubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢ìh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj�ìh²hh³j¡ìh´KubjÍ )�”}”(hŒdrm_panel_funcs”h]”jÓ )�”}”(hjŽìh]”hŒdrm_panel_funcs”…”�”}”(hj´ìh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj°ìubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj�ìh²hh³j¡ìh´Kubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjŒìh²hh³j¡ìh´Kubah}”(h]”j‡ìah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j¡ìh´Khj‰ìh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ#perform operations on a given panel”h]”hŒ#perform operations on a given panel”…”�”}”(hjÖìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:223: ./include/drm/drm_panel.h”h´K,hjÓìh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj‰ìh²hh³j¡ìh´Kubeh}”(h]”h ]”(j Œstruct”eh"]”h$]”h&]”j" j j# jîìj$ jîìj% ‰j& ‰j' ‰uh1j˜ h²hhj)ìh³Nh´Nubj) )�”}”(hXl**Definition**:: struct drm_panel_funcs { int (*prepare)(struct drm_panel *panel); int (*enable)(struct drm_panel *panel); int (*disable)(struct drm_panel *panel); int (*unprepare)(struct drm_panel *panel); int (*get_modes)(struct drm_panel *panel, struct drm_connector *connector); enum drm_panel_orientation (*get_orientation)(struct drm_panel *panel); int (*get_timings)(struct drm_panel *panel, unsigned int num_timings, struct display_timing *timings); void (*debugfs_init)(struct drm_panel *panel, struct dentry *root); }; **Members** ``prepare`` Turn on panel and perform set up. This function is optional. ``enable`` Enable panel (turn on back light, etc.). This function is optional. ``disable`` Disable panel (turn off back light, etc.). This function is optional. ``unprepare`` Turn off panel. This function is optional. ``get_modes`` Add modes to the connector that the panel is attached to and returns the number of modes added. This function is mandatory. ``get_orientation`` Return the panel orientation set by device tree or EDID. This function is optional. ``get_timings`` Copy display timings into the provided array and return the number of display timings available. This function is optional. ``debugfs_init`` Allows panels to create panels-specific debugfs files.”h]”(hÎ)�”}”(hŒ**Definition**::”h]”(j3 )�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjúìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjöìubhŒ:”…”�”}”(hjöìh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:223: ./include/drm/drm_panel.h”h´K0hjòìubjN )�”}”(hXstruct drm_panel_funcs { int (*prepare)(struct drm_panel *panel); int (*enable)(struct drm_panel *panel); int (*disable)(struct drm_panel *panel); int (*unprepare)(struct drm_panel *panel); int (*get_modes)(struct drm_panel *panel, struct drm_connector *connector); enum drm_panel_orientation (*get_orientation)(struct drm_panel *panel); int (*get_timings)(struct drm_panel *panel, unsigned int num_timings, struct display_timing *timings); void (*debugfs_init)(struct drm_panel *panel, struct dentry *root); };”h]”hXstruct drm_panel_funcs { int (*prepare)(struct drm_panel *panel); int (*enable)(struct drm_panel *panel); int (*disable)(struct drm_panel *panel); int (*unprepare)(struct drm_panel *panel); int (*get_modes)(struct drm_panel *panel, struct drm_connector *connector); enum drm_panel_orientation (*get_orientation)(struct drm_panel *panel); int (*get_timings)(struct drm_panel *panel, unsigned int num_timings, struct display_timing *timings); void (*debugfs_init)(struct drm_panel *panel, struct dentry *root); };”…”�”}”hjísbah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jM h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:223: ./include/drm/drm_panel.h”h´K2hjòìubhÎ)�”}”(hŒ **Members**”h]”j3 )�”}”(hj$íh]”hŒMembers”…”�”}”(hj&íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj"íubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:223: ./include/drm/drm_panel.h”h´K=hjòìubjw )�”}”(hhh]”(j| )�”}”(hŒJ``prepare`` Turn on panel and perform set up. This function is optional. ”h]”(j‚ )�”}”(hŒ ``prepare``”h]”jˆ )�”}”(hjCíh]”hŒprepare”…”�”}”(hjEíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjAíubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:223: ./include/drm/drm_panel.h”h´KNhj=íubjž )�”}”(hhh]”(hÎ)�”}”(hŒ!Turn on panel and perform set up.”h]”hŒ!Turn on panel and perform set up.”…”�”}”(hj\íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:223: ./include/drm/drm_panel.h”h´KLhjYíubhÎ)�”}”(hŒThis function is optional.”h]”hŒThis function is optional.”…”�”}”(hjkíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jXíh´KNhjYíubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj=íubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jXíh´KNhj:íubj| )�”}”(hŒP``enable`` Enable panel (turn on back light, etc.). This function is optional. ”h]”(j‚ )�”}”(hŒ ``enable``”h]”jˆ )�”}”(hj‹íh]”hŒenable”…”�”}”(hj�íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj‰íubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:223: ./include/drm/drm_panel.h”h´KWhj…íubjž )�”}”(hhh]”(hÎ)�”}”(hŒ(Enable panel (turn on back light, etc.).”h]”hŒ(Enable panel (turn on back light, etc.).”…”�”}”(hj¤íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:223: ./include/drm/drm_panel.h”h´KUhj¡íubhÎ)�”}”(hŒThis function is optional.”h]”hŒThis function is optional.”…”�”}”(hj³íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j íh´KWhj¡íubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj…íubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j íh´KWhj:íubj| )�”}”(hŒS``disable`` Disable panel (turn off back light, etc.). This function is optional. ”h]”(j‚ )�”}”(hŒ ``disable``”h]”jˆ )�”}”(hjÓíh]”hŒdisable”…”�”}”(hjÕíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÑíubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:223: ./include/drm/drm_panel.h”h´K`hjÍíubjž )�”}”(hhh]”(hÎ)�”}”(hŒ*Disable panel (turn off back light, etc.).”h]”hŒ*Disable panel (turn off back light, etc.).”…”�”}”(hjìíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:223: ./include/drm/drm_panel.h”h´K^hjéíubhÎ)�”}”(hŒThis function is optional.”h]”hŒThis function is optional.”…”�”}”(hjûíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jèíh´K`hjéíubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÍíubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jèíh´K`hj:íubj| )�”}”(hŒ:``unprepare`` Turn off panel. This function is optional. ”h]”(j‚ )�”}”(hŒ ``unprepare``”h]”jˆ )�”}”(hjîh]”hŒ unprepare”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjîubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:223: ./include/drm/drm_panel.h”h´Kihjîubjž )�”}”(hhh]”(hÎ)�”}”(hŒTurn off panel.”h]”hŒTurn off panel.”…”�”}”(hj4îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:223: ./include/drm/drm_panel.h”h´Kghj1îubhÎ)�”}”(hŒThis function is optional.”h]”hŒThis function is optional.”…”�”}”(hjCîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j0îh´Kihj1îubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjîubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j0îh´Kihj:íubj| )�”}”(hŒ‹``get_modes`` Add modes to the connector that the panel is attached to and returns the number of modes added. This function is mandatory. ”h]”(j‚ )�”}”(hŒ ``get_modes``”h]”jˆ )�”}”(hjcîh]”hŒ get_modes”…”�”}”(hjeîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjaîubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:223: ./include/drm/drm_panel.h”h´Kshj]îubjž )�”}”(hhh]”(hÎ)�”}”(hŒ_Add modes to the connector that the panel is attached to and returns the number of modes added.”h]”hŒ_Add modes to the connector that the panel is attached to and returns the number of modes added.”…”�”}”(hj|îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:223: ./include/drm/drm_panel.h”h´KphjyîubhÎ)�”}”(hŒThis function is mandatory.”h]”hŒThis function is mandatory.”…”�”}”(hj‹îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jxîh´Kshjyîubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj]îubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jxîh´Kshj:íubj| )�”}”(hŒi``get_orientation`` Return the panel orientation set by device tree or EDID. This function is optional. ”h]”(j‚ )�”}”(hŒ``get_orientation``”h]”jˆ )�”}”(hj«îh]”hŒget_orientation”…”�”}”(hj­îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj©îubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:223: ./include/drm/drm_panel.h”h´K}hj¥îubjž )�”}”(hhh]”(•hÎ)�”}”(hŒ8Return the panel orientation set by device tree or EDID.”h]”hŒ8Return the panel orientation set by device tree or EDID.”…”�”}”(hjÄîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:223: ./include/drm/drm_panel.h”h´K{hjÁîubhÎ)�”}”(hŒThis function is optional.”h]”hŒThis function is optional.”…”�”}”(hjÓîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÀîh´K}hjÁîubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¥îubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÀîh´K}hj:íubj| )�”}”(hŒ�``get_timings`` Copy display timings into the provided array and return the number of display timings available. This function is optional. ”h]”(j‚ )�”}”(hŒ``get_timings``”h]”jˆ )�”}”(hjóîh]”hŒ get_timings”…”�”}”(hjõîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjñîubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:223: ./include/drm/drm_panel.h”h´K‡hjíîubjž )�”}”(hhh]”(hÎ)�”}”(hŒ`Copy display timings into the provided array and return the number of display timings available.”h]”hŒ`Copy display timings into the provided array and return the number of display timings available.”…”�”}”(hj ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:223: ./include/drm/drm_panel.h”h´K„hj ïubhÎ)�”}”(hŒThis function is optional.”h]”hŒThis function is optional.”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jïh´K‡hj ïubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjíîubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jïh´K‡hj:íubj| )�”}”(hŒG``debugfs_init`` Allows panels to create panels-specific debugfs files.”h]”(j‚ )�”}”(hŒ``debugfs_init``”h]”jˆ )�”}”(hj;ïh]”hŒ debugfs_init”…”�”}”(hj=ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj9ïubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:223: ./include/drm/drm_panel.h”h´KŽhj5ïubjž )�”}”(hhh]”hÎ)�”}”(hŒ6Allows panels to create panels-specific debugfs files.”h]”hŒ6Allows panels to create panels-specific debugfs files.”…”�”}”(hjTïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:223: ./include/drm/drm_panel.h”h´K�hjQïubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj5ïubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jPïh´KŽhj:íubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjòìubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj)ìh²hh³Nh´NubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj~ïh]”hŒ Description”…”�”}”(hj€ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj|ïubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:223: ./include/drm/drm_panel.h”h´K’hj)ìh²hubhÎ)�”}”(hX9The .prepare() function is typically called before the display controller starts to transmit video data. Panel drivers can use this to turn the panel on and wait for it to become ready. If additional configuration is required (via a control bus such as I2C, SPI or DSI for example) this is a good time to do that.”h]”hX9The .prepare() function is typically called before the display controller starts to transmit video data. Panel drivers can use this to turn the panel on and wait for it to become ready. If additional configuration is required (via a control bus such as I2C, SPI or DSI for example) this is a good time to do that.”…”�”}”(hj”ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:223: ./include/drm/drm_panel.h”h´K-hj)ìh²hubhÎ)�”}”(hX�After the display controller has started transmitting video data, it's safe to call the .enable() function. This will typically enable the backlight to make the image on screen visible. Some panels require a certain amount of time or frames before the image is displayed. This function is responsible for taking this into account before enabling the backlight to avoid visual glitches.”h]”hXƒAfter the display controller has started transmitting video data, it’s safe to call the .enable() function. This will typically enable the backlight to make the image on screen visible. Some panels require a certain amount of time or frames before the image is displayed. This function is responsible for taking this into account before enabling the backlight to avoid visual glitches.”…”�”}”(hj£ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:223: ./include/drm/drm_panel.h”h´K3hj)ìh²hubhÎ)�”}”(hX�Before stopping video transmission from the display controller it can be necessary to turn off the panel to avoid visual glitches. This is done in the .disable() function. Analogously to .enable() this typically involves turning off the backlight and waiting for some time to make sure no image is visible on the panel. It is then safe for the display controller to cease transmission of video data.”h]”hX�Before stopping video transmission from the display controller it can be necessary to turn off the panel to avoid visual glitches. This is done in the .disable() function. Analogously to .enable() this typically involves turning off the backlight and waiting for some time to make sure no image is visible on the panel. It is then safe for the display controller to cease transmission of video data.”…”�”}”(hj²ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:223: ./include/drm/drm_panel.h”h´K:hj)ìh²hubhÎ)�”}”(hŒ�To save power when no video data is transmitted, a driver can power down the panel. This is the job of the .unprepare() function.”h]”hŒ�To save power when no video data is transmitted, a driver can power down the panel. This is the job of the .unprepare() function.”…”�”}”(hjÁïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:223: ./include/drm/drm_panel.h”h´KAhj)ìh²hubhÎ)�”}”(hŒÎBacklight can be handled automatically if configured using drm_panel_of_backlight() or drm_panel_dp_aux_backlight(). Then the driver does not need to implement the functionality to enable/disable backlight.”h]”hŒÎBacklight can be handled automatically if configured using drm_panel_of_backlight() or drm_panel_dp_aux_backlight(). Then the driver does not need to implement the functionality to enable/disable backlight.”…”�”}”(hjÐïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:223: ./include/drm/drm_panel.h”h´KDhj)ìh²hubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_panel (C struct)”Œ c.drm_panel”hNt”auh1j† hj)ìh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ drm_panel”h]”j¤ )�”}”(hŒstruct drm_panel”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjøïh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjôïh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:223: ./include/drm/drm_panel.h”h´KKubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjôïh²hh³jðh´KKubjÍ )�”}”(hŒ drm_panel”h]”jÓ )�”}”(hjòïh]”hŒ drm_panel”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjðubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjôïh²hh³jðh´KKubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjðïh²hh³jðh´KKubah}”(h]”jëïah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jðh´KKhjíïh²hubj )�”}”(hhh]”hÎ)�”}”(hŒDRM panel object”h]”hŒDRM panel object”…”�”}”(hj:ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:223: ./include/drm/drm_panel.h”h´KËhj7ðh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjíïh²hh³jðh´KKubeh}”(h]”h ]”(j Œstruct”eh"]”h$]”h&]”j" j j# jRðj$ jRðj% ‰j& ‰j' ‰uh1j˜ h²hhj)ìh³Nh´Nubj) )�”}”(hXq**Definition**:: struct drm_panel { struct device *dev; struct backlight_device *backlight; const struct drm_panel_funcs *funcs; int connector_type; struct list_head list; struct list_head followers; struct mutex follower_lock; bool prepare_prev_first; bool prepared; bool enabled; void *container; struct kref refcount; }; **Members** ``dev`` Parent device of the panel. ``backlight`` Backlight device, used to turn on backlight after the call to enable(), and to turn off backlight before the call to disable(). backlight is set by drm_panel_of_backlight() or drm_panel_dp_aux_backlight() and drivers shall not assign it. ``funcs`` Operations that can be performed on the panel. ``connector_type`` Type of the panel as a DRM_MODE_CONNECTOR_* value. This is used to initialise the drm_connector corresponding to the panel with the correct connector type. ``list`` Panel entry in registry. ``followers`` A list of struct drm_panel_follower dependent on this panel. ``follower_lock`` Lock for followers list. ``prepare_prev_first`` The previous controller should be prepared first, before the prepare for the panel is called. This is largely required for DSI panels where the DSI host controller should be initialised to LP-11 before the panel is powered up. ``prepared`` If true then the panel has been prepared. ``enabled`` If true then the panel has been enabled. ``container`` Pointer to the private driver struct embedding this **struct** drm_panel. ``refcount`` reference count of users referencing this panel.”h]”(hÎ)�”}”(hŒ**Definition**::”h]”(j3 )�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj^ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjZðubhŒ:”…”�”}”(hjZðh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:223: ./include/drm/drm_panel.h”h´KÏhjVðubjN )�”}”(hXbstruct drm_panel { struct device *dev; struct backlight_device *backlight; const struct drm_panel_funcs *funcs; int connector_type; struct list_head list; struct list_head followers; struct mutex follower_lock; bool prepare_prev_first; bool prepared; bool enabled; void *container; struct kref refcount; };”h]”hXbstruct drm_panel { struct device *dev; struct backlight_device *backlight; const struct drm_panel_funcs *funcs; int connector_type; struct list_head list; struct list_head followers; struct mutex follower_lock; bool prepare_prev_first; bool prepared; bool enabled; void *container; struct kref refcount; };”…”�”}”hjwðsbah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jM h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:223: ./include/drm/drm_panel.h”h´KÑhjVðubhÎ)�”}”(hŒ **Members**”h]”j3 )�”}”(hjˆðh]”hŒMembers”…”�”}”(hjŠðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj†ðubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:223: ./include/drm/drm_panel.h”h´KàhjVðubjw )�”}”(hhh]”(j| )�”}”(hŒ$``dev`` Parent device of the panel. ”h]”(j‚ )�”}”(hŒ``dev``”h]”jˆ )�”}”(hj§ðh]”hŒdev”…”�”}”(hj©ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¥ðubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:223: ./include/drm/drm_panel.h”h´KÐhj¡ðubjž )�”}”(hhh]”hÎ)�”}”(hŒParent device of the panel.”h]”hŒParent device of the panel.”…”�”}”(hjÀðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¼ðh´KÐhj½ðubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¡ðubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¼ðh´KÐhjžðubj| )�”}”(hŒü``backlight`` Backlight device, used to turn on backlight after the call to enable(), and to turn off backlight before the call to disable(). backlight is set by drm_panel_of_backlight() or drm_panel_dp_aux_backlight() and drivers shall not assign it. ”h]”(j‚ )�”}”(hŒ ``backlight``”h]”jˆ )�”}”(hjàðh]”hŒ backlight”…”�”}”(hjâðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÞðubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:223: ./include/drm/drm_panel.h”h´KÛhjÚðubjž )�”}”(hhh]”hÎ)�”}”(hŒíBacklight device, used to turn on backlight after the call to enable(), and to turn off backlight before the call to disable(). backlight is set by drm_panel_of_backlight() or drm_panel_dp_aux_backlight() and drivers shall not assign it.”h]”hŒíBacklight device, used to turn on backlight after the call to enable(), and to turn off backlight before the call to disable(). backlight is set by drm_panel_of_backlight() or drm_panel_dp_aux_backlight() and drivers shall not assign it.”…”�”}”(hjùðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:223: ./include/drm/drm_panel.h”h´K×hjöðubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÚðubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jõðh´KÛhjžðubj| )�”}”(hŒ9``funcs`` Operations that can be performed on the panel. ”h]”(j‚ )�”}”(hŒ ``funcs``”h]”jˆ )�”}”(hjñh]”hŒfuncs”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjñubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:223: ./include/drm/drm_panel.h”h´Kâhjñubjž )�”}”(hhh]”hÎ)�”}”(hŒ.Operations that can be performed on the panel.”h]”hŒ.Operations that can be performed on the panel.”…”�”}”(hj3ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j/ñh´Kâhj0ñubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjñubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j/ñh´Kâhjžðubj| )�”}”(hŒ¯``connector_type`` Type of the panel as a DRM_MODE_CONNECTOR_* value. This is used to initialise the drm_connector corresponding to the panel with the correct connector type. ”h]”(j‚ )�”}”(hŒ``connector_type``”h]”jˆ )�”}”(hjSñh]”hŒconnector_type”…”�”}”(hjUñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjQñubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:223: ./include/drm/drm_panel.h”h´KëhjMñubjž )�”}”(hhh]”hÎ)�”}”(hŒ›Type of the panel as a DRM_MODE_CONNECTOR_* value. This is used to initialise the drm_connector corresponding to the panel with the correct connector type.”h]”hŒ›Type of the panel as a DRM_MODE_CONNECTOR_* value. This is used to initialise the drm_connector corresponding to the panel with the correct connector type.”…”�”}”(hjlñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:223: ./include/drm/drm_panel.h”h´Kéhjiñubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjMñubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jhñh´Këhjžðubj| )�”}”(hŒ"``list`` Panel entry in registry. ”h]”(j‚ )�”}”(hŒ``list``”h]”jˆ )�”}”(hj�ñh]”hŒlist”…”�”}”(hj�ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj‹ñubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:223: ./include/drm/drm_panel.h”h´Kòhj‡ñubjž )�”}”(hhh]”hÎ)�”}”(hŒPanel entry in registry.”h]”hŒPanel entry in registry.”…”�”}”(hj¦ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¢ñh´Kòhj£ñubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj‡ñubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¢ñh´Kòhjžðubj| )�”}”(hŒK``followers`` A list of struct drm_panel_follower dependent on this panel. ”h]”(j‚ )�”}”(hŒ ``followers``”h]”jˆ )�”}”(hjÆñh]”hŒ followers”…”�”}”(hjÈñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÄñubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ\/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:223: ./include/drm/drm_panel.h”h´KùhjÀñubjž )�”}”(hhh]”hÎ)�”}”(hŒ÷h]”hŒ Description”…”�”}”(hj@÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj<÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´KOhjÞöubhÎ)�”}”(hŒœAdd a panel to the global registry so that it can be looked up by display drivers. The panel to be added must have been allocated by devm_drm_panel_alloc().”h]”hŒœAdd a panel to the global registry so that it can be looked up by display drivers. The panel to be added must have been allocated by devm_drm_panel_alloc().”…”�”}”(hjT÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´KNhjÞöubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj)ìh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_panel_remove (C function)”Œc.drm_panel_remove”hNt”auh1j† hj)ìh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ/void drm_panel_remove (struct drm_panel *panel)”h]”j¤ )�”}”(hŒ.void drm_panel_remove(struct drm_panel *panel)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjƒ÷h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj÷h²hh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.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Œdrm_panel_remove”h]”jÓ )�”}”(hŒdrm_panel_remove”h]”hŒdrm_panel_remove”…”�”}”(hj¤÷h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj ÷ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj÷h²hh³j‘÷h´K]ubjÞ)�”}”(hŒ(struct drm_panel *panel)”h]”jä)�”}”(hŒstruct drm_panel *panel”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Œ drm_panel”h]”hŒ drm_panel”…”�”}”(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%)�”}”jj¦÷sbŒc.drm_panel_remove”†”asbuh1hhj¼÷ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþ÷h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¼÷ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj øh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¼÷ubjÓ )�”}”(hŒpanel”h]”hŒpanel”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¼÷ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¸÷ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj÷h²hh³j‘÷h´K]ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj{÷h²hh³j‘÷h´K]ubah}”(h]”jv÷ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j‘÷h´K]hjx÷h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ'remove a panel from the global registry”h]”hŒ'remove a panel from the global registry”…”�”}”(hjCøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´K]hj@øh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjx÷h²hh³j‘÷h´K]ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j[øj$ j[øj% ‰j& ‰j' ‰uh1j˜ h²hhj)ìh³Nh´Nubj) )�”}”(hŒs**Parameters** ``struct drm_panel *panel`` DRM panel **Description** Removes a panel from the global registry.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjeøh]”hŒ Parameters”…”�”}”(hjgøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjcøubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´Kahj_øubjw )�”}”(hhh]”j| )�”}”(hŒ&``struct drm_panel *panel`` DRM panel ”h]”(j‚ )�”}”(hŒ``struct drm_panel *panel``”h]”jˆ )�”}”(hj„øh]”hŒstruct drm_panel *panel”…”�”}”(hj†øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj‚øubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´K^hj~øubjž )�”}”(hhh]”hÎ)�”}”(hŒ DRM panel”h]”hŒ DRM panel”…”�”}”(hj�øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j™øh´K^hjšøubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj~øubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j™øh´K^hj{øubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj_øubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj¿øh]”hŒ Description”…”�”}”(hjÁøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj½øubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´K`hj_øubhÎ)�”}”(hŒ)Removes a panel from the global registry.”h]”hŒ)Removes a panel from the global registry.”…”�”}”(hjÕøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´K_hj_øubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj)ìh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdevm_drm_panel_add (C function)”Œc.devm_drm_panel_add”hNt”auh1j† hj)ìh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒDint devm_drm_panel_add (struct device *dev, struct drm_panel *panel)”h]”j¤ )�”}”(hŒCint devm_drm_panel_add(struct device *dev, struct drm_panel *panel)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjùh²hh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´Kqubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjùh²hh³jùh´KqubjÍ )�”}”(hŒdevm_drm_panel_add”h]”jÓ )�”}”(hŒdevm_drm_panel_add”h]”hŒdevm_drm_panel_add”…”�”}”(hj%ùh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj!ùubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjùh²hh³jùh´KqubjÞ)�”}”(hŒ-(struct device *dev, struct drm_panel *panel)”h]”(jä)�”}”(hŒstruct device *dev”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjAùh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj=ùubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNùh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj=ùubh)�”}”(hhh]”jÓ )�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hj_ùh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj\ùubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jaùŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj'ùsbŒc.devm_drm_panel_add”†”asbuh1hhj=ùubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj=ùubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj�ùh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj=ùubjÓ )�”}”(hŒdev”h]”hŒdev”…”�”}”(hjšùh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj=ùubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj9ùubjä)�”}”(hŒstruct drm_panel *panel”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Œ drm_panel”h]”hŒ drm_panel”…”�”}”(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.devm_drm_panel_add”†”asbuh1hhj¯ùubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïùh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¯ùubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjýùh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¯ùubjÓ )�”}”(hŒpanel”h]”hŒpanel”…”�”}”(hj úh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¯ùubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj9ùubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjùh²hh³jùh´Kqubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjüøh²hh³jùh´Kqubah}”(h]”j÷øah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jùh´Kqhjùøh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ/add a panel to the global registry using devres”h]”hŒ/add a panel to the global registry using devres”…”�”}”(hj4úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´Kqhj1úh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjùøh²hh³jùh´Kqubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jLúj$ jLúj% ‰j& ‰j' ‰uh1j˜ h²hhj)ìh³Nh´Nubj) )�”}”(hX¡**Parameters** ``struct device *dev`` device to which the panel is attached ``struct drm_panel *panel`` panel to add **Description** Add a panel to the global registry so that it can be looked up by display drivers. The panel to be added must have been allocated by devm_drm_panel_alloc(). Unlike drm_panel_add() with this function there is no need to call drm_panel_remove(), it will be called automatically.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjVúh]”hŒ Parameters”…”�”}”(hjXúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjTúubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´KuhjPúubjw )�”}”(hhh]”(j| )�”}”(hŒ=``struct device *dev`` device to which the panel is attached ”h]”(j‚ )�”}”(hŒ``struct device *dev``”h]”jˆ )�”}”(hjuúh]”hŒstruct device *dev”…”�”}”(hjwúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjsúubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´Krhjoúubjž )�”}”(hhh]”hÎ)�”}”(hŒ%device to which the panel is attached”h]”hŒ%device to which the panel is attached”…”�”}”(hjŽúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jŠúh´Krhj‹úubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjoúubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jŠúh´Krhjlúubj| )�”}”(hŒ)``struct drm_panel *panel`` panel to add ”h]”(j‚ )�”}”(hŒ``struct drm_panel *panel``”h]”jˆ )�”}”(hj®úh]”hŒstruct drm_panel *panel”…”�”}”(hj°úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¬úubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´Kshj¨úubjž )�”}”(hhh]”hÎ)�”}”(hŒ panel to add”h]”hŒ panel to add”…”�”}”(hjÇúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÃúh´KshjÄúubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¨úubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÃúh´Kshjlúubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjPúubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjéúh]”hŒ Description”…”�”}”(hjëúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjçúubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´KuhjPúubhÎ)�”}”(hXAdd a panel to the global registry so that it can be looked up by display drivers. The panel to be added must have been allocated by devm_drm_panel_alloc(). Unlike drm_panel_add() with this function there is no need to call drm_panel_remove(), it will be called automatically.”h]”hXAdd a panel to the global registry so that it can be looked up by display drivers. The panel to be added must have been allocated by devm_drm_panel_alloc(). Unlike drm_panel_add() with this function there is no need to call drm_panel_remove(), it will be called automatically.”…”�”}”(hjÿúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´KthjPúubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj)ìh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_panel_prepare (C function)”Œc.drm_panel_prepare”hNt”auh1j† hj)ìh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ0void drm_panel_prepare (struct drm_panel *panel)”h]”j¤ )�”}”(hŒ/void drm_panel_prepare(struct drm_panel *panel)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj.ûh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj*ûh²hh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.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Œdrm_panel_prepare”h]”jÓ )�”}”(hŒdrm_panel_prepare”h]”hŒdrm_panel_prepare”…”�”}”(hjOûh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjKûubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj*ûh²hh³j<ûh´K„ubjÞ)�”}”(hŒ(struct drm_panel *panel)”h]”jä)�”}”(hŒstruct drm_panel *panel”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjkûh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjgûubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxûh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjgûubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_panel”h]”hŒ drm_panel”…”�”}”(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%)�”}”jjQûsbŒc.drm_panel_prepare”†”asbuh1hhjgûubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©ûh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjgûubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj·ûh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjgûubjÓ )�”}”(hŒpanel”h]”hŒpanel”…”�”}”(hjÄûh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjgûubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjcûubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj*ûh²hh³j<ûh´K„ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œpower on a panel”h]”hŒpower on a panel”…”�”}”(hjîûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.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²hhj)ìh³Nh´Nubj) )�”}”(hX‘**Parameters** ``struct drm_panel *panel`` DRM panel **Description** Calling this function will enable power and deassert any reset signals to the panel. After this has completed it is possible to communicate with any integrated circuitry via a command bus. This function cannot fail (as it is called from the pre_enable call chain). There will always be a call to drm_panel_disable() afterwards.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjüh]”hŒ Parameters”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjüubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´Kˆhj üubjw )�”}”(hhh]”j| )�”}”(hŒ&``struct drm_panel *panel`` DRM panel ”h]”(j‚ )�”}”(hŒ``struct drm_panel *panel``”h]”jˆ )�”}”(hj/üh]”hŒstruct drm_panel *panel”…”�”}”(hj1üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj-üubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´K…hj)üubjž )�”}”(hhh]”hÎ)�”}”(hŒ DRM panel”h]”hŒ DRM panel”…”�”}”(hjHüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jDüh´K…hjEüubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj)üubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jDüh´K…hj&üubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj üubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjjüh]”hŒ Description”…”�”}”(hjlüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjhüubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´K‡hj üubhÎ)�”}”(hXGCalling this function will enable power and deassert any reset signals to the panel. After this has completed it is possible to communicate with any integrated circuitry via a command bus. This function cannot fail (as it is called from the pre_enable call chain). There will always be a call to drm_panel_disable() afterwards.”h]”hXGCalling this function will enable power and deassert any reset signals to the panel. After this has completed it is possible to communicate with any integrated circuitry via a command bus. This function cannot fail (as it is called from the pre_enable call chain). There will always be a call to drm_panel_disable() afterwards.”…”�”}”(hj€üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´K†hj üubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj)ìh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ drm_panel_unprepare (C function)”Œc.drm_panel_unprepare”hNt”auh1j† hj)ìh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ2void drm_panel_unprepare (struct drm_panel *panel)”h]”j¤ )�”}”(hŒ1void drm_panel_unprepare(struct drm_panel *panel)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¯üh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj«üh²hh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.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Œdrm_panel_unprepare”h]”jÓ )�”}”(hŒdrm_panel_unprepare”h]”hŒdrm_panel_unprepare”…”�”}”(hjÐüh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÌüubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj«üh²hh³j½üh´K³ubjÞ)�”}”(hŒ(struct drm_panel *panel)”h]”jä)�”}”(hŒstruct drm_panel *panel”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Œ drm_panel”h]”hŒ drm_panel”…”�”}”(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%)�”}”jjÒüsbŒc.drm_panel_unprepare”†”asbuh1hhjèüubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*ýh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjèüubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj8ýh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjèüubjÓ )�”}”(hŒpanel”h]”hŒpanel”…”�”}”(hjEýh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjèüubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjäüubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj«üh²hh³j½üh´K³ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œpower off a panel”h]”hŒpower off a panel”…”�”}”(hjoýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´K³hjlý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²hhj)ìh³Nh´Nubj) )�”}”(hXH**Parameters** ``struct drm_panel *panel`` DRM panel **Description** Calling this function will completely power off a panel (assert the panel's reset, turn off power supplies, ...). After this function has completed, it is usually no longer possible to communicate with the panel until another call to drm_panel_prepare().”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj‘ýh]”hŒ Parameters”…”�”}”(hj“ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj�ýubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´K·hj‹ýubjw )�”}”(hhh]”j| )�”}”(hŒ&``struct drm_panel *panel`` DRM panel ”h]”(j‚ )�”}”(hŒ``struct drm_panel *panel``”h]”jˆ )�”}”(hj°ýh]”hŒstruct drm_panel *panel”…”�”}”(hj²ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj®ýubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´K´hjªýubjž )�”}”(hhh]”hÎ)�”}”(hŒ DRM panel”h]”hŒ DRM panel”…”�”}”(hjÉýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÅýh´K´hjÆýubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjªýubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÅýh´K´hj§ýubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj‹ýubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjëýh]”hŒ Description”…”�”}”(hjíýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjéýubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´K¶hj‹ýubhÎ)�”}”(hŒþCalling this function will completely power off a panel (assert the panel's reset, turn off power supplies, ...). After this function has completed, it is usually no longer possible to communicate with the panel until another call to drm_panel_prepare().”h]”hXCalling this function will completely power off a panel (assert the panel’s reset, turn off power supplies, ...). After this function has completed, it is usually no longer possible to communicate with the panel until another call to drm_panel_prepare().”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´Kµhj‹ýubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj)ìh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_panel_enable (C function)”Œc.drm_panel_enable”hNt”auh1j† hj)ìh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ/void drm_panel_enable (struct drm_panel *panel)”h]”j¤ )�”}”(hŒ.void drm_panel_enable(struct drm_panel *panel)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj0þh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj,þh²hh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.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Œdrm_panel_enable”h]”jÓ )�”}”(hŒdrm_panel_enable”h]”hŒdrm_panel_enable”…”�”}”(hjQþh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjMþubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj,þh²hh³j>þh´KêubjÞ)�”}”(hŒ(struct drm_panel *panel)”h]”jä)�”}”(hŒstruct drm_panel *panel”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjmþh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjiþubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjzþh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjiþubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_panel”h]”hŒ drm_panel”…”�”}”(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%)�”}”jjSþsbŒc.drm_panel_enable”†”asbuh1hhjiþubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«þh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjiþubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj¹þh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjiþubjÓ )�”}”(hŒpanel”h]”hŒpanel”…”�”}”(hjÆþh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjiþubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjeþubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj,þh²hh³j>þh´Kêubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œenable a panel”h]”hŒenable a panel”…”�”}”(hjðþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.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²hhj)ìh³Nh´Nubj) )�”}”(hXy**Parameters** ``struct drm_panel *panel`` DRM panel **Description** Calling this function will cause the panel display drivers to be turned on and the backlight to be enabled. Content will be visible on screen after this call completes. This function cannot fail (as it is called from the enable call chain). There will always be a call to drm_panel_disable() afterwards.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjÿh]”hŒ Parameters”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÿubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´Kîhj ÿubjw )�”}”(hhh]”j| )�”}”(hŒ&``struct drm_panel *panel`` DRM panel ”h]”(j‚ )�”}”(hŒ``struct drm_panel *panel``”h]”jˆ )�”}”(hj1ÿh]”hŒstruct drm_panel *panel”…”�”}”(hj3ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj/ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´Këhj+ÿubjž )�”}”(hhh]”hÎ)�”}”(hŒ DRM panel”h]”hŒ DRM panel”…”�”}”(hjJÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jFÿh´KëhjGÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj+ÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jFÿh´Këhj(ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj ÿubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjlÿh]”hŒ Description”…”�”}”(hjnÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjjÿubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´Kíhj ÿubhÎ)�”}”(hX/Calling this function will cause the panel display drivers to be turned on and the backlight to be enabled. Content will be visible on screen after this call completes. This function cannot fail (as it is called from the enable call chain). There will always be a call to drm_panel_disable() afterwards.”h]”hX/Calling this function will cause the panel display drivers to be turned on and the backlight to be enabled. Content will be visible on screen after this call completes. This function cannot fail (as it is called from the enable call chain). There will always be a call to drm_panel_disable() afterwards.”…”�”}”(hj‚ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´Kìhj ÿubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj)ìh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_panel_disable (C function)”Œc.drm_panel_disable”hNt”auh1j† hj)ìh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ0void drm_panel_disable (struct drm_panel *panel)”h]”j¤ )�”}”(hŒ/void drm_panel_disable(struct drm_panel *panel)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj±ÿh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj­ÿh²hh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀÿh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj­ÿh²hh³j¿ÿh´MubjÍ )�”}”(hŒdrm_panel_disable”h]”jÓ )�”}”(hŒdrm_panel_disable”h]”hŒdrm_panel_disable”…”�”}”(hjÒÿh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÎÿubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj­ÿh²hh³j¿ÿh´MubjÞ)�”}”(hŒ(struct drm_panel *panel)”h]”jä)�”}”(hŒstruct drm_panel *panel”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Œ drm_panel”h]”hŒ drm_panel”…”�”}”(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%)�”}”jjÔÿsbŒc.drm_panel_disable”†”asbuh1hhjêÿubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjêÿubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjêÿubjÓ )�”}”(hŒpanel”h]”hŒpanel”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjêÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjæÿubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj­ÿh²hh³j¿ÿh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj©ÿh²hh³j¿ÿh´Mubah}”(h]”j¤ÿah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j¿ÿh´Mhj¦ÿh²hubj )�”}”(hhh]”hÎ)�”}”(hŒdisable a panel”h]”hŒdisable a panel”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´Mhjnh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¦ÿh²hh³j¿ÿh´Mubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j‰j$ j‰j% ‰j& ‰j' ‰uh1j˜ h²hhj)ìh³Nh´Nubj) )�”}”(hX**Parameters** ``struct drm_panel *panel`` DRM panel **Description** This will typically turn off the panel's backlight or disable the display drivers. For smart panels it should still be possible to communicate with the integrated circuitry via any command bus after this call.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj“h]”hŒ Parameters”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´M"hj�ubjw )�”}”(hhh]”j| )�”}”(hŒ&``struct drm_panel *panel`` DRM panel ”h]”(j‚ )�”}”(hŒ``struct drm_panel *panel``”h]”jˆ )�”}”(hj²h]”hŒstruct drm_panel *panel”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj°ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´Mhj¬ubjž )�”}”(hhh]”hÎ)�”}”(hŒ DRM panel”h]”hŒ DRM panel”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÇh´MhjÈubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÇh´Mhj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj�ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjíh]”hŒ Description”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjëubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´M!hj�ubhÎ)�”}”(hŒÑThis will typically turn off the panel's backlight or disable the display drivers. For smart panels it should still be possible to communicate with the integrated circuitry via any command bus after this call.”h]”hŒÓThis will typically turn off the panel’s backlight or disable the display drivers. For smart panels it should still be possible to communicate with the integrated circuitry via any command bus after this call.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´M hj�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( h•j)ìh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ drm_panel_get_modes (C function)”Œc.drm_panel_get_modes”hNt”auh1j† hj)ìh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒRint drm_panel_get_modes (struct drm_panel *panel, struct drm_connector *connector)”h]”j¤ )�”}”(hŒQint drm_panel_get_modes(struct drm_panel *panel, struct drm_connector *connector)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj.h²hh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´MYubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj.h²hh³j@h´MYubjÍ )�”}”(hŒdrm_panel_get_modes”h]”jÓ )�”}”(hŒdrm_panel_get_modes”h]”hŒdrm_panel_get_modes”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjOubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj.h²hh³j@h´MYubjÞ)�”}”(hŒ:(struct drm_panel *panel, struct drm_connector *connector)”h]”(jä)�”}”(hŒstruct drm_panel *panel”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjkubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjkubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_panel”h]”hŒ drm_panel”…”�”}”(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%)�”}”jjUsbŒc.drm_panel_get_modes”†”asbuh1hhjkubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjkubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjkubjÓ )�”}”(hŒpanel”h]”hŒpanel”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjkubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjgubjä)�”}”(hŒstruct drm_connector *connector”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Œ drm_connector”h]”hŒ drm_connector”…”�”}”(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.drm_panel_get_modes”†”asbuh1hhjÝubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÝubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÝubjÓ )�”}”(hŒ connector”h]”hŒ connector”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÝubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjgubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj.h²hh³j@h´MYubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj*h²hh³j@h´MYubah}”(h]”j%ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j@h´MYhj'h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ,probe the available display modes of a panel”h]”hŒ,probe the available display modes of a panel”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´MYhj_h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj'h²hh³j@h´MYubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jzj$ jzj% ‰j& ‰j' ‰uh1j˜ h²hhj)ìh³Nh´Nubj) )�”}”(hXH**Parameters** ``struct drm_panel *panel`` DRM panel ``struct drm_connector *connector`` DRM connector **Description** The modes probed from the panel are automatically added to the connector that the panel is attached to. **Return** The number of modes available from the panel on success, or 0 on failure (no modes).”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj„h]”hŒ Parameters”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´M]hj~ubjw )�”}”(hhh]”(j| )�”}”(hŒ&``struct drm_panel *panel`` DRM panel ”h]”(j‚ )�”}”(hŒ``struct drm_panel *panel``”h]”jˆ )�”}”(hj£h]”hŒstruct drm_panel *panel”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´MZhj�ubjž )�”}”(hhh]”hÎ)�”}”(hŒ DRM panel”h]”hŒ DRM panel”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¸h´MZhj¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¸h´MZhjšubj| )�”}”(hŒ2``struct drm_connector *connector`` DRM connector ”h]”(j‚ )�”}”(hŒ#``struct drm_connector *connector``”h]”jˆ )�”}”(hjÜh]”hŒstruct drm_connector *connector”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´M[hjÖubjž )�”}”(hhh]”hÎ)�”}”(hŒ DRM connector”h]”hŒ DRM connector”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jñh´M[hjòubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÖubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jñh´M[hjšubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj~ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjh]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´M]hj~ubhÎ)�”}”(hŒgThe modes probed from the panel are automatically added to the connector that the panel is attached to.”h]”hŒgThe modes probed from the panel are automatically added to the connector that the panel is attached to.”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´M\hj~ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj>h]”hŒReturn”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj<ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´M_hj~ubhÎ)�”}”(hŒTThe number of modes available from the panel on success, or 0 on failure (no modes).”h]”hŒTThe number of modes available from the panel on success, or 0 on failure (no modes).”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´M`hj~ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj)ìh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_panel_get (C function)”Œc.drm_panel_get”hNt”auh1j† hj)ìh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ:struct drm_panel * drm_panel_get (struct drm_panel *panel)”h]”j¤ )�”}”(hŒ8struct drm_panel *drm_panel_get(struct drm_panel *panel)”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjh²hh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´M}ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjh²hh³j�h´M}ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_panel”h]”hŒ drm_panel”…”�”}”(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Œ drm_panel_get”sbŒc.drm_panel_get”†”asbuh1hhjh²hh³j�h´M}ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjh²hh³j�h´M}ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjh²hh³j�h´M}ubjÍ )�”}”(hŒ drm_panel_get”h]”jÓ )�”}”(hjÀh]”hŒ drm_panel_get”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÞubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjh²hh³j�h´M}ubjÞ)�”}”(hŒ(struct drm_panel *panel)”h]”jä)�”}”(hŒstruct drm_panel *panel”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Œ drm_panel”h]”hŒ drm_panel”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jŒmodname”NŒ classname”Njé jì )�”}”jï ]”j¾Œc.drm_panel_get”†”asbuh1hhjùubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjùubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjùubjÓ )�”}”(hŒpanel”h]”hŒpanel”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjùubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjõubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjh²hh³j�h´M}ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj{h²hh³j�h´M}ubah}”(h]”jvah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j�h´M}hjxh²hubj )�”}”(hhh]”hÎ)�”}”(hŒAcquire a panel reference”h]”hŒAcquire a panel reference”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´M}hj{h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjxh²hh³j�h´M}ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j–j$ j–j% ‰j& ‰j' ‰uh1j˜ h²hhj)ìh³Nh´Nubj) )�”}”(hŒš**Parameters** ``struct drm_panel *panel`` DRM panel **Description** This function increments the panel's refcount. **Return** Pointer to **panel**”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj h]”hŒ Parameters”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjžubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´M�hjšubjw )�”}”(hhh]”j| )�”}”(hŒ&``struct drm_panel *panel`` DRM panel ”h]”(j‚ )�”}”(hŒ``struct drm_panel *panel``”h]”jˆ )�”}”(hj¿h]”hŒstruct drm_panel *panel”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj½ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´M~hj¹ubjž )�”}”(hhh]”hÎ)�”}”(hŒ DRM panel”h]”hŒ DRM panel”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÔh´M~hjÕubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÔh´M~hj¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjšubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjúh]”hŒ Description”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjøubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´M€hjšubhÎ)�”}”(hŒ.This function increments the panel's refcount.”h]”hŒ0This function increments the panel’s refcount.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´MhjšubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj!h]”hŒReturn”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´M�hjšubhÎ)�”}”(hŒPointer to **panel**”h]”(hŒ Pointer to ”…”�”}”(hj7h²hh³Nh´Nubj3 )�”}”(hŒ **panel**”h]”hŒpanel”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´M�hjšubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj)ìh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_panel_put (C function)”Œc.drm_panel_put”hNt”auh1j† hj)ìh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ,void drm_panel_put (struct drm_panel *panel)”h]”j¤ )�”}”(hŒ+void drm_panel_put(struct drm_panel *panel)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjph²hh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´M�ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjph²hh³j‚h´M�ubjÍ )�”}”(hŒ drm_panel_put”h]”jÓ )�”}”(hŒ drm_panel_put”h]”hŒ drm_panel_put”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj‘ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjph²hh³j‚h´M�ubjÞ)�”}”(hŒ(struct drm_panel *panel)”h]”jä)�”}”(hŒstruct drm_panel *panel”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Œ drm_panel”h]”hŒ drm_panel”…”�”}”(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%)�”}”jj—sbŒc.drm_panel_put”†”asbuh1hhj­ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj­ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj­ubjÓ )�”}”(hŒpanel”h]”hŒpanel”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj­ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj©ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjph²hh³j‚h´M�ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjlh²hh³j‚h´M�ubah}”(h]”jgah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j‚h´M�hjih²hubj )�”}”(hhh]”hÎ)�”}”(hŒRelease a panel reference”h]”hŒRelease a panel reference”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´M�hj1h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjih²hh³j‚h´M�ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jLj$ jLj% ‰j& ‰j' ‰uh1j˜ h²hhj)ìh³Nh´Nubj) )�”}”(hŒ¹**Parameters** ``struct drm_panel *panel`` DRM panel **Description** This function decrements the panel's reference count and frees the object if the reference count drops to zero.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjVh]”hŒ Parameters”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjTubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´M”hjPubjw )�”}”(hhh]”j| )�”}”(hŒ&``struct drm_panel *panel`` DRM panel ”h]”(j‚ )�”}”(hŒ``struct drm_panel *panel``”h]”jˆ )�”}”(hjuh]”hŒstruct drm_panel *panel”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjsubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´M‘hjoubjž )�”}”(hhh]”hÎ)�”}”(hŒ DRM panel”h]”hŒ DRM panel”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jŠh´M‘hj‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjoubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jŠh´M‘hjlubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjPubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj°h]”hŒ Description”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj®ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´M“hjPubhÎ)�”}”(hŒoThis function decrements the panel's reference count and frees the object if the reference count drops to zero.”h]”hŒqThis function decrements the panel’s reference count and frees the object if the reference count drops to zero.”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´M’hjPubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj)ìh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œof_drm_find_panel (C function)”Œc.of_drm_find_panel”hNt”auh1j† hj)ìh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒCstruct drm_panel * of_drm_find_panel (const struct device_node *np)”h]”j¤ )�”}”(hŒAstruct drm_panel *of_drm_find_panel(const struct device_node *np)”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjñh²hh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´MÎubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjñh²hh³jh´MÎubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_panel”h]”hŒ drm_panel”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jŒof_drm_find_panel”sbŒc.of_drm_find_panel”†”asbuh1hhjñh²hh³jh´MÎubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjñh²hh³jh´MÎubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjñh²hh³jh´MÎubjÍ )�”}”(hŒof_drm_find_panel”h]”jÓ )�”}”(hj2h]”hŒof_drm_find_panel”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjPubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjñh²hh³jh´MÎubjÞ)�”}”(hŒ(const struct device_node *np)”h]”jä)�”}”(hŒconst struct device_node *np”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjkubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjkubjª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjkubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjkubh)�”}”(hhh]”jÓ )�”}”(hŒ device_node”h]”hŒ device_node”…”�”}”(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ï ]”j0Œc.of_drm_find_panel”†”asbuh1hhjkubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjkubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjkubjÓ )�”}”(hŒnp”h]”hŒnp”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjkubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjgubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjñh²hh³jh´MÎubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ1look up and reference a panel by device tree node”h]”hŒ1look up and reference a panel by device tree node”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´MÎhjh²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²hhj)ìh³Nh´Nubj) )�”}”(hXò**Parameters** ``const struct device_node *np`` device tree node of the panel **Description** Searches the set of registered panels for one that matches the given device tree node. If a matching panel is found, the panel's reference count is incremented before returning a pointer to it. The caller must call drm_panel_put() when it no longer needs the panel pointer. Possible error codes returned by this function: - EPROBE_DEFER: the panel device has not been probed yet, and the caller should retry later - ENODEV: the device is not available (status != "okay" or "ok") **Return** A reference-counted pointer to the panel registered for the specified device tree node or an ERR_PTR() if no panel matching the device tree node can be found.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj-h]”hŒ Parameters”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´MÒhj'ubjw )�”}”(hhh]”j| )�”}”(hŒ?``const struct device_node *np`` device tree node of the panel ”h]”(j‚ )�”}”(hŒ ``const struct device_node *np``”h]”jˆ )�”}”(hjLh]”hŒconst struct device_node *np”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjJubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´MÏhjFubjž )�”}”(hhh]”hÎ)�”}”(hŒdevice tree node of the panel”h]”hŒdevice tree node of the panel”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jah´MÏhjbubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjFubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jah´MÏhjCubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj'ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj‡h]”hŒ Description”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj…ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´MÑhj'ubhÎ)�”}”(hXSearches the set of registered panels for one that matches the given device tree node. If a matching panel is found, the panel's reference count is incremented before returning a pointer to it. The caller must call drm_panel_put() when it no longer needs the panel pointer.”h]”hXSearches the set of registered panels for one that matches the given device tree node. If a matching panel is found, the panel’s reference count is incremented before returning a pointer to it. The caller must call drm_panel_put() when it no longer needs the panel pointer.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´MÐhj'ubhÎ)�”}”(hŒ/Possible error codes returned by this function:”h]”hŒ/Possible error codes returned by this function:”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´MÖhj'ubhú)�”}”(hhh]”(hÿ)�”}”(hŒYEPROBE_DEFER: the panel device has not been probed yet, and the caller should retry later”h]”hÎ)�”}”(hŒYEPROBE_DEFER: the panel device has not been probed yet, and the caller should retry later”h]”hŒYEPROBE_DEFER: the panel device has not been probed yet, and the caller should retry later”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´MØhj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj»ubhÿ)�”}”(hŒ?ENODEV: the device is not available (status != "okay" or "ok") ”h]”hÎ)�”}”(hŒ>ENODEV: the device is not available (status != "okay" or "ok")”h]”hŒFENODEV: the device is not available (status != “okayâ€� or “okâ€�)”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´MÚhj×ubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj»ubeh}”(h]”h ]”h"]”h$]”h&]”jNjÅ<uh1hùh³jÐh´MØhj'ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjøh]”hŒReturn”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjöubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´MÜhj'ubhÎ)�”}”(hŒžA reference-counted pointer to the panel registered for the specified device tree node or an ERR_PTR() if no panel matching the device tree node can be found.”h]”hŒžA reference-counted pointer to the panel registered for the specified device tree node or an ERR_PTR() if no panel matching the device tree node can be found.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´MÖhj'ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj)ìh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ"drm_is_panel_follower (C function)”Œc.drm_is_panel_follower”hNt”auh1j† hj)ìh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ/bool drm_is_panel_follower (struct device *dev)”h]”j¤ )�”}”(hŒ.bool drm_is_panel_follower(struct device *dev)”h]”(j¦)�”}”(hj£Ih]”hŒbool”…”�”}”(hj= h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj9 h²hh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´M%ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjK h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj9 h²hh³jJ h´M%ubjÍ )�”}”(hŒdrm_is_panel_follower”h]”jÓ )�”}”(hŒdrm_is_panel_follower”h]”hŒdrm_is_panel_follower”…”�”}”(hj] h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjY ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj9 h²hh³jJ h´M%ubjÞ)�”}”(hŒ(struct device *dev)”h]”jä)�”}”(hŒstruct device *dev”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjy h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hju ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj† h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hju ubh)�”}”(hhh]”jÓ )�”}”(hŒdevice”h]”hŒdevice”…”�”}”(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%)�”}”jj_ sbŒc.drm_is_panel_follower”†”asbuh1hhju ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj· h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hju ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÅ h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hju ubjÓ )�”}”(hŒdev”h]”hŒdev”…”�”}”(hjÒ h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hju ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjq ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj9 h²hh³jJ h´M%ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj5 h²hh³jJ h´M%ubah}”(h]”j0 ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jJ h´M%hj2 h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ'Check if the device is a panel follower”h]”hŒ'Check if the device is a panel follower”…”�”}”(hjü h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´M%hjù h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj2 h²hh³jJ h´M%ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j j$ j j% ‰j& ‰j' ‰uh1j˜ h²hhj)ìh³Nh´Nubj) )�”}”(hXa**Parameters** ``struct device *dev`` The 'struct device' to check **Description** This checks to see if a device needs to be power sequenced together with a panel using the panel follower API. The "panel" property of the follower points to the panel to be followed. **Return** true if we should be power sequenced with a panel; false otherwise.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj h]”hŒ Parameters”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´M)hj ubjw )�”}”(hhh]”j| )�”}”(hŒ4``struct device *dev`` The 'struct device' to check ”h]”(j‚ )�”}”(hŒ``struct device *dev``”h]”jˆ )�”}”(hj= h]”hŒstruct device *dev”…”�”}”(hj? h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj; ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´M&hj7 ubjž )�”}”(hhh]”hÎ)�”}”(hŒThe 'struct device' to check”h]”hŒ The ‘struct device’ to check”…”�”}”(hjV h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jR h´M&hjS ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj7 ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jR h´M&hj4 ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjx h]”hŒ Description”…”�”}”(hjz h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjv ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´M(hj ubhÎ)�”}”(hŒnThis checks to see if a device needs to be power sequenced together with a panel using the panel follower API.”h]”hŒnThis checks to see if a device needs to be power sequenced together with a panel using the panel follower API.”…”�”}”(hjŽ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´M'hj ubhÎ)�”}”(hŒHThe "panel" property of the follower points to the panel to be followed.”h]”hŒLThe “panelâ€� property of the follower points to the panel to be followed.”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´M*hj ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj® h]”hŒReturn”…”�”}”(hj° h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¬ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´M,hj ubhÎ)�”}”(hŒCtrue if we should be power sequenced with a panel; false otherwise.”h]”hŒCtrue if we should be power sequenced with a panel; false otherwise.”…”�”}”(hjÄ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´M-hj ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj)ìh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ#drm_panel_add_follower (C function)”Œc.drm_panel_add_follower”hNt”auh1j† hj)ìh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ]int drm_panel_add_follower (struct device *follower_dev, struct drm_panel_follower *follower)”h]”j¤ )�”}”(hŒ\int drm_panel_add_follower(struct device *follower_dev, struct drm_panel_follower *follower)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjó h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjï h²hh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.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Œdrm_panel_add_follower”h]”jÓ )�”}”(hŒdrm_panel_add_follower”h]”hŒdrm_panel_add_follower”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjï h²hh³j h´M;ubjÞ)�”}”(hŒB(struct device *follower_dev, struct drm_panel_follower *follower)”h]”(jä)�”}”(hŒstruct device *follower_dev”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj0 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Œdevice”h]”hŒdevice”…”�”}”(hjN h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjK ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jP Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj sbŒc.drm_panel_add_follower”†”asbuh1hhj, ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjn h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj, ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj| h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj, ubjÓ )�”}”(hŒ follower_dev”h]”hŒ follower_dev”…”�”}”(hj‰ h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj, ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj( ubjä)�”}”(hŒ#struct drm_panel_follower *follower”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Œdrm_panel_follower”h]”hŒdrm_panel_follower”…”�”}”(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ï ]”jj Œc.drm_panel_add_follower”†”asbuh1hhjž ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞ h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjž ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjì h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjž ubjÓ )�”}”(hŒfollower”h]”hŒfollower”…”�”}”(hjù h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjž ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj( ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjï h²hh³j h´M;ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ)Register something to follow panel state.”h]”hŒ)Register something to follow panel state.”…”�”}”(hj# h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.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²hhj)ìh³Nh´Nubj) )�”}”(hX‰**Parameters** ``struct device *follower_dev`` The 'struct device' for the follower. ``struct drm_panel_follower *follower`` The panel follower descriptor for the follower. **Description** A panel follower is called right after preparing/enabling the panel and right before unpreparing/disabling the panel. It's primary intention is to power on an associated touchscreen, though it could be used for any similar devices. Multiple devices are allowed the follow the same panel. If a follower is added to a panel that's already been prepared/enabled, the follower's prepared/enabled callback is called right away. The "panel" property of the follower points to the panel to be followed. **Return** 0 or an error code. Note that -ENODEV means that we detected that follower_dev is not actually following a panel. The caller may choose to ignore this return value if following a panel is optional.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjE h]”hŒ Parameters”…”�”}”(hjG h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjC ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´M?hj? ubjw )�”}”(hhh]”(j| )�”}”(hŒF``struct device *follower_dev`` The 'struct device' for the follower. ”h]”(j‚ )�”}”(hŒ``struct device *follower_dev``”h]”jˆ )�”}”(hjd h]”hŒstruct device *follower_dev”…”�”}”(hjf h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjb ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´M<hj^ ubjž )�”}”(hhh]”hÎ)�”}”(hŒ%The 'struct device' for the follower.”h]”hŒ)The ‘struct device’ for the follower.”…”�”}”(hj} h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jy h´M<hjz ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj^ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jy h´M<hj[ ubj| )�”}”(hŒX``struct drm_panel_follower *follower`` The panel follower descriptor for the follower. ”h]”(j‚ )�”}”(hŒ'``struct drm_panel_follower *follower``”h]”jˆ )�”}”(hj� h]”hŒ#struct drm_panel_follower *follower”…”�”}”(hjŸ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj› ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´M=hj— ubjž )�”}”(hhh]”hÎ)�”}”(hŒ/The panel follower descriptor for the follower.”h]”hŒ/The panel follower descriptor for the follower.”…”�”}”(hj¶ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j² h´M=hj³ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj— ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j² h´M=hj[ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj? ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjØ h]”hŒ Description”…”�”}”(hjÚ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÖ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´M?hj? ubhÎ)�”}”(hXA panel follower is called right after preparing/enabling the panel and right before unpreparing/disabling the panel. It's primary intention is to power on an associated touchscreen, though it could be used for any similar devices. Multiple devices are allowed the follow the same panel.”h]”hX!A panel follower is called right after preparing/enabling the panel and right before unpreparing/disabling the panel. It’s primary intention is to power on an associated touchscreen, though it could be used for any similar devices. Multiple devices are allowed the follow the same panel.”…”�”}”(hjî h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´M>hj? ubhÎ)�”}”(hŒ†If a follower is added to a panel that's already been prepared/enabled, the follower's prepared/enabled callback is called right away.”h]”hŒŠIf a follower is added to a panel that’s already been prepared/enabled, the follower’s prepared/enabled callback is called right away.”…”�”}”(hjý h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´MChj? ubhÎ)�”}”(hŒHThe "panel" property of the follower points to the panel to be followed.”h]”hŒLThe “panelâ€� property of the follower points to the panel to be followed.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´MFhj? ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj h]”hŒReturn”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´MHhj? ubhÎ)�”}”(hŒÅ0 or an error code. Note that -ENODEV means that we detected that follower_dev is not actually following a panel. The caller may choose to ignore this return value if following a panel is optional.”h]”hŒÅ0 or an error code. Note that -ENODEV means that we detected that follower_dev is not actually following a panel. The caller may choose to ignore this return value if following a panel is optional.”…”�”}”(hj3 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´MIhj? ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj)ìh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ&drm_panel_remove_follower (C function)”Œc.drm_panel_remove_follower”hNt”auh1j† hj)ìh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒDvoid drm_panel_remove_follower (struct drm_panel_follower *follower)”h]”j¤ )�”}”(hŒCvoid drm_panel_remove_follower(struct drm_panel_follower *follower)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjb h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj^ h²hh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´Mqubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjq h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj^ h²hh³jp h´MqubjÍ )�”}”(hŒdrm_panel_remove_follower”h]”jÓ )�”}”(hŒdrm_panel_remove_follower”h]”hŒdrm_panel_remove_follower”…”�”}”(hjƒ h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj^ h²hh³jp h´MqubjÞ)�”}”(hŒ%(struct drm_panel_follower *follower)”h]”jä)�”}”(hŒ#struct drm_panel_follower *follower”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Œdrm_panel_follower”h]”hŒdrm_panel_follower”…”�”}”(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%)�”}”jj… sbŒc.drm_panel_remove_follower”†”asbuh1hhj› ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝ h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj› ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjë h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj› ubjÓ )�”}”(hŒfollower”h]”hŒfollower”…”�”}”(hjø h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj› ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj— ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj^ h²hh³jp h´Mqubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjZ h²hh³jp h´Mqubah}”(h]”jU ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jp h´MqhjW h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ!Reverse drm_panel_add_follower().”h]”hŒ!Reverse drm_panel_add_follower().”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´Mqhjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjW h²hh³jp h´Mqubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j:j$ j:j% ‰j& ‰j' ‰uh1j˜ h²hhj)ìh³Nh´Nubj) )�”}”(hX@**Parameters** ``struct drm_panel_follower *follower`` The panel follower descriptor for the follower. **Description** Undo drm_panel_add_follower(). This includes calling the follower's unpreparing/disabling function if we're removed from a panel that's currently prepared/enabled. **Return** 0 or an error code.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjDh]”hŒ Parameters”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjBubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´Muhj>ubjw )�”}”(hhh]”j| )�”}”(hŒX``struct drm_panel_follower *follower`` The panel follower descriptor for the follower. ”h]”(j‚ )�”}”(hŒ'``struct drm_panel_follower *follower``”h]”jˆ )�”}”(hjch]”hŒ#struct drm_panel_follower *follower”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjaubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´Mrhj]ubjž )�”}”(hhh]”hÎ)�”}”(hŒ/The panel follower descriptor for the follower.”h]”hŒ/The panel follower descriptor for the follower.”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jxh´Mrhjyubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jxh´MrhjZubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj>ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjžh]”hŒ Description”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjœubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´Mthj>ubhÎ)�”}”(hŒ£Undo drm_panel_add_follower(). This includes calling the follower's unpreparing/disabling function if we're removed from a panel that's currently prepared/enabled.”h]”hŒ©Undo drm_panel_add_follower(). This includes calling the follower’s unpreparing/disabling function if we’re removed from a panel that’s currently prepared/enabled.”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´Mshj>ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjÅh]”hŒReturn”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÃubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´Mwhj>ubhÎ)�”}”(hŒ0 or an error code.”h]”hŒ0 or an error code.”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´Mxhj>ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj)ìh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ(devm_drm_panel_add_follower (C function)”Œc.devm_drm_panel_add_follower”hNt”auh1j† hj)ìh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒbint devm_drm_panel_add_follower (struct device *follower_dev, struct drm_panel_follower *follower)”h]”j¤ )�”}”(hŒaint devm_drm_panel_add_follower(struct device *follower_dev, struct drm_panel_follower *follower)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjh²hh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´Mœubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjh²hh³jh´MœubjÍ )�”}”(hŒdevm_drm_panel_add_follower”h]”jÓ )�”}”(hŒdevm_drm_panel_add_follower”h]”hŒdevm_drm_panel_add_follower”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj'ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjh²hh³jh´MœubjÞ)�”}”(hŒB(struct device *follower_dev, struct drm_panel_follower *follower)”h]”(jä)�”}”(hŒstruct device *follower_dev”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Œdevice”h]”hŒdevice”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjbubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jgŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj-sbŒc.devm_drm_panel_add_follower”†”asbuh1hhjCubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjCubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjCubjÓ )�”}”(hŒ follower_dev”h]”hŒ follower_dev”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjCubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj?ubjä)�”}”(hŒ#struct drm_panel_follower *follower”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Œdrm_panel_follower”h]”hŒdrm_panel_follower”…”�”}”(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.devm_drm_panel_add_follower”†”asbuh1hhjµubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjµubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjµubjÓ )�”}”(hŒfollower”h]”hŒfollower”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjµubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj?ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjh²hh³jh´Mœubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjh²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Œ(devm version of drm_panel_add_follower()”h]”hŒ(devm version of drm_panel_add_follower()”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´Mœhj7h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÿh²hh³jh´Mœubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jRj$ jRj% ‰j& ‰j' ‰uh1j˜ h²hhj)ìh³Nh´Nubj) )�”}”(hX1**Parameters** ``struct device *follower_dev`` The 'struct device' for the follower. ``struct drm_panel_follower *follower`` The panel follower descriptor for the follower. **Description** Handles calling drm_panel_remove_follower() using devm on the follower_dev. **Return** 0 or an error code.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj\h]”hŒ Parameters”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjZubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´M hjVubjw )�”}”(hhh]”(j| )�”}”(hŒF``struct device *follower_dev`` The 'struct device' for the follower. ”h]”(j‚ )�”}”(hŒ``struct device *follower_dev``”h]”jˆ )�”}”(hj{h]”hŒstruct device *follower_dev”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjyubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´M�hjuubjž )�”}”(hhh]”hÎ)�”}”(hŒ%The 'struct device' for the follower.”h]”hŒ)The ‘struct device’ for the follower.”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j�h´M�hj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjuubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j�h´M�hjrubj| )�”}”(hŒX``struct drm_panel_follower *follower`` The panel follower descriptor for the follower. ”h]”(j‚ )�”}”(hŒ'``struct drm_panel_follower *follower``”h]”jˆ )�”}”(hj´h]”hŒ#struct drm_panel_follower *follower”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´Mžhj®ubjž )�”}”(hhh]”hÎ)�”}”(hŒ/The panel follower descriptor for the follower.”h]”hŒ/The panel follower descriptor for the follower.”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÉh´MžhjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÉh´Mžhjrubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjVubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjïh]”hŒ Description”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjíubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´M hjVubhÎ)�”}”(hŒKHandles calling drm_panel_remove_follower() using devm on the follower_dev.”h]”hŒKHandles calling drm_panel_remove_follower() using devm on the follower_dev.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´MŸhjVubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjh]”hŒReturn”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´M¡hjVubhÎ)�”}”(hŒ0 or an error code.”h]”hŒ0 or an error code.”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´M¢hjVubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj)ìh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ#drm_panel_of_backlight (C function)”Œc.drm_panel_of_backlight”hNt”auh1j† hj)ìh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ4int drm_panel_of_backlight (struct drm_panel *panel)”h]”j¤ )�”}”(hŒ3int drm_panel_of_backlight(struct drm_panel *panel)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjWh²hh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´M´ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjWh²hh³jih´M´ubjÍ )�”}”(hŒdrm_panel_of_backlight”h]”jÓ )�”}”(hŒdrm_panel_of_backlight”h]”hŒdrm_panel_of_backlight”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjxubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjWh²hh³jih´M´ubjÞ)�”}”(hŒ(struct drm_panel *panel)”h]”jä)�”}”(hŒstruct drm_panel *panel”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Œ drm_panel”h]”hŒ drm_panel”…”�”}”(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%)�”}”jj~sbŒc.drm_panel_of_backlight”†”asbuh1hhj”ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj”ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj”ubjÓ )�”}”(hŒpanel”h]”hŒpanel”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj”ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj�ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjWh²hh³jih´M´ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjSh²hh³jih´M´ubah}”(h]”jNah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jih´M´hjPh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ'use backlight device node for backlight”h]”hŒ'use backlight device node for backlight”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´M´hjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjPh²hh³jih´M´ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j3j$ j3j% ‰j& ‰j' ‰uh1j˜ h²hhj)ìh³Nh´Nubj) )�”}”(hXÉ**Parameters** ``struct drm_panel *panel`` DRM panel **Description** Use this function to enable backlight handling if your panel uses device tree and has a backlight phandle. When the panel is enabled backlight will be enabled after a successful call to :c:type:`drm_panel_funcs.enable\(\) ` When the panel is disabled backlight will be disabled before the call to :c:type:`drm_panel_funcs.disable\(\) `. A typical implementation for a panel driver supporting device tree will call this function at probe time. Backlight will then be handled transparently without requiring any intervention from the driver. **Return** 0 on success or a negative error code on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj=h]”hŒ Parameters”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´M¸hj7ubjw )�”}”(hhh]”j| )�”}”(hŒ&``struct drm_panel *panel`` DRM panel ”h]”(j‚ )�”}”(hŒ``struct drm_panel *panel``”h]”jˆ )�”}”(hj\h]”hŒstruct drm_panel *panel”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjZubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´MµhjVubjž )�”}”(hhh]”hÎ)�”}”(hŒ DRM panel”h]”hŒ DRM panel”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jqh´Mµhjrubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjVubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jqh´MµhjSubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj7ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj—h]”hŒ Description”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj•ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´M·hj7ubhÎ)�”}”(hŒjUse this function to enable backlight handling if your panel uses device tree and has a backlight phandle.”h]”hŒjUse this function to enable backlight handling if your panel uses device tree and has a backlight phandle.”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´M¶hj7ubhÎ)�”}”(hŒ…When the panel is enabled backlight will be enabled after a successful call to :c:type:`drm_panel_funcs.enable\(\) `”h]”(hŒOWhen the panel is enabled backlight will be enabled after a successful call to ”…”�”}”(hj¼h²hh³Nh´Nubh)�”}”(hŒ6:c:type:`drm_panel_funcs.enable\(\) `”h]”jˆ )�”}”(hjÆh]”hŒdrm_panel_funcs.enable()”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÄubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_panel_funcs”uh1hh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´M¹hj¼ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jãh´M¹hj7ubhÎ)�”}”(hŒ�When the panel is disabled backlight will be disabled before the call to :c:type:`drm_panel_funcs.disable\(\) `.”h]”(hŒIWhen the panel is disabled backlight will be disabled before the call to ”…”�”}”(hjêh²hh³Nh´Nubh)�”}”(hŒ7:c:type:`drm_panel_funcs.disable\(\) `”h]”jˆ )�”}”(hjôh]”hŒdrm_panel_funcs.disable()”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjòubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_panel_funcs”uh1hh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´M¼hjêubhŒ.”…”�”}”(hjêh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jh´M¼hj7ubhÎ)�”}”(hŒÊA typical implementation for a panel driver supporting device tree will call this function at probe time. Backlight will then be handled transparently without requiring any intervention from the driver.”h]”hŒÊA typical implementation for a panel driver supporting device tree will call this function at probe time. Backlight will then be handled transparently without requiring any intervention from the driver.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´M¿hj7ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj-h]”hŒReturn”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´MÃhj7ubhÎ)�”}”(hŒ10 on success or a negative error code on failure.”h]”hŒ10 on success or a negative error code on failure.”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ`/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:226: ./drivers/gpu/drm/drm_panel.c”h´MÄhj7ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj)ìh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ,drm_get_panel_orientation_quirk (C function)”Œ!c.drm_get_panel_orientation_quirk”hNt”auh1j† hj)ìh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ;int drm_get_panel_orientation_quirk (int width, int height)”h]”j¤ )�”}”(hŒ:int drm_get_panel_orientation_quirk(int width, int height)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjnh²hh³Œs/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:229: ./drivers/gpu/drm/drm_panel_orientation_quirks.c”h´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjnh²hh³j€h´MubjÍ )�”}”(hŒdrm_get_panel_orientation_quirk”h]”jÓ )�”}”(hŒdrm_get_panel_orientation_quirk”h]”hŒdrm_get_panel_orientation_quirk”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj�ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjnh²hh³j€h´MubjÞ)�”}”(hŒ(int width, int height)”h]”(jä)�”}”(hŒ int width”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(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Œwidth”h]”hŒwidth”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj«ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj§ubjä)�”}”(hŒ int height”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(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Œheight”h]”hŒheight”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjàubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj§ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjnh²hh³j€h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjjh²hh³j€h´Mubah}”(h]”jeah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j€h´Mhjgh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ"Check for panel orientation quirks”h]”hŒ"Check for panel orientation quirks”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œs/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:229: ./drivers/gpu/drm/drm_panel_orientation_quirks.c”h´Mhj'h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjgh²hh³j€h´Mubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jBj$ jBj% ‰j& ‰j' ‰uh1j˜ h²hhj)ìh³Nh´Nubj) )�”}”(hX **Parameters** ``int width`` width in pixels of the panel ``int height`` height in pixels of the panel **Description** This function checks for platform specific (e.g. DMI based) quirks providing info on panel_orientation for systems where this cannot be probed from the hard-/firm-ware. To avoid false-positive this function takes the panel resolution as argument and checks that against the resolution expected by the quirk-table entry. Note this function is also used outside of the drm-subsys, by for example the efifb code. Because of this this function gets compiled into its own kernel-module when built as a module. **Return** A DRM_MODE_PANEL_ORIENTATION_* value if there is a quirk for this system, or DRM_MODE_PANEL_ORIENTATION_UNKNOWN if there is no quirk.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjLh]”hŒ Parameters”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjJubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œs/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:229: ./drivers/gpu/drm/drm_panel_orientation_quirks.c”h´M hjFubjw )�”}”(hhh]”(j| )�”}”(hŒ+``int width`` width in pixels of the panel ”h]”(j‚ )�”}”(hŒ ``int width``”h]”jˆ )�”}”(hjkh]”hŒ int width”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjiubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œs/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:229: ./drivers/gpu/drm/drm_panel_orientation_quirks.c”h´Mhjeubjž )�”}”(hhh]”hÎ)�”}”(hŒwidth in pixels of the panel”h]”hŒwidth in pixels of the panel”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j€h´Mhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjeubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j€h´Mhjbubj| )�”}”(hŒ-``int height`` height in pixels of the panel ”h]”(j‚ )�”}”(•hŒ``int height``”h]”jˆ )�”}”(hj¤h]”hŒ int height”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œs/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:229: ./drivers/gpu/drm/drm_panel_orientation_quirks.c”h´Mhjžubjž )�”}”(hhh]”hÎ)�”}”(hŒheight in pixels of the panel”h]”hŒheight in pixels of the panel”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¹h´Mhjºubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjžubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¹h´Mhjbubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjFubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjßh]”hŒ Description”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÝubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œs/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:229: ./drivers/gpu/drm/drm_panel_orientation_quirks.c”h´M hjFubhÎ)�”}”(hX?This function checks for platform specific (e.g. DMI based) quirks providing info on panel_orientation for systems where this cannot be probed from the hard-/firm-ware. To avoid false-positive this function takes the panel resolution as argument and checks that against the resolution expected by the quirk-table entry.”h]”hX?This function checks for platform specific (e.g. DMI based) quirks providing info on panel_orientation for systems where this cannot be probed from the hard-/firm-ware. To avoid false-positive this function takes the panel resolution as argument and checks that against the resolution expected by the quirk-table entry.”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œs/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:229: ./drivers/gpu/drm/drm_panel_orientation_quirks.c”h´MhjFubhÎ)�”}”(hŒ¸Note this function is also used outside of the drm-subsys, by for example the efifb code. Because of this this function gets compiled into its own kernel-module when built as a module.”h]”hŒ¸Note this function is also used outside of the drm-subsys, by for example the efifb code. Because of this this function gets compiled into its own kernel-module when built as a module.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œs/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:229: ./drivers/gpu/drm/drm_panel_orientation_quirks.c”h´M%hjFubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjh]”hŒReturn”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œs/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:229: ./drivers/gpu/drm/drm_panel_orientation_quirks.c”h´M)hjFubhÎ)�”}”(hŒ…A DRM_MODE_PANEL_ORIENTATION_* value if there is a quirk for this system, or DRM_MODE_PANEL_ORIENTATION_UNKNOWN if there is no quirk.”h]”hŒ…A DRM_MODE_PANEL_ORIENTATION_* value if there is a quirk for this system, or DRM_MODE_PANEL_ORIENTATION_UNKNOWN if there is no quirk.”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œs/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:229: ./drivers/gpu/drm/drm_panel_orientation_quirks.c”h´M*hjFubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj)ìh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ*drm_get_panel_backlight_quirk (C function)”Œc.drm_get_panel_backlight_quirk”hNt”auh1j† hj)ìh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒdconst struct drm_panel_backlight_quirk * drm_get_panel_backlight_quirk (const struct drm_edid *edid)”h]”j¤ )�”}”(hŒbconst struct drm_panel_backlight_quirk *drm_get_panel_backlight_quirk(const struct drm_edid *edid)”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjVh²hh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:232: ./drivers/gpu/drm/drm_panel_backlight_quirks.c”h´K�ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjVh²hh³jgh´K�ubjª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjVh²hh³jgh´K�ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjVh²hh³jgh´K�ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_panel_backlight_quirk”h]”hŒdrm_panel_backlight_quirk”…”�”}”(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Œdrm_get_panel_backlight_quirk”sbŒc.drm_get_panel_backlight_quirk”†”asbuh1hhjVh²hh³jgh´K�ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjVh²hh³jgh´K�ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjVh²hh³jgh´K�ubjÍ )�”}”(hŒdrm_get_panel_backlight_quirk”h]”jÓ )�”}”(hj²h]”hŒdrm_get_panel_backlight_quirk”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÐubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjVh²hh³jgh´K�ubjÞ)�”}”(hŒ(const struct drm_edid *edid)”h]”jä)�”}”(hŒconst struct drm_edid *edid”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjëubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjëubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_edid”h]”hŒdrm_edid”…”�”}”(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.drm_get_panel_backlight_quirk”†”asbuh1hhjëubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjëubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjëubjÓ )�”}”(hŒedid”h]”hŒedid”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjëubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjçubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjVh²hh³jgh´K�ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjRh²hh³jgh´K�ubah}”(h]”jMah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jgh´K�hjOh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ Get backlight quirks for a panel”h]”hŒ Get backlight quirks for a panel”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:232: ./drivers/gpu/drm/drm_panel_backlight_quirks.c”h´K�hjˆh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjOh²hh³jgh´K�ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j£j$ j£j% ‰j& ‰j' ‰uh1j˜ h²hhj)ìh³Nh´Nubj) )�”}”(hX”**Parameters** ``const struct drm_edid *edid`` EDID of the panel to check **Description** This function checks for platform specific (e.g. DMI based) quirks providing info on the minimum backlight brightness for systems where this cannot be probed correctly from the hard-/firm-ware and other sources. **Return** a drm_panel_backlight_quirk struct if a quirk was found, otherwise an error pointer.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj­h]”hŒ Parameters”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:232: ./drivers/gpu/drm/drm_panel_backlight_quirks.c”h´K…hj§ubjw )�”}”(hhh]”j| )�”}”(hŒ;``const struct drm_edid *edid`` EDID of the panel to check ”h]”(j‚ )�”}”(hŒ``const struct drm_edid *edid``”h]”jˆ )�”}”(hjÌh]”hŒconst struct drm_edid *edid”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:232: ./drivers/gpu/drm/drm_panel_backlight_quirks.c”h´K‚hjÆubjž )�”}”(hhh]”hÎ)�”}”(hŒEDID of the panel to check”h]”hŒEDID of the panel to check”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jáh´K‚hjâubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÆubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jáh´K‚hjÃubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj§ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjh]”hŒ Description”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:232: ./drivers/gpu/drm/drm_panel_backlight_quirks.c”h´K„hj§ubhÎ)�”}”(hŒÓThis function checks for platform specific (e.g. DMI based) quirks providing info on the minimum backlight brightness for systems where this cannot be probed correctly from the hard-/firm-ware and other sources.”h]”hŒÓThis function checks for platform specific (e.g. DMI based) quirks providing info on the minimum backlight brightness for systems where this cannot be probed correctly from the hard-/firm-ware and other sources.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:232: ./drivers/gpu/drm/drm_panel_backlight_quirks.c”h´Kƒhj§ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj.h]”hŒReturn”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj,ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:232: ./drivers/gpu/drm/drm_panel_backlight_quirks.c”h´K‡hj§ubhÎ)�”}”(hŒTa drm_panel_backlight_quirk struct if a quirk was found, otherwise an error pointer.”h]”hŒTa drm_panel_backlight_quirk struct if a quirk was found, otherwise an error pointer.”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œq/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:232: ./drivers/gpu/drm/drm_panel_backlight_quirks.c”h´Kˆhj§ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj)ìh²hh³Nh´Nubeh}”(h]”(jÞjìeh ]”h"]”(Œpanel helper reference”Œdrm_panel_helper”eh$]”h&]”uh1hµhh·h²hh³hÌh´KÚj^X}”j_j ìsj`X}”jìj ìsubh¶)�”}”(hhh]”(h»)�”}”(hŒ#Panel Self Refresh Helper Reference”h]”hŒ#Panel Self Refresh Helper Reference”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÊjúuh1hºhjdh²hh³hÌh´KìubhÎ)�”}”(hXThis helper library provides an easy way for drivers to leverage the atomic framework to implement panel self refresh (SR) support. Drivers are responsible for initializing and cleaning up the SR helpers on load/unload (see :c:type:`drm_self_refresh_helper_init`/:c:type:`drm_self_refresh_helper_cleanup`). The connector is responsible for setting :c:type:`drm_connector_state.self_refresh_aware ` to true at runtime if it is SR-aware (meaning it knows how to initiate self refresh on the panel).”h]”(hŒàThis helper library provides an easy way for drivers to leverage the atomic framework to implement panel self refresh (SR) support. Drivers are responsible for initializing and cleaning up the SR helpers on load/unload (see ”…”�”}”(hjuh²hh³Nh´Nubh)�”}”(hŒ&:c:type:`drm_self_refresh_helper_init`”h]”jˆ )�”}”(hjh]”hŒdrm_self_refresh_helper_init”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj}ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_self_refresh_helper_init”uh1hh³Œn/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:238: ./drivers/gpu/drm/drm_self_refresh_helper.c”h´KhjuubhŒ/”…”�”}”(hjuh²hh³Nh´Nubh)�”}”(hŒ):c:type:`drm_self_refresh_helper_cleanup`”h]”jˆ )�”}”(hj£h]”hŒdrm_self_refresh_helper_cleanup”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj¡ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_self_refresh_helper_cleanup”uh1hh³jœh´KhjuubhŒ,). The connector is responsible for setting ”…”�”}”(hjuh²hh³Nh´Nubh)�”}”(hŒF:c:type:`drm_connector_state.self_refresh_aware `”h]”jˆ )�”}”(hjÆh]”hŒ&drm_connector_state.self_refresh_aware”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÄubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_connector_state”uh1hh³jœh´KhjuubhŒc to true at runtime if it is SR-aware (meaning it knows how to initiate self refresh on the panel).”…”�”}”(hjuh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jœh´Khjdh²hubhÎ)�”}”(hX”Once a crtc has enabled SR using :c:type:`drm_self_refresh_helper_init`, the helpers will monitor activity and call back into the driver to enable/disable SR as appropriate. The best way to think about this is that it's a DPMS on/off request with :c:type:`drm_crtc_state.self_refresh_active ` set in crtc state that tells you to disable/enable SR on the panel instead of power-cycling it.”h]”(hŒ!Once a crtc has enabled SR using ”…”�”}”(hjíh²hh³Nh´Nubh)�”}”(hŒ&:c:type:`drm_self_refresh_helper_init`”h]”jˆ )�”}”(hj÷h]”hŒdrm_self_refresh_helper_init”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjõubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_self_refresh_helper_init”uh1hh³Œn/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:238: ./drivers/gpu/drm/drm_self_refresh_helper.c”h´K!hjíubhŒ², the helpers will monitor activity and call back into the driver to enable/disable SR as appropriate. The best way to think about this is that it’s a DPMS on/off request with ”…”�”}”(hjíh²hh³Nh´Nubh)�”}”(hŒ=:c:type:`drm_crtc_state.self_refresh_active `”h]”jˆ )�”}”(hjh]”hŒ"drm_crtc_state.self_refresh_active”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_crtc_state”uh1hh³jh´K!hjíubhŒ` set in crtc state that tells you to disable/enable SR on the panel instead of power-cycling it.”…”�”}”(hjíh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jh´K!hjdh²hubhÎ)�”}”(hX9During SR, drivers may choose to fully disable their crtc/encoder/bridge hardware (in which case no driver changes are necessary), or they can inspect :c:type:`drm_crtc_state.self_refresh_active ` if they want to enter low power mode without full disable (in case full disable/enable is too slow).”h]”(hŒ—During SR, drivers may choose to fully disable their crtc/encoder/bridge hardware (in which case no driver changes are necessary), or they can inspect ”…”�”}”(hjBh²hh³Nh´Nubh)�”}”(hŒ=:c:type:`drm_crtc_state.self_refresh_active `”h]”jˆ )�”}”(hjLh]”hŒ"drm_crtc_state.self_refresh_active”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjJubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_crtc_state”uh1hh³Œn/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:238: ./drivers/gpu/drm/drm_self_refresh_helper.c”h´K'hjBubhŒe if they want to enter low power mode without full disable (in case full disable/enable is too slow).”…”�”}”(hjBh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jih´K'hjdh²hubhÎ)�”}”(hŒÙSR will be deactivated if there are any atomic updates affecting the pipe that is in SR mode. If a crtc is driving multiple connectors, all connectors must be SR aware and all will enter/exit SR mode at the same time.”h]”hŒÙSR will be deactivated if there are any atomic updates affecting the pipe that is in SR mode. If a crtc is driving multiple connectors, all connectors must be SR aware and all will enter/exit SR mode at the same time.”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œn/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:238: ./drivers/gpu/drm/drm_self_refresh_helper.c”h´K,hjdh²hubhÎ)�”}”(hŒéIf the crtc and connector are SR aware, but the panel connected does not support it (or is otherwise unable to enter SR), the driver should fail atomic_check when :c:type:`drm_crtc_state.self_refresh_active ` is true.”h]”(hŒ£If the crtc and connector are SR aware, but the panel connected does not support it (or is otherwise unable to enter SR), the driver should fail atomic_check when ”…”�”}”(hjƒh²hh³Nh´Nubh)�”}”(hŒ=:c:type:`drm_crtc_state.self_refresh_active `”h]”jˆ )�”}”(hj�h]”hŒ"drm_crtc_state.self_refresh_active”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj‹ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_crtc_state”uh1hh³Œn/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:238: ./drivers/gpu/drm/drm_self_refresh_helper.c”h´K0hjƒubhŒ is true.”…”�”}”(hjƒh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jªh´K0hjdh²hubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ5drm_self_refresh_helper_update_avg_times (C function)”Œ*c.drm_self_refresh_helper_update_avg_times”hNt”auh1j† hjdh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ�void drm_self_refresh_helper_update_avg_times (struct drm_atomic_commit *state, unsigned int commit_time_ms, unsigned int new_self_refresh_mask)”h]”j¤ )�”}”(hŒ�void drm_self_refresh_helper_update_avg_times(struct drm_atomic_commit *state, unsigned int commit_time_ms, unsigned int new_self_refresh_mask)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjÊh²hh³Œn/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:241: ./drivers/gpu/drm/drm_self_refresh_helper.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Œ(drm_self_refresh_helper_update_avg_times”h]”jÓ )�”}”(hŒ(drm_self_refresh_helper_update_avg_times”h]”hŒ(drm_self_refresh_helper_update_avg_times”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjëubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÊh²hh³jÜh´K†ubjÞ)�”}”(hŒb(struct drm_atomic_commit *state, unsigned int commit_time_ms, unsigned int new_self_refresh_mask)”h]”(jä)�”}”(hŒstruct drm_atomic_commit *state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_atomic_commit”h]”hŒdrm_atomic_commit”…”�”}”(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%)�”}”jjñsbŒ*c.drm_self_refresh_helper_update_avg_times”†”asbuh1hhjubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjubjä)�”}”(hŒunsigned int commit_time_ms”h]”(j¦)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjyubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjyubj¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjyubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjyubjÓ )�”}”(hŒcommit_time_ms”h]”hŒcommit_time_ms”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjyubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjubjä)�”}”(hŒ"unsigned int new_self_refresh_mask”h]”(j¦)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(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Œint”h]”hŒint”…”�”}”(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Œnew_self_refresh_mask”h]”hŒnew_self_refresh_mask”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÊubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjÊh²hh³jÜh´K†ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ!Updates a crtc's SR time averages”h]”hŒ#Updates a crtc’s SR time averages”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œn/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:241: ./drivers/gpu/drm/drm_self_refresh_helper.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# jHj$ jHj% ‰j& ‰j' ‰uh1j˜ h²hhjdh³Nh´Nubj) )�”}”(hXk**Parameters** ``struct drm_atomic_commit *state`` the state which has just been applied to hardware ``unsigned int commit_time_ms`` the amount of time in ms that this commit took to complete ``unsigned int new_self_refresh_mask`` bitmask of crtc's that have self_refresh_active in new state **Description** Called after :c:type:`drm_mode_config_funcs.atomic_commit_tail `, this function will update the average entry/exit self refresh times on self refresh transitions. These averages will be used when calculating how long to delay before entering self refresh mode after activity.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjRh]”hŒ Parameters”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjPubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œn/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:241: ./drivers/gpu/drm/drm_self_refresh_helper.c”h´KŠhjLubjw )�”}”(hhh]”(j| )�”}”(hŒV``struct drm_atomic_commit *state`` the state which has just been applied to hardware ”h]”(j‚ )�”}”(hŒ#``struct drm_atomic_commit *state``”h]”jˆ )�”}”(hjqh]”hŒstruct drm_atomic_commit *state”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjoubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œn/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:241: ./drivers/gpu/drm/drm_self_refresh_helper.c”h´K‡hjkubjž )�”}”(hhh]”hÎ)�”}”(hŒ1the state which has just been applied to hardware”h]”hŒ1the state which has just been applied to hardware”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j†h´K‡hj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjkubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j†h´K‡hjhubj| )�”}”(hŒ[``unsigned int commit_time_ms`` the amount of time in ms that this commit took to complete ”h]”(j‚ )�”}”(hŒ``unsigned int commit_time_ms``”h]”jˆ )�”}”(hjªh]”hŒunsigned int commit_time_ms”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œn/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:241: ./drivers/gpu/drm/drm_self_refresh_helper.c”h´Kˆhj¤ubjž )�”}”(hhh]”hÎ)�”}”(hŒ:the amount of time in ms that this commit took to complete”h]”hŒ:the amount of time in ms that this commit took to complete”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¿h´KˆhjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¿h´Kˆhjhubj| )�”}”(hŒd``unsigned int new_self_refresh_mask`` bitmask of crtc's that have self_refresh_active in new state ”h]”(j‚ )�”}”(hŒ&``unsigned int new_self_refresh_mask``”h]”jˆ )�”}”(hjãh]”hŒ"unsigned int new_self_refresh_mask”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjáubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œn/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:241: ./drivers/gpu/drm/drm_self_refresh_helper.c”h´KŠhjÝubjž )�”}”(hhh]”hÎ)�”}”(hŒbitmask of crtc’s that have self_refresh_active in new state”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œn/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:241: ./drivers/gpu/drm/drm_self_refresh_helper.c”h´K‰hjùubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÝubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jøh´KŠhjhubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjLubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjh]”hŒ Description”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œn/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:241: ./drivers/gpu/drm/drm_self_refresh_helper.c”h´KŒhjLubhÎ)�”}”(hX*Called after :c:type:`drm_mode_config_funcs.atomic_commit_tail `, this function will update the average entry/exit self refresh times on self refresh transitions. These averages will be used when calculating how long to delay before entering self refresh mode after activity.”h]”(hŒ Called after ”…”�”}”(hj5h²hh³Nh´Nubh)�”}”(hŒJ:c:type:`drm_mode_config_funcs.atomic_commit_tail `”h]”jˆ )�”}”(hj?h]”hŒ(drm_mode_config_funcs.atomic_commit_tail”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj=ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_mode_config_funcs”uh1hh³Œn/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:241: ./drivers/gpu/drm/drm_self_refresh_helper.c”h´K‹hj5ubhŒÓ, this function will update the average entry/exit self refresh times on self refresh transitions. These averages will be used when calculating how long to delay before entering self refresh mode after activity.”…”�”}”(hj5h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j\h´K‹hjLubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjdh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ0drm_self_refresh_helper_alter_state (C function)”Œ%c.drm_self_refresh_helper_alter_state”hNt”auh1j† hjdh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒJvoid drm_self_refresh_helper_alter_state (struct drm_atomic_commit *state)”h]”j¤ )�”}”(hŒIvoid drm_self_refresh_helper_alter_state(struct drm_atomic_commit *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjƒh²hh³Œn/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:241: ./drivers/gpu/drm/drm_self_refresh_helper.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Œ#drm_self_refresh_helper_alter_state”h]”jÓ )�”}”(hŒ#drm_self_refresh_helper_alter_state”h]”hŒ#drm_self_refresh_helper_alter_state”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¤ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjƒh²hh³j•h´K°ubjÞ)�”}”(hŒ!(struct drm_atomic_commit *state)”h]”jä)�”}”(hŒstruct drm_atomic_commit *state”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Œdrm_atomic_commit”h]”hŒdrm_atomic_commit”…”�”}”(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%)�”}”jjªsbŒ%c.drm_self_refresh_helper_alter_state”†”asbuh1hhjÀubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÀubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÀubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÀubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¼ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjƒh²hh³j•h´K°ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjh²hh³j•h´K°ubah}”(h]”jzah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j•h´K°hj|h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ#Alters the atomic state for SR exit”h]”hŒ#Alters the atomic state for SR exit”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œn/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:241: ./drivers/gpu/drm/drm_self_refresh_helper.c”h´K°hjDh²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²hhjdh³Nh´Nubj) )�”}”(hX**Parameters** ``struct drm_atomic_commit *state`` the state currently being checked **Description** Called at the end of atomic check. This function checks the state for flags incompatible with self refresh exit and changes them. This is a bit disingenuous since userspace is expecting one thing and we're giving it another. However in order to keep self refresh entirely hidden from userspace, this is required. At the end, we queue up the self refresh entry work so we can enter PSR after the desired delay.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjih]”hŒ Parameters”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjgubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œn/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:241: ./drivers/gpu/drm/drm_self_refresh_helper.c”h´K´hjcubjw )�”}”(hhh]”j| )�”}”(hŒF``struct drm_atomic_commit *state`` the state currently being checked ”h]”(j‚ )�”}”(hŒ#``struct drm_atomic_commit *state``”h]”jˆ )�”}”(hjˆh]”hŒstruct drm_atomic_commit *state”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œn/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:241: ./drivers/gpu/drm/drm_self_refresh_helper.c”h´K±hj‚ubjž )�”}”(hhh]”hÎ)�”}”(hŒ!the state currently being checked”h]”hŒ!the state currently being checked”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j�h´K±hjžubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j�h´K±hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjcubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjÃh]”hŒ Description”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÁubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œn/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:241: ./drivers/gpu/drm/drm_self_refresh_helper.c”h´K³hjcubhÎ)�”}”(hX8Called at the end of atomic check. This function checks the state for flags incompatible with self refresh exit and changes them. This is a bit disingenuous since userspace is expecting one thing and we're giving it another. However in order to keep self refresh entirely hidden from userspace, this is required.”h]”hX:Called at the end of atomic check. This function checks the state for flags incompatible with self refresh exit and changes them. This is a bit disingenuous since userspace is expecting one thing and we’re giving it another. However in order to keep self refresh entirely hidden from userspace, this is required.”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œn/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:241: ./drivers/gpu/drm/drm_self_refresh_helper.c”h´K²hjcubhÎ)�”}”(hŒ`At the end, we queue up the self refresh entry work so we can enter PSR after the desired delay.”h]”hŒ`At the end, we queue up the self refresh entry work so we can enter PSR after the desired delay.”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œn/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:241: ./drivers/gpu/drm/drm_self_refresh_helper.c”h´K¸hjcubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjdh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ)drm_self_refresh_helper_init (C function)”Œc.drm_self_refresh_helper_init”hNt”auh1j† hjdh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ8int drm_self_refresh_helper_init (struct drm_crtc *crtc)”h]”j¤ )�”}”(hŒ7int drm_self_refresh_helper_init(struct drm_crtc *crtc)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjh²hh³Œn/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:241: ./drivers/gpu/drm/drm_self_refresh_helper.c”h´Käubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjh²hh³j%h´KäubjÍ )�”}”(hŒdrm_self_refresh_helper_init”h]”jÓ )�”}”(hŒdrm_self_refresh_helper_init”h]”hŒdrm_self_refresh_helper_init”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj4ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjh²hh³j%h´KäubjÞ)�”}”(hŒ(struct drm_crtc *crtc)”h]”jä)�”}”(hŒstruct drm_crtc *crtc”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjPubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjPubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_crtc”h]”hŒdrm_crtc”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjoubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jtŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj:sbŒc.drm_self_refresh_helper_init”†”asbuh1hhjPubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjPubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjPubjÓ )�”}”(hŒcrtc”h]”hŒcrtc”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjPubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjLubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjh²hh³j%h´Käubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjh²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Œ+Initializes self refresh helpers for a crtc”h]”hŒ+Initializes self refresh helpers for a crtc”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œn/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:241: ./drivers/gpu/drm/drm_self_refresh_helper.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²hhjdh³Nh´Nubj) )�”}”(hŒ¥**Parameters** ``struct drm_crtc *crtc`` the crtc which supports self refresh supported displays **Description** Returns zero if successful or -errno on failure”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjùh]”hŒ Parameters”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œn/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:241: ./drivers/gpu/drm/drm_self_refresh_helper.c”h´Kèhjóubjw )�”}”(hhh]”j| )�”}”(hŒR``struct drm_crtc *crtc`` the crtc which supports self refresh supported displays ”h]”(j‚ )�”}”(hŒ``struct drm_crtc *crtc``”h]”jˆ )�”}”(hjh]”hŒstruct drm_crtc *crtc”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œn/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:241: ./drivers/gpu/drm/drm_self_refresh_helper.c”h´Kåhjubjž )�”}”(hhh]”hÎ)�”}”(hŒ7the crtc which supports self refresh supported displays”h]”hŒ7the crtc which supports self refresh supported displays”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j-h´Kåhj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j-h´Kåhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjóubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjSh]”hŒ Description”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjQubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œn/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:241: ./drivers/gpu/drm/drm_self_refresh_helper.c”h´KçhjóubhÎ)�”}”(hŒ/Returns zero if successful or -errno on failure”h]”hŒ/Returns zero if successful or -errno on failure”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œn/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:241: ./drivers/gpu/drm/drm_self_refresh_helper.c”h´Kæhjóubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjdh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ,drm_self_refresh_helper_cleanup (C function)”Œ!c.drm_self_refresh_helper_cleanup”hNt”auh1j† hjdh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒSRM should be presented in the name of "display_hdcp_srm.bin".”h]”hŒBSRM should be presented in the name of “display_hdcp_srm.binâ€�.”…”�”}”(hj±4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œn/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:262: ./drivers/gpu/drm/display/drm_hdcp_helper.c”h´Mhj¬3ubhÎ)�”}”(hXÅFormat of the SRM table, that userspace needs to write into the binary file, is defined at: 1. Renewability chapter on 55th page of HDCP 1.4 specification https://www.digital-cp.com/sites/default/files/specifications/HDCP``20Specification````20Rev1_4_Secure``.pdf 2. Renewability chapter on 63rd page of HDCP 2.2 specification https://www.digital-cp.com/sites/default/files/specifications/HDCP``20on````20HDMI````20Specification````20Rev2_2_Final1``.pdf”•h]”(hŒ›Format of the SRM table, that userspace needs to write into the binary file, is defined at: 1. Renewability chapter on 55th page of HDCP 1.4 specification ”…”�”}”(hjÀ4h²hh³Nh´Nubjn)�”}”(hŒ=https://www.digital-cp.com/sites/default/files/specifications”h]”hŒ=https://www.digital-cp.com/sites/default/files/specifications”…”�”}”(hjÈ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”jÊ4uh1jmhjÀ4ubhŒo/HDCP``20Specification````20Rev1_4_Secure``.pdf 2. Renewability chapter on 63rd page of HDCP 2.2 specification ”…”�”}”(hjÀ4h²hh³Nh´Nubjn)�”}”(hŒ=https://www.digital-cp.com/sites/default/files/specifications”h]”hŒ=https://www.digital-cp.com/sites/default/files/specifications”…”�”}”(hjÛ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”jÝ4uh1jmhjÀ4ubhŒA/HDCP``20on````20HDMI````20Specification````20Rev2_2_Final1``.pdf”…”�”}”(hjÀ4h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œn/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:262: ./drivers/gpu/drm/display/drm_hdcp_helper.c”h´Mhj¬3ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj÷4h]”hŒReturn”…”�”}”(hjù4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjõ4ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œn/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:262: ./drivers/gpu/drm/display/drm_hdcp_helper.c”h´Mhj¬3ubhÎ)�”}”(hŒECount of the revoked KSVs or -ve error number in case of the failure.”h]”hŒECount of the revoked KSVs or -ve error number in case of the failure.”…”�”}”(hj 5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œn/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:262: ./drivers/gpu/drm/display/drm_hdcp_helper.c”h´Mhj¬3ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj 2h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ=drm_connector_attach_content_protection_property (C function)”Œ2c.drm_connector_attach_content_protection_property”hNt”auh1j† hj 2h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒnint drm_connector_attach_content_protection_property (struct drm_connector *connector, bool hdcp_content_type)”h]”j¤ )�”}”(hŒmint drm_connector_attach_content_protection_property(struct drm_connector *connector, bool hdcp_content_type)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj<5h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj85h²hh³Œn/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:262: ./drivers/gpu/drm/display/drm_hdcp_helper.c”h´MFubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjK5h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj85h²hh³jJ5h´MFubjÍ )�”}”(hŒ0drm_connector_attach_content_protection_property”h]”jÓ )�”}”(hŒ0drm_connector_attach_content_protection_property”h]”hŒ0drm_connector_attach_content_protection_property”…”�”}”(hj]5h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjY5ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj85h²hh³jJ5h´MFubjÞ)�”}”(hŒ9(struct drm_connector *connector, bool hdcp_content_type)”h]”(jä)�”}”(hŒstruct drm_connector *connector”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjy5h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hju5ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†5h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hju5ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_connector”h]”hŒ drm_connector”…”�”}”(hj—5h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj”5ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j™5Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj_5sbŒ2c.drm_connector_attach_content_protection_property”†”asbuh1hhju5ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·5h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hju5ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÅ5h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hju5ubjÓ )�”}”(hŒ connector”h]”hŒ connector”…”�”}”(hjÒ5h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hju5ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjq5ubjä)�”}”(hŒbool hdcp_content_type”h]”(j¦)�”}”(hj£Ih]”hŒbool”…”�”}”(hjë5h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjç5ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjø5h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjç5ubjÓ )�”}”(hŒhdcp_content_type”h]”hŒhdcp_content_type”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjç5ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjq5ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj85h²hh³jJ5h´MFubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj45h²hh³jJ5h´MFubah}”(h]”j/5ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jJ5h´MFhj15h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ"attach content protection property”h]”hŒ"attach content protection property”…”�”}”(hj06h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œn/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:262: ./drivers/gpu/drm/display/drm_hdcp_helper.c”h´MFhj-6h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj15h²hh³jJ5h´MFubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jH6j$ jH6j% ‰j& ‰j' ‰uh1j˜ h²hhj 2h³Nh´Nubj) )�”}”(hXû**Parameters** ``struct drm_connector *connector`` connector to attach CP property on. ``bool hdcp_content_type`` is HDCP Content Type property needed for connector **Description** This is used to add support for content protection on select connectors. Content Protection is intentionally vague to allow for different underlying technologies, however it is most implemented by HDCP. When hdcp_content_type is true enum property called HDCP Content Type is created (if it is not already) and attached to the connector. This property is used for sending the protected content's stream type from userspace to kernel on selected connectors. Protected content provider will decide their type of their content and declare the same to kernel. Content type will be used during the HDCP 2.2 authentication. Content type will be set to :c:type:`drm_connector_state.hdcp_content_type `. The content protection will be set to :c:type:`drm_connector_state.content_protection ` When kernel triggered content protection state change like DESIRED->ENABLED and ENABLED->DESIRED, will use drm_hdcp_update_content_protection() to update the content protection state of a connector. **Return** Zero on success, negative errno on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjR6h]”hŒ Parameters”…”�”}”(hjT6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjP6ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œn/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:262: ./drivers/gpu/drm/display/drm_hdcp_helper.c”h´MJhjL6ubjw )�”}”(hhh]”(j| )�”}”(hŒH``struct drm_connector *connector`` connector to attach CP property on. ”h]”(j‚ )�”}”(hŒ#``struct drm_connector *connector``”h]”jˆ )�”}”(hjq6h]”hŒstruct drm_connector *connector”…”�”}”(hjs6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjo6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œn/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:262: ./drivers/gpu/drm/display/drm_hdcp_helper.c”h´MIhjk6ubjž )�”}”(hhh]”hÎ)�”}”(hŒ#connector to attach CP property on.”h]”hŒ#connector to attach CP property on.”…”�”}”(hjŠ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j†6h´MIhj‡6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjk6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j†6h´MIhjh6ubj| )�”}”(hŒN``bool hdcp_content_type`` is HDCP Content Type property needed for connector ”h]”(j‚ )�”}”(hŒ``bool hdcp_content_type``”h]”jˆ )�”}”(hjª6h]”hŒbool hdcp_content_type”…”�”}”(hj¬6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¨6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œn/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:262: ./drivers/gpu/drm/display/drm_hdcp_helper.c”h´MJhj¤6ubjž )�”}”(hhh]”hÎ)�”}”(hŒ2is HDCP Content Type property needed for connector”h]”hŒ2is HDCP Content Type property needed for connector”…”�”}”(hjÃ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¿6h´MJhjÀ6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¤6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¿6h´MJhjh6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjL6ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjå6h]”hŒ Description”…”�”}”(hjç6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjã6ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œn/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:262: ./drivers/gpu/drm/display/drm_hdcp_helper.c”h´MLhjL6ubhÎ)�”}”(hŒÊThis is used to add support for content protection on select connectors. Content Protection is intentionally vague to allow for different underlying technologies, however it is most implemented by HDCP.”h]”hŒÊThis is used to add support for content protection on select connectors. Content Protection is intentionally vague to allow for different underlying technologies, however it is most implemented by HDCP.”…”�”}”(hjû6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œn/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:262: ./drivers/gpu/drm/display/drm_hdcp_helper.c”h´MKhjL6ubhÎ)�”}”(hŒ†When hdcp_content_type is true enum property called HDCP Content Type is created (if it is not already) and attached to the connector.”h]”hŒ†When hdcp_content_type is true enum property called HDCP Content Type is created (if it is not already) and attached to the connector.”…”�”}”(hj 7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œn/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:262: ./drivers/gpu/drm/display/drm_hdcp_helper.c”h´MOhjL6ubhÎ)�”}”(hŒÙThis property is used for sending the protected content's stream type from userspace to kernel on selected connectors. Protected content provider will decide their type of their content and declare the same to kernel.”h]”hŒÛThis property is used for sending the protected content’s stream type from userspace to kernel on selected connectors. Protected content provider will decide their type of their content and declare the same to kernel.”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œn/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:262: ./drivers/gpu/drm/display/drm_hdcp_helper.c”h´MRhjL6ubhÎ)�”}”(hŒ Content type will be used during the HDCP 2.2 authentication. Content type will be set to :c:type:`drm_connector_state.hdcp_content_type `.”h]”(hŒZContent type will be used during the HDCP 2.2 authentication. Content type will be set to ”…”�”}”(hj(7h²hh³Nh´Nubh)�”}”(hŒE:c:type:`drm_connector_state.hdcp_content_type `”h]”jˆ )�”}”(hj27h]”hŒ%drm_connector_state.hdcp_content_type”…”�”}”(hj47h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj07ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_connector_state”uh1hh³Œn/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:262: ./drivers/gpu/drm/display/drm_hdcp_helper.c”h´MVhj(7ubhŒ.”…”�”}”(hj(7h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jO7h´MVhjL6ubhÎ)�”}”(hŒlThe content protection will be set to :c:type:`drm_connector_state.content_protection `”h]”(hŒ&The content protection will be set to ”…”�”}”(hjZ7h²hh³Nh´Nubh)�”}”(hŒF:c:type:`drm_connector_state.content_protection `”h]”jˆ )�”}”(hjd7h]”hŒ&drm_connector_state.content_protection”…”�”}”(hjf7h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjb7ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_connector_state”uh1hh³Œn/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:262: ./drivers/gpu/drm/display/drm_hdcp_helper.c”h´MYhjZ7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j�7h´MYhjL6ubhÎ)�”}”(hŒÆWhen kernel triggered content protection state change like DESIRED->ENABLED and ENABLED->DESIRED, will use drm_hdcp_update_content_protection() to update the content protection state of a connector.”h]”hŒÆWhen kernel triggered content protection state change like DESIRED->ENABLED and ENABLED->DESIRED, will use drm_hdcp_update_content_protection() to update the content protection state of a connector.”…”�”}”(hjˆ7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œn/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:262: ./drivers/gpu/drm/display/drm_hdcp_helper.c”h´M[hjL6ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj™7h]”hŒReturn”…”�”}”(hj›7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj—7ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œn/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:262: ./drivers/gpu/drm/display/drm_hdcp_helper.c”h´M_hjL6ubhÎ)�”}”(hŒ+Zero on success, negative errno on failure.”h]”hŒ+Zero on success, negative errno on failure.”…”�”}”(hj¯7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œn/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:262: ./drivers/gpu/drm/display/drm_hdcp_helper.c”h´M`hjL6ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj 2h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ/drm_hdcp_update_content_protection (C function)”Œ$c.drm_hdcp_update_content_protection”hNt”auh1j† hj 2h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒRvoid drm_hdcp_update_content_protection (struct drm_connector *connector, u64 val)”h]”j¤ )�”}”(hŒQvoid drm_hdcp_update_content_protection(struct drm_connector *connector, u64 val)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÞ7h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjÚ7h²hh³Œn/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:262: ./drivers/gpu/drm/display/drm_hdcp_helper.c”h´MŠubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjí7h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÚ7h²hh³jì7h´MŠubjÍ )�”}”(hŒ"drm_hdcp_update_content_protection”h]”jÓ )�”}”(hŒ"drm_hdcp_update_content_protection”h]”hŒ"drm_hdcp_update_content_protection”…”�”}”(hjÿ7h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjû7ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÚ7h²hh³jì7h´MŠubjÞ)�”}”(hŒ*(struct drm_connector *connector, u64 val)”h]”(jä)�”}”(hŒstruct drm_connector *connector”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj8ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(8h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj8ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_connector”h]”hŒ drm_connector”…”�”}”(hj98h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj68ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j;8Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj8sbŒ$c.drm_hdcp_update_content_protection”†”asbuh1hhj8ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjY8h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj8ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjg8h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj8ubjÓ )�”}”(hŒ connector”h]”hŒ connector”…”�”}”(hjt8h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj8ubjä)�”}”(hŒu64 val”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu64”h]”hŒu64”…”�”}”(hj�8h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj�8ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j’8Œmodname”NŒ classname”Njé jì )�”}”jï ]”jU8Œ$c.drm_hdcp_update_content_protection”†”asbuh1hhj‰8ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®8h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj‰8ubjÓ )�”}”(hŒval”h]”hŒval”…”�”}”(hj¼8h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj‰8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj8ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjÚ7h²hh³jì7h´MŠubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjÖ7h²hh³jì7h´MŠubah}”(h]”jÑ7ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jì7h´MŠhjÓ7h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ3Updates the content protection state of a connector”h]”hŒ3Updates the content protection state of a connector”…”�”}”(hjæ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œn/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:262: ./drivers/gpu/drm/display/drm_hdcp_helper.c”h´MŠhjã8h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÓ7h²hh³jì7h´MŠubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jþ8j$ jþ8j% ‰j& ‰j' ‰uh1j˜ h²hhj 2h³Nh´Nubj) )�”}”(hXz**Parameters** ``struct drm_connector *connector`` drm_connector on which content protection state needs an update ``u64 val`` New state of the content protection property **Description** This function can be used by display drivers, to update the kernel triggered content protection state changes of a drm_connector such as DESIRED->ENABLED and ENABLED->DESIRED. No uevent for DESIRED->UNDESIRED or ENABLED->UNDESIRED, as userspace is triggering such state change and kernel performs it without fail.This function update the new state of the property into the connector's state and generate an uevent to notify the userspace.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj9h]”hŒ Parameters”…”�”}”(hj 9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œn/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:262: ./drivers/gpu/drm/display/drm_hdcp_helper.c”h´MŽhj9ubjw )�”}”(hhh]”(j| )�”}”(hŒd``struct drm_connector *connector`` drm_connector on which content protection state needs an update ”h]”(j‚ )�”}”(hŒ#``struct drm_connector *connector``”h]”jˆ )�”}”(hj'9h]”hŒstruct drm_connector *connector”…”�”}”(hj)9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj%9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œn/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:262: ./drivers/gpu/drm/display/drm_hdcp_helper.c”h´M�hj!9ubjž )�”}”(hhh]”hÎ)�”}”(hŒ?drm_connector on which content protection state needs an update”h]”hŒ?drm_connector on which content protection state needs an update”…”�”}”(hj@9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j<9h´M�hj=9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj!9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j<9h´M�hj9ubj| )�”}”(hŒ9``u64 val`` New state of the content protection property ”h]”(j‚ )�”}”(hŒ ``u64 val``”h]”jˆ )�”}”(hj`9h]”hŒu64 val”…”�”}”(hjb9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj^9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œn/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:262: ./drivers/gpu/drm/display/drm_hdcp_helper.c”h´MŽhjZ9ubjž )�”}”(hhh]”hÎ)�”}”(hŒ,New state of the content protection property”h]”hŒ,New state of the content protection property”…”�”}”(hjy9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³ju9h´MŽhjv9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjZ9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³ju9h´MŽhj9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj9ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj›9h]”hŒ Description”…”�”}”(hj�9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj™9ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œn/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:262: ./drivers/gpu/drm/display/drm_hdcp_helper.c”h´M�hj9ubhÎ)�”}”(hX¶This function can be used by display drivers, to update the kernel triggered content protection state changes of a drm_connector such as DESIRED->ENABLED and ENABLED->DESIRED. No uevent for DESIRED->UNDESIRED or ENABLED->UNDESIRED, as userspace is triggering such state change and kernel performs it without fail.This function update the new state of the property into the connector's state and generate an uevent to notify the userspace.”h]”hX¸This function can be used by display drivers, to update the kernel triggered content protection state changes of a drm_connector such as DESIRED->ENABLED and ENABLED->DESIRED. No uevent for DESIRED->UNDESIRED or ENABLED->UNDESIRED, as userspace is triggering such state change and kernel performs it without fail.This function update the new state of the property into the connector’s state and generate an uevent to notify the userspace.”…”�”}”(hj±9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œn/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:262: ./drivers/gpu/drm/display/drm_hdcp_helper.c”h´M�hj9ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj 2h²hh³Nh´Nubeh}”(h]”jÞah ]”h"]”Œhdcp helper functions reference”ah$]”h&]”uh1hµhh·h²hh³hÌh´Mubh¶)�”}”(hhh]”(h»)�”}”(hŒ'Display Port Helper Functions Reference”h]”hŒ'Display Port Helper Functions Reference”…”�”}”(hjÑ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÊjúuh1hºhjÎ9h²hh³hÌh´M ubhÎ)�”}”(hŒñThese functions contain some common logic and helpers at various abstraction levels to deal with Display Port sink devices and related things like DP aux channel transfers, EDID reading over DP aux channels, decoding certain DPCD blocks, ...”h]”hŒñThese functions contain some common logic and helpers at various abstraction levels to deal with Display Port sink devices and related things like DP aux channel transfers, EDID reading over DP aux channels, decoding certain DPCD blocks, ...”…”�”}”(hjß9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:268: ./drivers/gpu/drm/display/drm_dp_helper.c”h´KDhjÎ9h²hubhÎ)�”}”(hŒÉThe DisplayPort AUX channel is an abstraction to allow generic, driver- independent access to AUX functionality. Drivers can take advantage of this by filling in the fields of the drm_dp_aux structure.”h]”hŒÉThe DisplayPort AUX channel is an abstraction to allow generic, driver- independent access to AUX functionality. Drivers can take advantage of this by filling in the fields of the drm_dp_aux structure.”…”�”}”(hjî9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:268: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MChjÎ9h²hubhÎ)�”}”(hŒÆTransactions are described using a hardware-independent drm_dp_aux_msg structure, which is passed into a driver's .transfer() implementation. Both native and I2C-over-AUX transactions are supported.”h]”hŒÈTransactions are described using a hardware-independent drm_dp_aux_msg structure, which is passed into a driver’s .transfer() implementation. Both native and I2C-over-AUX transactions are supported.”…”�”}”(hjý9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:268: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MGhjÎ9h²hubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdp_sdp_header (C struct)”Œc.dp_sdp_header”hNt”auh1j† hjÎ9h²hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ dp_sdp_header”h]”j¤ )�”}”(hŒstruct dp_sdp_header”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj&:h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj":h²hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´Kubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4:h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj":h²hh³j3:h´KubjÍ )�”}”(hŒ dp_sdp_header”h]”jÓ )�”}”(hj :h]”hŒ dp_sdp_header”…”�”}”(hjF:h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjB:ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj":h²hh³j3:h´Kubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj:h²hh³j3:h´Kubah}”(h]”j:ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j3:h´Khj:h²hubj )�”}”(hhh]”hÎ)�”}”(hŒDP secondary data packet header”h]”hŒDP secondary data packet header”…”�”}”(hjh:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´MÎhje:h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj:h²hh³j3:h´Kubeh}”(h]”h ]”(j Œstruct”eh"]”h$]”h&]”j" j j# j€:j$ j€:j% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³j:h´Nubj) )�”}”(hX0**Definition**:: struct dp_sdp_header { u8 HB0; u8 HB1; u8 HB2; u8 HB3; }; **Members** ``HB0`` Secondary Data Packet ID ``HB1`` Secondary Data Packet Type ``HB2`` Secondary Data Packet Specific header, Byte 0 ``HB3`` Secondary Data packet Specific header, Byte 1”h]”(hÎ)�”}”(hŒ**Definition**::”h]”(j3 )�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjŒ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjˆ:ubhŒ:”…”�”}”(hjˆ:h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´MÒhj„:ubjN )�”}”(hŒIstruct dp_sdp_header { u8 HB0; u8 HB1; u8 HB2; u8 HB3; };”h]”hŒIstruct dp_sdp_header { u8 HB0; u8 HB1; u8 HB2; u8 HB3; };”…”�”}”hj¥:sbah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jM h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´MÔhj„:ubhÎ)�”}”(hŒ **Members**”h]”j3 )�”}”(hj¶:h]”hŒMembers”…”�”}”(hj¸:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj´:ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´MÛhj„:ubjw )�”}”(hhh]”(j| )�”}”(hŒ!``HB0`` Secondary Data Packet ID ”h]”(j‚ )�”}”(hŒ``HB0``”h]”jˆ )�”}”(hjÕ:h]”hŒHB0”…”�”}”(hj×:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÓ:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´MÐhjÏ:ubjž )�”}”(hhh]”hÎ)�”}”(hŒSecondary Data Packet ID”h]”hŒSecondary Data Packet ID”…”�”}”(hjî:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jê:h´MÐhjë:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÏ:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jê:h´MÐhjÌ:ubj| )�”}”(hŒ#``HB1`` Secondary Data Packet Type ”h]”(j‚ )�”}”(hŒ``HB1``”h]”jˆ )�”}”(hj;h]”hŒHB1”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj ;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´MÑhj;ubjž )�”}”(hhh]”hÎ)�”}”(hŒSecondary Data Packet Type”h]”hŒSecondary Data Packet Type”…”�”}”(hj';h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j#;h´MÑhj$;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j#;h´MÑhjÌ:ubj| )�”}”(hŒ6``HB2`` Secondary Data Packet Specific header, Byte 0 ”h]”(j‚ )�”}”(hŒ``HB2``”h]”jˆ )�”}”(hjG;h]”hŒHB2”…”�”}”(hjI;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjE;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´MÒhjA;ubjž )�”}”(hhh]”hÎ)�”}”(hŒ-Secondary Data Packet Specific header, Byte 0”h]”hŒ-Secondary Data Packet Specific header, Byte 0”…”�”}”(hj`;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j\;h´MÒhj];ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjA;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j\;h´MÒhjÌ:ubj| )�”}”(hŒ5``HB3`` Secondary Data packet Specific header, Byte 1”h]”(j‚ )�”}”(hŒ``HB3``”h]”jˆ )�”}”(hj€;h]”hŒHB3”…”�”}”(hj‚;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj~;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´MÒhjz;ubjž )�”}”(hhh]”hÎ)�”}”(hŒ-Secondary Data packet Specific header, Byte 1”h]”hŒ-Secondary Data packet Specific header, Byte 1”…”�”}”(hj™;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´MÓhj–;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjz;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j•;h´MÒhjÌ:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj„:ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³j:h´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdp_sdp (C struct)”Œc.dp_sdp”hNt”auh1j† hjÎ9h²hh³j:h´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒdp_sdp”h]”j¤ )�”}”(hŒ struct dp_sdp”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjÚ;h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjÖ;h²hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”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Œdp_sdp”h]”jÓ )�”}”(hjÔ;h]”hŒdp_sdp”…”�”}”(hjú;h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjö;ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÖ;h²hh³jç;h´MÙubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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ŒDP secondary data packet”h]”hŒDP secondary data packet”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´Màhj<h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÏ;h²hh³jç;h´MÙubeh}”(h]”h ]”(j Œstruct”eh"]”h$]”h&]”j" j j# j4<j$ j4<j% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³j:h´Nubj) )�”}”(hXz**Definition**:: struct dp_sdp { struct dp_sdp_header sdp_header; u8 db[32]; }; **Members** ``sdp_header`` DP secondary data packet header ``db`` DP secondaray data packet data blocks VSC SDP Payload for PSR db[0]: Stereo Interface db[1]: 0 - PSR State; 1 - Update RFB; 2 - CRC Valid db[2]: CRC value bits 7:0 of the R or Cr component db[3]: CRC value bits 15:8 of the R or Cr component db[4]: CRC value bits 7:0 of the G or Y component db[5]: CRC value bits 15:8 of the G or Y component db[6]: CRC value bits 7:0 of the B or Cb component db[7]: CRC value bits 15:8 of the B or Cb component db[8] - db[31]: Reserved VSC SDP Payload for Pixel Encoding/Colorimetry Format db[0] - db[15]: Reserved db[16]: Pixel Encoding and Colorimetry Formats db[17]: Dynamic Range and Component Bit Depth db[18]: Content Type db[19] - db[31]: Reserved”h]”(hÎ)�”}”(hŒ**Definition**::”h]”(j3 )�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj@<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj<<ubhŒ:”…”�”}”(hj<<h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´Mähj8<ubjN )�”}”(hŒFstruct dp_sdp { struct dp_sdp_header sdp_header; u8 db[32]; };”h]”hŒFstruct dp_sdp { struct dp_sdp_header sdp_header; u8 db[32]; };”…”�”}”hjY<sbah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jM h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´Mæhj8<ubhÎ)�”}”(hŒ **Members**”h]”j3 )�”}”(hjj<h]”hŒMembers”…”�”}”(hjl<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjh<ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´Mëhj8<ubjw )�”}”(hhh]”(j| )�”}”(hŒ/``sdp_header`` DP secondary data packet header ”h]”(j‚ )�”}”(hŒ``sdp_header``”h]”jˆ )�”}”(hj‰<h]”hŒ sdp_header”…”�”}”(hj‹<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj‡<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´Mâhjƒ<ubjž )�”}”(hhh]”hÎ)�”}”(hŒDP secondary data packet header”h]”hŒDP secondary data packet header”…”�”}”(hj¢<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jž<h´MâhjŸ<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjƒ<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jž<h´Mâhj€<ubj| )�”}”(hX·``db`` DP secondaray data packet data blocks VSC SDP Payload for PSR db[0]: Stereo Interface db[1]: 0 - PSR State; 1 - Update RFB; 2 - CRC Valid db[2]: CRC value bits 7:0 of the R or Cr component db[3]: CRC value bits 15:8 of the R or Cr component db[4]: CRC value bits 7:0 of the G or Y component db[5]: CRC value bits 15:8 of the G or Y component db[6]: CRC value bits 7:0 of the B or Cb component db[7]: CRC value bits 15:8 of the B or Cb component db[8] - db[31]: Reserved VSC SDP Payload for Pixel Encoding/Colorimetry Format db[0] - db[15]: Reserved db[16]: Pixel Encoding and Colorimetry Formats db[17]: Dynamic Range and Component Bit Depth db[18]: Content Type db[19] - db[31]: Reserved”h]”(j‚ )�”}”(hŒ``db``”h]”jˆ )�”}”(hjÂ<h]”hŒdb”…”�”}”(hjÄ<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÀ<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´Mòhj¼<ubjž )�”}”(hhh]”hÎ)�”}”(hX°DP secondaray data packet data blocks VSC SDP Payload for PSR db[0]: Stereo Interface db[1]: 0 - PSR State; 1 - Update RFB; 2 - CRC Valid db[2]: CRC value bits 7:0 of the R or Cr component db[3]: CRC value bits 15:8 of the R or Cr component db[4]: CRC value bits 7:0 of the G or Y component db[5]: CRC value bits 15:8 of the G or Y component db[6]: CRC value bits 7:0 of the B or Cb component db[7]: CRC value bits 15:8 of the B or Cb component db[8] - db[31]: Reserved VSC SDP Payload for Pixel Encoding/Colorimetry Format db[0] - db[15]: Reserved db[16]: Pixel Encoding and Colorimetry Formats db[17]: Dynamic Range and Component Bit Depth db[18]: Content Type db[19] - db[31]: Reserved”h]”hX°DP secondaray data packet data blocks VSC SDP Payload for PSR db[0]: Stereo Interface db[1]: 0 - PSR State; 1 - Update RFB; 2 - CRC Valid db[2]: CRC value bits 7:0 of the R or Cr component db[3]: CRC value bits 15:8 of the R or Cr component db[4]: CRC value bits 7:0 of the G or Y component db[5]: CRC value bits 15:8 of the G or Y component db[6]: CRC value bits 7:0 of the B or Cb component db[7]: CRC value bits 15:8 of the B or Cb component db[8] - db[31]: Reserved VSC SDP Payload for Pixel Encoding/Colorimetry Format db[0] - db[15]: Reserved db[16]: Pixel Encoding and Colorimetry Formats db[17]: Dynamic Range and Component Bit Depth db[18]: Content Type db[19] - db[31]: Reserved”…”�”}”(hjÛ<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´MãhjØ<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¼<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j×<h´Mòhj€<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj8<ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³j:h´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdp_pixelformat (C enum)”Œc.dp_pixelformat”hNt”auh1j† hjÎ9h²hh³j:h´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒdp_pixelformat”h]”j¤ )�”}”(hŒenum dp_pixelformat”h]”(jª )�”}”(hjÂ7h]”hŒenum”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj=h²hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”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Œdp_pixelformat”h]”jÓ )�”}”(hj=h]”hŒdp_pixelformat”…”�”}”(hj<=h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj8=ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj=h²hh³j)=h´Mùubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œdrm DP Pixel encoding formats”h]”hŒdrm DP Pixel encoding formats”…”�”}”(hj^=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´Mþhj[=h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj=h²hh³j)=h´Mùubeh}”(h]”h ]”(j Œenum”eh"]”h$]”h&]”j" j j# jv=j$ jv=j% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³j:h´Nubj) )�”}”(hXª**Constants** ``DP_PIXELFORMAT_RGB`` RGB pixel encoding format ``DP_PIXELFORMAT_YUV444`` YCbCr 4:4:4 pixel encoding format ``DP_PIXELFORMAT_YUV422`` YCbCr 4:2:2 pixel encoding format ``DP_PIXELFORMAT_YUV420`` YCbCr 4:2:0 pixel encoding format ``DP_PIXELFORMAT_Y_ONLY`` Y Only pixel encoding format ``DP_PIXELFORMAT_RAW`` RAW pixel encoding format ``DP_PIXELFORMAT_RESERVED`` Reserved pixel encoding format”h]”(hÎ)�”}”(hŒ **Constants**”h]”j3 )�”}”(hj€=h]”hŒ Constants”…”�”}”(hj‚=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj~=ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´Mhjz=ubjw )�”}”(hhh]”(j| )�”}”(hŒ1``DP_PIXELFORMAT_RGB`` RGB pixel encoding format ”h]”(j‚ )�”}”(hŒ``DP_PIXELFORMAT_RGB``”h]”jˆ )�”}”(hjŸ=h]”hŒDP_PIXELFORMAT_RGB”…”�”}”(hj¡=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj�=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´Mhj™=ubjž )�”}”(hhh]”hÎ)�”}”(hŒRGB pixel encoding format”h]”hŒRGB pixel encoding format”…”�”}”(hj¸=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j´=h´Mhjµ=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj™=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j´=h´Mhj–=ubj| )�”}”(hŒ<``DP_PIXELFORMAT_YUV444`` YCbCr 4:4:4 pixel encoding format ”h]”(j‚ )�”}”(hŒ``DP_PIXELFORMAT_YUV444``”h]”jˆ )�”}”(hjØ=h]”hŒDP_PIXELFORMAT_YUV444”…”�”}”(hjÚ=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÖ=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´MhjÒ=ubjž )�”}”(hhh]”hÎ)�”}”(hŒ!YCbCr 4:4:4 pixel encoding format”h]”hŒ!YCbCr 4:4:4 pixel encoding format”…”�”}”(hjñ=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jí=h´Mhjî=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÒ=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jí=h´Mhj–=ubj| )�”}”(hŒ<``DP_PIXELFORMAT_YUV422`` YCbCr 4:2:2 pixel encoding format ”h]”(j‚ )�”}”(hŒ``DP_PIXELFORMAT_YUV422``”h]”jˆ )�”}”(hj>h]”hŒDP_PIXELFORMAT_YUV422”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´M hj >ubjž )�”}”(hhh]”hÎ)�”}”(hŒ!YCbCr 4:2:2 pixel encoding format”h]”hŒ!YCbCr 4:2:2 pixel encoding format”…”�”}”(hj*>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j&>h´M hj'>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj >ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j&>h´M hj–=ubj| )�”}”(hŒ<``DP_PIXELFORMAT_YUV420`` YCbCr 4:2:0 pixel encoding format ”h]”(j‚ )�”}”(hŒ``DP_PIXELFORMAT_YUV420``”h]”jˆ )�”}”(hjJ>h]”hŒDP_PIXELFORMAT_YUV420”…”�”}”(hjL>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjH>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´MhjD>ubjž )�”}”(hhh]”hÎ)�”}”(hŒ!YCbCr 4:2:0 pixel encoding format”h]”hŒ!YCbCr 4:2:0 pixel encoding format”…”�”}”(hjc>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j_>h´Mhj`>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjD>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j_>h´Mhj–=ubj| )�”}”(hŒ7``DP_PIXELFORMAT_Y_ONLY`` Y Only pixel encoding format ”h]”(j‚ )�”}”(hŒ``DP_PIXELFORMAT_Y_ONLY``”h]”jˆ )�”}”(hjƒ>h]”hŒDP_PIXELFORMAT_Y_ONLY”…”�”}”(hj…>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj�>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´Mhj}>ubjž )�”}”(hhh]”hÎ)�”}”(hŒY Only pixel encoding format”h]”hŒY Only pixel encoding format”…”�”}”(hjœ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j˜>h´Mhj™>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj}>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j˜>h´Mhj–=ubj| )�”}”(hŒ1``DP_PIXELFORMAT_RAW`` RAW pixel encoding format ”h]”(j‚ )�”}”(hŒ``DP_PIXELFORMAT_RAW``”h]”jˆ )�”}”(hj¼>h]”hŒDP_PIXELFORMAT_RAW”…”�”}”(hj¾>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjº>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´Mhj¶>ubjž )�”}”(hhh]”hÎ)�”}”(hŒRAW pixel encoding format”h]”hŒRAW pixel encoding format”…”�”}”(hjÕ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÑ>h´MhjÒ>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¶>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÑ>h´Mhj–=ubj| )�”}”(hŒ:``DP_PIXELFORMAT_RESERVED`` Reserved pixel encoding format”h]”(j‚ )�”}”(hŒ``DP_PIXELFORMAT_RESERVED``”h]”jˆ )�”}”(hjõ>h]”hŒDP_PIXELFORMAT_RESERVED”…”�”}”(hj÷>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjó>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´Mhjï>ubjž )�”}”(hhh]”hÎ)�”}”(hŒReserved pixel encoding format”h]”hŒReserved pixel encoding format”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´Mhj ?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjï>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j ?h´Mhj–=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjz=ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³j:h´NubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj8?h]”hŒ Description”…”�”}”(hj:?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj6?ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´MhjÎ9h²hubhÎ)�”}”(hŒ�This enum is used to indicate DP VSC SDP Pixel encoding formats. It is based on DP 1.4 spec [Table 2-117: VSC SDP Payload for DB16 through DB18]”h]”hŒ�This enum is used to indicate DP VSC SDP Pixel encoding formats. It is based on DP 1.4 spec [Table 2-117: VSC SDP Payload for DB16 through DB18]”…”�”}”(hjN?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´MÿhjÎ9h²hubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdp_colorimetry (C enum)”Œc.dp_colorimetry”hNt”auh1j† hjÎ9h²hh³j:h´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒdp_colorimetry”h]”j¤ )�”}”(hŒenum dp_colorimetry”h]”(jª )�”}”(hjÂ7h]”hŒenum”…”�”}”(hjv?h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjr?h²hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„?h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjr?h²hh³jƒ?h´MubjÍ )�”}”(hŒdp_colorimetry”h]”jÓ )�”}”(hjp?h]”hŒdp_colorimetry”…”�”}”(hj–?h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj’?ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjr?h²hh³jƒ?h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjn?h²hh³jƒ?h´Mubah}”(h]”ji?ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jƒ?h´Mhjk?h²hubj )�”}”(hhh]”hÎ)�”}”(hŒdrm DP Colorimetry formats”h]”hŒdrm DP Colorimetry formats”…”�”}”(hj¸?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´Mhjµ?h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjk?h²hh³jƒ?h´Mubeh}”(h]”h ]”(j Œenum”eh"]”h$]”h&]”j" j j# jÐ?j$ jÐ?j% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³j:h´Nubj) )�”}”(hX **Constants** ``DP_COLORIMETRY_DEFAULT`` sRGB (IEC 61966-2-1) or ITU-R BT.601 colorimetry format ``DP_COLORIMETRY_RGB_WIDE_FIXED`` RGB wide gamut fixed point colorimetry format ``DP_COLORIMETRY_BT709_YCC`` ITU-R BT.709 colorimetry format ``DP_COLORIMETRY_RGB_WIDE_FLOAT`` RGB wide gamut floating point (scRGB (IEC 61966-2-2)) colorimetry format ``DP_COLORIMETRY_XVYCC_601`` xvYCC601 colorimetry format ``DP_COLORIMETRY_OPRGB`` OpRGB colorimetry format ``DP_COLORIMETRY_XVYCC_709`` xvYCC709 colorimetry format ``DP_COLORIMETRY_DCI_P3_RGB`` DCI-P3 (SMPTE RP 431-2) colorimetry format ``DP_COLORIMETRY_SYCC_601`` sYCC601 colorimetry format ``DP_COLORIMETRY_RGB_CUSTOM`` RGB Custom Color Profile colorimetry format ``DP_COLORIMETRY_OPYCC_601`` opYCC601 colorimetry format ``DP_COLORIMETRY_BT2020_RGB`` ITU-R BT.2020 R' G' B' colorimetry format ``DP_COLORIMETRY_BT2020_CYCC`` ITU-R BT.2020 Y'c C'bc C'rc colorimetry format ``DP_COLORIMETRY_BT2020_YCC`` ITU-R BT.2020 Y' C'b C'r colorimetry format”h]”(hÎ)�”}”(hŒ **Constants**”h]”j3 )�”}”(hjÚ?h]”hŒ Constants”…”�”}”(hjÜ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjØ?ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´MhjÔ?ubjw )�”}”(hhh]”(j| )�”}”(hŒS``DP_COLORIMETRY_DEFAULT`` sRGB (IEC 61966-2-1) or ITU-R BT.601 colorimetry format ”h]”(j‚ )�”}”(hŒ``DP_COLORIMETRY_DEFAULT``”h]”jˆ )�”}”(hjù?h]”hŒDP_COLORIMETRY_DEFAULT”…”�”}”(hjû?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj÷?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´Mhjó?ubjž )�”}”(hhh]”hÎ)�”}”(hŒ7sRGB (IEC 61966-2-1) or ITU-R BT.601 colorimetry format”h]”hŒ7sRGB (IEC 61966-2-1) or ITU-R BT.601 colorimetry format”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´Mhj@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjó?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j@h´Mhjð?ubj| )�”}”(hŒP``DP_COLORIMETRY_RGB_WIDE_FIXED`` RGB wide gamut fixed point colorimetry format ”h]”(j‚ )�”}”(hŒ!``DP_COLORIMETRY_RGB_WIDE_FIXED``”h]”jˆ )�”}”(hj3@h]”hŒDP_COLORIMETRY_RGB_WIDE_FIXED”…”�”}”(hj5@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj1@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´M"hj-@ubjž )�”}”(hhh]”hÎ)�”}”(hŒ-RGB wide gamut fixed point colorimetry format”h]”hŒ-RGB wide gamut fixed point colorimetry format”…”�”}”(hjL@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jH@h´M"hjI@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj-@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jH@h´M"hjð?ubj| )�”}”(hŒ=``DP_COLORIMETRY_BT709_YCC`` ITU-R BT.709 colorimetry format ”h]”(j‚ )�”}”(hŒ``DP_COLORIMETRY_BT709_YCC``”h]”jˆ )�”}”(hjl@h]”hŒDP_COLORIMETRY_BT709_YCC”…”�”}”(hjn@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjj@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´M%hjf@ubjž )�”}”(hhh]”hÎ)�”}”(hŒITU-R BT.709 colorimetry format”h]”hŒITU-R BT.709 colorimetry format”…”�”}”(hj…@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j�@h´M%hj‚@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjf@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j�@h´M%hjð?ubj| )�”}”(hŒk``DP_COLORIMETRY_RGB_WIDE_FLOAT`` RGB wide gamut floating point (scRGB (IEC 61966-2-2)) colorimetry format ”h]”(j‚ )�”}”(hŒ!``DP_COLORIMETRY_RGB_WIDE_FLOAT``”h]”jˆ )�”}”(hj¥@h]”hŒDP_COLORIMETRY_RGB_WIDE_FLOAT”…”�”}”(hj§@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj£@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´M)hjŸ@ubjž )�”}”(hhh]”hÎ)�”}”(hŒHRGB wide gamut floating point (scRGB (IEC 61966-2-2)) colorimetry format”h]”hŒHRGB wide gamut floating point (scRGB (IEC 61966-2-2)) colorimetry format”…”�”}”(hj¾@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´M(hj»@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjŸ@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jº@h´M)hjð?ubj| )�”}”(hŒ9``DP_COLORIMETRY_XVYCC_601`` xvYCC601 colorimetry format ”h]”(j‚ )�”}”(hŒ``DP_COLORIMETRY_XVYCC_601``”h]”jˆ )�”}”(hjß@h]”hŒDP_COLORIMETRY_XVYCC_601”…”�”}”(hjá@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÝ@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´M,hjÙ@ubjž )�”}”(hhh]”hÎ)�”}”(hŒxvYCC601 colorimetry format”h]”hŒxvYCC601 colorimetry format”…”�”}”(hjø@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jô@h´M,hjõ@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÙ@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jô@h´M,hjð?ubj| )�”}”(hŒ2``DP_COLORIMETRY_OPRGB`` OpRGB colorimetry format ”h]”(j‚ )�”}”(hŒ``DP_COLORIMETRY_OPRGB``”h]”jˆ )�”}”(hjAh]”hŒDP_COLORIMETRY_OPRGB”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjAubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´M/hjAubjž )�”}”(hhh]”hÎ)�”}”(hŒOpRGB colorimetry format”h]”hŒOpRGB colorimetry format”…”�”}”(hj1Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j-Ah´M/hj.Aubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjAubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j-Ah´M/hjð?ubj| )�”}”(hŒ9``DP_COLORIMETRY_XVYCC_709`` xvYCC709 colorimetry format ”h]”(j‚ )�”}”(hŒ``DP_COLORIMETRY_XVYCC_709``”h]”jˆ )�”}”(hjQAh]”hŒDP_COLORIMETRY_XVYCC_709”…”�”}”(hjSAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjOAubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´M2hjKAubjž )�”}”(hhh]”hÎ)�”}”(hŒxvYCC709 colorimetry format”h]”hŒxvYCC709 colorimetry format”…”�”}”(hjjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jfAh´M2hjgAubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjKAubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jfAh´M2hjð?ubj| )�”}”(hŒI``DP_COLORIMETRY_DCI_P3_RGB`` DCI-P3 (SMPTE RP 431-2) colorimetry format ”h]”(j‚ )�”}”(hŒ``DP_COLORIMETRY_DCI_P3_RGB``”h]”jˆ )�”}”(hjŠAh]”hŒDP_COLORIMETRY_DCI_P3_RGB”…”�”}”(hjŒAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjˆAubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´M5hj„Aubjž )�”}”(hhh]”hÎ)�”}”(hŒ*DCI-P3 (SMPTE RP 431-2) colorimetry format”h]”hŒ*DCI-P3 (SMPTE RP 431-2) colorimetry format”…”�”}”(hj£Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jŸAh´M5hj Aubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj„Aubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jŸAh´M5hjð?ubj| )�”}”(hŒ7``DP_COLORIMETRY_SYCC_601`` sYCC601 colorimetry format ”h]”(j‚ )�”}”(hŒ``DP_COLORIMETRY_SYCC_601``”h]”jˆ )�”}”(hjÃAh]”hŒDP_COLORIMETRY_SYCC_601”…”�”}”(hjÅAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÁAubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´M8hj½Aubjž )�”}”(hhh]”hÎ)�”}”(hŒsYCC601 colorimetry format”h]”hŒsYCC601 colorimetry format”…”�”}”(hjÜAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jØAh´M8hjÙAubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj½Aubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jØAh´M8hjð?ubj| )�”}”(hŒJ``DP_COLORIMETRY_RGB_CUSTOM`` RGB Custom Color Profile colorimetry format ”h]”(j‚ )�”}”(hŒ``DP_COLORIMETRY_RGB_CUSTOM``”h]”jˆ )�”}”(hjüAh]”hŒDP_COLORIMETRY_RGB_CUSTOM”…”�”}”(hjþAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjúAubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´M;hjöAubjž )�”}”(hhh]”hÎ)�”}”(hŒ+RGB Custom Color Profile colorimetry format”h]”hŒ+RGB Custom Color Profile colorimetry format”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jBh´M;hjBubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjöAubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jBh´M;hjð?ubj| )�”}”(hŒ9``DP_COLORIMETRY_OPYCC_601`` opYCC601 colorimetry format ”h]”(j‚ )�”}”(hŒ``DP_COLORIMETRY_OPYCC_601``”h]”jˆ )�”}”(hj5Bh]”hŒDP_COLORIMETRY_OPYCC_601”…”�”}”(hj7Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj3Bubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´M>hj/Bubjž )�”}”(hhh]”hÎ)�”}”(hŒopYCC601 colorimetry format”h]”hŒopYCC601 colorimetry format”…”�”}”(hjNBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jJBh´M>hjKBubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj/Bubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jJBh´M>hjð?ubj| )�”}”(hŒH``DP_COLORIMETRY_BT2020_RGB`` ITU-R BT.2020 R' G' B' colorimetry format ”h]”(j‚ )�”}”(hŒ``DP_COLORIMETRY_BT2020_RGB``”h]”jˆ )�”}”(hjnBh]”hŒDP_COLORIMETRY_BT2020_RGB”…”�”}”(hjpBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjlBubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´MAhjhBubjž )�”}”(hhh]”hÎ)�”}”(hŒ)ITU-R BT.2020 R' G' B' colorimetry format”h]”hŒ/ITU-R BT.2020 R’ G’ B’ colorimetry format”…”�”}”(hj‡Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jƒBh´MAhj„Bubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjhBubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jƒBh´MAhjð?ubj| )�”}”(hŒN``DP_COLORIMETRY_BT2020_CYCC`` ITU-R BT.2020 Y'c C'bc C'rc colorimetry format ”h]”(j‚ )�”}”(hŒ``DP_COLORIMETRY_BT2020_CYCC``”h]”jˆ )�”}”(hj§Bh]”hŒDP_COLORIMETRY_BT2020_CYCC”…”�”}”(hj©Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¥Bubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´MDhj¡Bubjž )�”}”(hhh]”hÎ)�”}”(hŒ.ITU-R BT.2020 Y'c C'bc C'rc colorimetry format”h]”hŒ4ITU-R BT.2020 Y’c C’bc C’rc colorimetry format”…”�”}”(hjÀBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¼Bh´MDhj½Bubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¡Bubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¼Bh´MDhjð?ubj| )�”}”(hŒI``DP_COLORIMETRY_BT2020_YCC`` ITU-R BT.2020 Y' C'b C'r colorimetry format”h]”(j‚ )�”}”(hŒ``DP_COLORIMETRY_BT2020_YCC``”h]”jˆ )�”}”(hjàBh]”hŒDP_COLORIMETRY_BT2020_YCC”…”�”}”(hjâBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÞBubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´MFhjÚBubjž )�”}”(hhh]”hÎ)�”}”(hŒ+ITU-R BT.2020 Y' C'b C'r colorimetry format”h]”hŒ1ITU-R BT.2020 Y’ C’b C’r colorimetry format”…”�”}”(hjùBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´MGhjöBubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÚBubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jõBh´MFhjð?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÔ?ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³j:h´NubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj#Ch]”hŒ Description”…”�”}”(hj%Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj!Cubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´MIhjÎ9h²hubhÎ)�”}”(hŒÐThis enum is used to indicate DP VSC SDP Colorimetry formats. It is based on DP 1.4 spec [Table 2-117: VSC SDP Payload for DB16 through DB18] and a name of enum member follows enum drm_colorimetry definition.”h]”hŒÐThis enum is used to indicate DP VSC SDP Colorimetry formats. It is based on DP 1.4 spec [Table 2-117: VSC SDP Payload for DB16 through DB18] and a name of enum member follows enum drm_colorimetry definition.”…”�”}”(hj9Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´MhjÎ9h²hubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdp_dynamic_range (C enum)”Œc.dp_dynamic_range”hNt”auh1j† hjÎ9h²hh³j:h´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒdp_dynamic_range”h]”j¤ )�”}”(hŒenum dp_dynamic_range”h]”(jª )�”}”(hjÂ7h]”hŒenum”…”�”}”(hjaCh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj]Ch²hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjoCh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj]Ch²hh³jnCh´MubjÍ )�”}”(hŒdp_dynamic_range”h]”jÓ )�”}”(hj[Ch]”hŒdp_dynamic_range”…”�”}”(hj�Ch²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj}Cubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj]Ch²hh³jnCh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjYCh²hh³jnCh´Mubah}”(h]”jTCah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jnCh´MhjVCh²hubj )�”}”(hhh]”hÎ)�”}”(hŒdrm DP Dynamic Range”h]”hŒdrm DP Dynamic Range”…”�”}”(hj£Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´M@hj Ch²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjVCh²hh³jnCh´Mubeh}”(h]”h ]”(j Œenum”eh"]”h$]”h&]”j" j j# j»Cj$ j»Cj% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³j:h´Nubj) )�”}”(hŒ[**Constants** ``DP_DYNAMIC_RANGE_VESA`` VESA range ``DP_DYNAMIC_RANGE_CTA`` CTA range”h]”(hÎ)�”}”(hŒ **Constants**”h]”j3 )�”}”(hjÅCh]”hŒ Constants”…”�”}”(hjÇCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÃCubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´MDhj¿Cubjw )�”}”(hhh]”(j| )�”}”(hŒ%``DP_DYNAMIC_RANGE_VESA`` VESA range ”h]”(j‚ )�”}”(hŒ``DP_DYNAMIC_RANGE_VESA``”h]”jˆ )�”}”(hjäCh]”hŒDP_DYNAMIC_RANGE_VESA”…”�”}”(hjæCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjâCubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´MGhjÞCubjž )�”}”(hhh]”hÎ)�”}”(hŒ VESA range”h]”hŒ VESA range”…”�”}”(hjýCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jùCh´MGhjúCubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÞCubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jùCh´MGhjÛCubj| )�”}”(hŒ"``DP_DYNAMIC_RANGE_CTA`` CTA range”h]”(j‚ )�”}”(hŒ``DP_DYNAMIC_RANGE_CTA``”h]”jˆ )�”}”(hjDh]”hŒDP_DYNAMIC_RANGE_CTA”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjDubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´MIhjDubjž )�”}”(hhh]”hÎ)�”}”(hŒ CTA range”h]”hŒ CTA range”…”�”}”(hj6Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´MJhj3Dubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjDubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j2Dh´MIhjÛCubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj¿Cubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³j:h´NubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj`Dh]”hŒ Description”…”�”}”(hjbDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj^Dubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´MLhjÎ9h²hubhÎ)�”}”(hŒ‡This enum is used to indicate DP VSC SDP Dynamic Range. It is based on DP 1.4 spec [Table 2-117: VSC SDP Payload for DB16 through DB18]”h]”hŒ‡This enum is used to indicate DP VSC SDP Dynamic Range. It is based on DP 1.4 spec [Table 2-117: VSC SDP Payload for DB16 through DB18]”…”�”}”(hjvDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´MAhjÎ9h²hubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdp_content_type (C enum)”Œc.dp_content_type”hNt”auh1j† hjÎ9h²hh³j:h´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒdp_content_type”h]”j¤ )�”}”(hŒenum dp_content_type”h]”(jª )�”}”(hjÂ7h]”hŒenum”…”�”}”(hjžDh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjšDh²hh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´MHubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬Dh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjšDh²hh³j«Dh´MHubjÍ )�”}”(hŒdp_content_type”h]”jÓ )�”}”(hj˜Dh]”hŒdp_content_type”…”�”}”(hj¾Dh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjºDubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjšDh²hh³j«Dh´MHubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj–Dh²hh³j«Dh´MHubah}”(h]”j‘Dah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j«Dh´MHhj“Dh²hubj )�”}”(hhh]”hÎ)�”}”(hŒdrm DP Content Type”h]”hŒdrm DP Content Type”…”�”}”(hjàDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´MOhjÝDh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj“Dh²hh³j«Dh´MHubeh}”(h]”h ]”(j Œenum”eh"]”h$]”h&]”j" j j# jøDj$ jøDj% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³j:h´Nubj) )�”}”(hŒå**Constants** ``DP_CONTENT_TYPE_NOT_DEFINED`` Not defined type ``DP_CONTENT_TYPE_GRAPHICS`` Graphics type ``DP_CONTENT_TYPE_PHOTO`` Photo type ``DP_CONTENT_TYPE_VIDEO`` Video type ``DP_CONTENT_TYPE_GAME`` Game type”h]”(hÎ)�”}”(hŒ **Constants**”h]”j3 )�”}”(hjEh]”hŒ Constants”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjEubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´MShjüDubjw )�”}”(hhh]”(j| )�”}”(hŒ1``DP_CONTENT_TYPE_NOT_DEFINED`` Not defined type ”h]”(j‚ )�”}”(hŒ``DP_CONTENT_TYPE_NOT_DEFINED``”h]”jˆ )�”}”(hj!Eh]”hŒDP_CONTENT_TYPE_NOT_DEFINED”…”�”}”(hj#Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjEubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´MVhjEubjž )�”}”(hhh]”hÎ)�”}”(hŒNot defined type”h]”hŒNot defined type”…”�”}”(hj:Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j6Eh´MVhj7Eubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjEubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j6Eh´MVhjEubj| )�”}”(hŒ+``DP_CONTENT_TYPE_GRAPHICS`` Graphics type ”h]”(j‚ )�”}”(hŒ``DP_CONTENT_TYPE_GRAPHICS``”h]”jˆ )�”}”(hjZEh]”hŒDP_CONTENT_TYPE_GRAPHICS”…”�”}”(hj\Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjXEubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´MYhjTEubjž )�”}”(hhh]”hÎ)�”}”(hŒ Graphics type”h]”hŒ Graphics type”…”�”}”(hjsEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³joEh´MYhjpEubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjTEubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³joEh´MYhjEubj| )�”}”(hŒ%``DP_CONTENT_TYPE_PHOTO`` Photo type ”h]”(j‚ )�”}”(hŒ``DP_CONTENT_TYPE_PHOTO``”h]”jˆ )�”}”(hj“Eh]”hŒDP_CONTENT_TYPE_PHOTO”…”�”}”(hj•Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj‘Eubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´M\hj�Eubjž )�”}”(hhh]”hÎ)�”}”(hŒ Photo type”h]”hŒ Photo type”…”�”}”(hj¬Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¨Eh´M\hj©Eubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj�Eubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¨Eh´M\hjEubj| )�”}”(hŒ%``DP_CONTENT_TYPE_VIDEO`` Video type ”h]”(j‚ )�”}”(hŒ``DP_CONTENT_TYPE_VIDEO``”h]”jˆ )�”}”(hjÌEh]”hŒDP_CONTENT_TYPE_VIDEO”…”�”}”(hjÎEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÊEubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´M_hjÆEubjž )�”}”(hhh]”hÎ)�”}”(hŒ Video type”h]”hŒ Video type”…”�”}”(hjåEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jáEh´M_hjâEubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÆEubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jáEh´M_hjEubj| )�”}”(hŒ"``DP_CONTENT_TYPE_GAME`` Game type”•h]”(j‚ )�”}”(hŒ``DP_CONTENT_TYPE_GAME``”h]”jˆ )�”}”(hjFh]”hŒDP_CONTENT_TYPE_GAME”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjFubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´MahjÿEubjž )�”}”(hhh]”hÎ)�”}”(hŒ Game type”h]”hŒ Game type”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´MbhjFubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÿEubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jFh´MahjEubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjüDubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³j:h´NubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjHFh]”hŒ Description”…”�”}”(hjJFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjFFubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´MdhjÎ9h²hubhÎ)�”}”(hŒÐThis enum is used to indicate DP VSC SDP Content Types. It is based on DP 1.4 spec [Table 2-117: VSC SDP Payload for DB16 through DB18] CTA-861-G defines content types and expected processing by a sink device”h]”hŒÐThis enum is used to indicate DP VSC SDP Content Types. It is based on DP 1.4 spec [Table 2-117: VSC SDP Payload for DB16 through DB18] CTA-861-G defines content types and expected processing by a sink device”…”�”}”(hj^Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œa/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:271: ./include/drm/display/drm_dp.h”h´MPhjÎ9h²hubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_dp_vsc_sdp (C struct)”Œc.drm_dp_vsc_sdp”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒdrm_dp_vsc_sdp”h]”j¤ )�”}”(hŒstruct drm_dp_vsc_sdp”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj†Fh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj‚Fh²hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´Kubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”Fh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj‚Fh²hh³j“Fh´KubjÍ )�”}”(hŒdrm_dp_vsc_sdp”h]”jÓ )�”}”(hj€Fh]”hŒdrm_dp_vsc_sdp”…”�”}”(hj¦Fh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¢Fubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj‚Fh²hh³j“Fh´Kubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj~Fh²hh³j“Fh´Kubah}”(h]”jyFah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j“Fh´Khj{Fh²hubj )�”}”(hhh]”hÎ)�”}”(hŒdrm DP VSC SDP”h]”hŒdrm DP VSC SDP”…”�”}”(hjÈFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´KLhjÅFh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj{Fh²hh³j“Fh´Kubeh}”(h]”h ]”(j Œstruct”eh"]”h$]”h&]”j" j j# jàFj$ jàFj% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hX®**Definition**:: struct drm_dp_vsc_sdp { unsigned char sdp_type; unsigned char revision; unsigned char length; enum dp_pixelformat pixelformat; enum dp_colorimetry colorimetry; int bpc; enum dp_dynamic_range dynamic_range; enum dp_content_type content_type; }; **Members** ``sdp_type`` secondary-data packet type ``revision`` revision number ``length`` number of valid data bytes ``pixelformat`` pixel encoding format ``colorimetry`` colorimetry format ``bpc`` bit per color ``dynamic_range`` dynamic range information ``content_type`` CTA-861-G defines content types and expected processing by a sink device”h]”(hÎ)�”}”(hŒ**Definition**::”h]”(j3 )�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjìFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjèFubhŒ:”…”�”}”(hjèFh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´KPhjäFubjN )�”}”(hXstruct drm_dp_vsc_sdp { unsigned char sdp_type; unsigned char revision; unsigned char length; enum dp_pixelformat pixelformat; enum dp_colorimetry colorimetry; int bpc; enum dp_dynamic_range dynamic_range; enum dp_content_type content_type; };”h]”hXstruct drm_dp_vsc_sdp { unsigned char sdp_type; unsigned char revision; unsigned char length; enum dp_pixelformat pixelformat; enum dp_colorimetry colorimetry; int bpc; enum dp_dynamic_range dynamic_range; enum dp_content_type content_type; };”…”�”}”hjGsbah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jM h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´KRhjäFubhÎ)�”}”(hŒ **Members**”h]”j3 )�”}”(hjGh]”hŒMembers”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjGubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´K]hjäFubjw )�”}”(hhh]”(j| )�”}”(hŒ(``sdp_type`` secondary-data packet type ”h]”(j‚ )�”}”(hŒ ``sdp_type``”h]”jˆ )�”}”(hj5Gh]”hŒsdp_type”…”�”}”(hj7Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj3Gubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´KShj/Gubjž )�”}”(hhh]”hÎ)�”}”(hŒsecondary-data packet type”h]”hŒsecondary-data packet type”…”�”}”(hjNGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jJGh´KShjKGubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj/Gubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jJGh´KShj,Gubj| )�”}”(hŒ``revision`` revision number ”h]”(j‚ )�”}”(hŒ ``revision``”h]”jˆ )�”}”(hjnGh]”hŒrevision”…”�”}”(hjpGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjlGubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´KThjhGubjž )�”}”(hhh]”hÎ)�”}”(hŒrevision number”h]”hŒrevision number”…”�”}”(hj‡Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jƒGh´KThj„Gubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjhGubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jƒGh´KThj,Gubj| )�”}”(hŒ&``length`` number of valid data bytes ”h]”(j‚ )�”}”(hŒ ``length``”h]”jˆ )�”}”(hj§Gh]”hŒlength”…”�”}”(hj©Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¥Gubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´KUhj¡Gubjž )�”}”(hhh]”hÎ)�”}”(hŒnumber of valid data bytes”h]”hŒnumber of valid data bytes”…”�”}”(hjÀGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¼Gh´KUhj½Gubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¡Gubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¼Gh´KUhj,Gubj| )�”}”(hŒ&``pixelformat`` pixel encoding format ”h]”(j‚ )�”}”(hŒ``pixelformat``”h]”jˆ )�”}”(hjàGh]”hŒ pixelformat”…”�”}”(hjâGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÞGubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´KVhjÚGubjž )�”}”(hhh]”hÎ)�”}”(hŒpixel encoding format”h]”hŒpixel encoding format”…”�”}”(hjùGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jõGh´KVhjöGubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÚGubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jõGh´KVhj,Gubj| )�”}”(hŒ#``colorimetry`` colorimetry format ”h]”(j‚ )�”}”(hŒ``colorimetry``”h]”jˆ )�”}”(hjHh]”hŒ colorimetry”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjHubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´KWhjHubjž )�”}”(hhh]”hÎ)�”}”(hŒcolorimetry format”h]”hŒcolorimetry format”…”�”}”(hj2Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j.Hh´KWhj/Hubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjHubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j.Hh´KWhj,Gubj| )�”}”(hŒ``bpc`` bit per color ”h]”(j‚ )�”}”(hŒ``bpc``”h]”jˆ )�”}”(hjRHh]”hŒbpc”…”�”}”(hjTHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjPHubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´KXhjLHubjž )�”}”(hhh]”hÎ)�”}”(hŒ bit per color”h]”hŒ bit per color”…”�”}”(hjkHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jgHh´KXhjhHubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjLHubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jgHh´KXhj,Gubj| )�”}”(hŒ,``dynamic_range`` dynamic range information ”h]”(j‚ )�”}”(hŒ``dynamic_range``”h]”jˆ )�”}”(hj‹Hh]”hŒ dynamic_range”…”�”}”(hj�Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj‰Hubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´KYhj…Hubjž )�”}”(hhh]”hÎ)�”}”(hŒdynamic range information”h]”hŒdynamic range information”…”�”}”(hj¤Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j Hh´KYhj¡Hubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj…Hubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j Hh´KYhj,Gubj| )�”}”(hŒY``content_type`` CTA-861-G defines content types and expected processing by a sink device”h]”(j‚ )�”}”(hŒ``content_type``”h]”jˆ )�”}”(hjÄHh]”hŒ content_type”…”�”}”(hjÆHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÂHubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´KYhj¾Hubjž )�”}”(hhh]”hÎ)�”}”(hŒHCTA-861-G defines content types and expected processing by a sink device”h]”hŒHCTA-861-G defines content types and expected processing by a sink device”…”�”}”(hjÝHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´KZhjÚHubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¾Hubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÙHh´KYhj,Gubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjäFubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´NubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjIh]”hŒ Description”…”�”}”(hj Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjIubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´K]hjÎ9h²hubhÎ)�”}”(hŒ¥This structure represents a DP VSC SDP of drm It is based on DP 1.4 spec [Table 2-116: VSC SDP Header Bytes] and [Table 2-117: VSC SDP Payload for DB16 through DB18]”h]”hŒ¥This structure represents a DP VSC SDP of drm It is based on DP 1.4 spec [Table 2-116: VSC SDP Header Bytes] and [Table 2-117: VSC SDP Payload for DB16 through DB18]”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´KMhjÎ9h²hubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_dp_as_sdp (C struct)”Œc.drm_dp_as_sdp”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ drm_dp_as_sdp”h]”j¤ )�”}”(hŒstruct drm_dp_as_sdp”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjEIh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjAIh²hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´KTubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSIh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjAIh²hh³jRIh´KTubjÍ )�”}”(hŒ drm_dp_as_sdp”h]”jÓ )�”}”(hj?Ih]”hŒ drm_dp_as_sdp”…”�”}”(hjeIh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjaIubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjAIh²hh³jRIh´KTubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj=Ih²hh³jRIh´KTubah}”(h]”j8Iah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jRIh´KThj:Ih²hubj )�”}”(hhh]”hÎ)�”}”(hŒdrm DP Adaptive Sync SDP”h]”hŒdrm DP Adaptive Sync SDP”…”�”}”(hj‡Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´Kghj„Ih²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj:Ih²hh³jRIh´KTubeh}”(h]”h ]”(j Œstruct”eh"]”h$]”h&]”j" j j# jŸIj$ jŸIj% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hX**Definition**:: struct drm_dp_as_sdp { unsigned char sdp_type; unsigned char revision; unsigned char length; int vtotal; int target_rr; int duration_incr_ms; int duration_decr_ms; bool target_rr_divider; enum operation_mode mode; int coasting_vtotal; }; **Members** ``sdp_type`` Secondary-data packet type ``revision`` Revision Number ``length`` Number of valid data bytes ``vtotal`` Minimum Vertical Vtotal ``target_rr`` Target Refresh ``duration_incr_ms`` Successive frame duration increase ``duration_decr_ms`` Successive frame duration decrease ``target_rr_divider`` Target refresh rate divider ``mode`` Adaptive Sync Operation Mode ``coasting_vtotal`` Coasting vtotal”h]”(hÎ)�”}”(hŒ**Definition**::”h]”(j3 )�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj«Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj§IubhŒ:”…”�”}”(hj§Ih²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´Kkhj£IubjN )�”}”(hXstruct drm_dp_as_sdp { unsigned char sdp_type; unsigned char revision; unsigned char length; int vtotal; int target_rr; int duration_incr_ms; int duration_decr_ms; bool target_rr_divider; enum operation_mode mode; int coasting_vtotal; };”h]”hXstruct drm_dp_as_sdp { unsigned char sdp_type; unsigned char revision; unsigned char length; int vtotal; int target_rr; int duration_incr_ms; int duration_decr_ms; bool target_rr_divider; enum operation_mode mode; int coasting_vtotal; };”…”�”}”hjÄIsbah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jM h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´Kmhj£IubhÎ)�”}”(hŒ **Members**”h]”j3 )�”}”(hjÕIh]”hŒMembers”…”�”}”(hj×Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÓIubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´Kzhj£Iubjw )�”}”(hhh]”(j| )�”}”(hŒ(``sdp_type`` Secondary-data packet type ”h]”(j‚ )�”}”(hŒ ``sdp_type``”h]”jˆ )�”}”(hjôIh]”hŒsdp_type”…”�”}”(hjöIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjòIubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´KnhjîIubjž )�”}”(hhh]”hÎ)�”}”(hŒSecondary-data packet type”h]”hŒSecondary-data packet type”…”�”}”(hj Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j Jh´Knhj Jubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjîIubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j Jh´KnhjëIubj| )�”}”(hŒ``revision`` Revision Number ”h]”(j‚ )�”}”(hŒ ``revision``”h]”jˆ )�”}”(hj-Jh]”hŒrevision”…”�”}”(hj/Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj+Jubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´Kohj'Jubjž )�”}”(hhh]”hÎ)�”}”(hŒRevision Number”h]”hŒRevision Number”…”�”}”(hjFJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jBJh´KohjCJubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj'Jubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jBJh´KohjëIubj| )�”}”(hŒ&``length`` Number of valid data bytes ”h]”(j‚ )�”}”(hŒ ``length``”h]”jˆ )�”}”(hjfJh]”hŒlength”…”�”}”(hjhJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjdJubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´Kphj`Jubjž )�”}”(hhh]”hÎ)�”}”(hŒNumber of valid data bytes”h]”hŒNumber of valid data bytes”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j{Jh´Kphj|Jubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj`Jubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j{Jh´KphjëIubj| )�”}”(hŒ#``vtotal`` Minimum Vertical Vtotal ”h]”(j‚ )�”}”(hŒ ``vtotal``”h]”jˆ )�”}”(hjŸJh]”hŒvtotal”…”�”}”(hj¡Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj�Jubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´Kqhj™Jubjž )�”}”(hhh]”hÎ)�”}”(hŒMinimum Vertical Vtotal”h]”hŒMinimum Vertical Vtotal”…”�”}”(hj¸Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j´Jh´KqhjµJubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj™Jubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j´Jh´KqhjëIubj| )�”}”(hŒ``target_rr`` Target Refresh ”h]”(j‚ )�”}”(hŒ ``target_rr``”h]”jˆ )�”}”(hjØJh]”hŒ target_rr”…”�”}”(hjÚJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÖJubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´KrhjÒJubjž )�”}”(hhh]”hÎ)�”}”(hŒTarget Refresh”h]”hŒTarget Refresh”…”�”}”(hjñJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jíJh´KrhjîJubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÒJubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jíJh´KrhjëIubj| )�”}”(hŒ8``duration_incr_ms`` Successive frame duration increase ”h]”(j‚ )�”}”(hŒ``duration_incr_ms``”h]”jˆ )�”}”(hjKh]”hŒduration_incr_ms”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjKubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´Kshj Kubjž )�”}”(hhh]”hÎ)�”}”(hŒ"Successive frame duration increase”h]”hŒ"Successive frame duration increase”…”�”}”(hj*Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j&Kh´Kshj'Kubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j&Kh´KshjëIubj| )�”}”(hŒ8``duration_decr_ms`` Successive frame duration decrease ”h]”(j‚ )�”}”(hŒ``duration_decr_ms``”h]”jˆ )�”}”(hjJKh]”hŒduration_decr_ms”…”�”}”(hjLKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjHKubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´KthjDKubjž )�”}”(hhh]”hÎ)�”}”(hŒ"Successive frame duration decrease”h]”hŒ"Successive frame duration decrease”…”�”}”(hjcKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j_Kh´Kthj`Kubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjDKubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j_Kh´KthjëIubj| )�”}”(hŒ2``target_rr_divider`` Target refresh rate divider ”h]”(j‚ )�”}”(hŒ``target_rr_divider``”h]”jˆ )�”}”(hjƒKh]”hŒtarget_rr_divider”…”�”}”(hj…Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj�Kubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´Kuhj}Kubjž )�”}”(hhh]”hÎ)�”}”(hŒTarget refresh rate divider”h]”hŒTarget refresh rate divider”…”�”}”(hjœKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j˜Kh´Kuhj™Kubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj}Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j˜Kh´KuhjëIubj| )�”}”(hŒ&``mode`` Adaptive Sync Operation Mode ”h]”(j‚ )�”}”(hŒ``mode``”h]”jˆ )�”}”(hj¼Kh]”hŒmode”…”�”}”(hj¾Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjºKubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´Kvhj¶Kubjž )�”}”(hhh]”hÎ)�”}”(hŒAdaptive Sync Operation Mode”h]”hŒAdaptive Sync Operation Mode”…”�”}”(hjÕKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÑKh´KvhjÒKubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¶Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÑKh´KvhjëIubj| )�”}”(hŒ#``coasting_vtotal`` Coasting vtotal”h]”(j‚ )�”}”(hŒ``coasting_vtotal``”h]”jˆ )�”}”(hjõKh]”hŒcoasting_vtotal”…”�”}”(hj÷Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjóKubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´KvhjïKubjž )�”}”(hhh]”hÎ)�”}”(hŒCoasting vtotal”h]”hŒCoasting vtotal”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´Kwhj Lubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjïKubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j Lh´KvhjëIubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj£Iubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´NubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj8Lh]”hŒ Description”…”�”}”(hj:Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj6Lubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´KzhjÎ9h²hubhÎ)�”}”(hŒ·This structure represents a DP AS SDP of drm It is based on DP 2.1 spec [Table 2-126: Adaptive-Sync SDP Header Bytes] and [Table 2-127: Adaptive-Sync SDP Payload for DB0 through DB8]”h]”hŒ·This structure represents a DP AS SDP of drm It is based on DP 2.1 spec [Table 2-126: Adaptive-Sync SDP Header Bytes] and [Table 2-127: Adaptive-Sync SDP Payload for DB0 through DB8]”…”�”}”(hjNLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´KhhjÎ9h²hubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ,drm_dp_dsc_sink_supports_format (C function)”Œ!c.drm_dp_dsc_sink_supports_format”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒdbool drm_dp_dsc_sink_supports_format (const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE], u8 output_format)”h]”j¤ )�”}”(hŒcbool drm_dp_dsc_sink_supports_format(const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE], u8 output_format)”h]”(j¦)�”}”(hj£Ih]”hŒbool”…”�”}”(hjvLh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjrLh²hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´Kùubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„Lh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjrLh²hh³jƒLh´KùubjÍ )�”}”(hŒdrm_dp_dsc_sink_supports_format”h]”jÓ )�”}”(hŒdrm_dp_dsc_sink_supports_format”h]”hŒdrm_dp_dsc_sink_supports_format”…”�”}”(hj–Lh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj’Lubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjrLh²hh³jƒLh´KùubjÞ)�”}”(hŒ?(const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE], u8 output_format)”h]”(jä)�”}”(hŒ+const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE]”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hj²Lh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj®Lubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿Lh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj®Lubh)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(hjÐLh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÍLubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jÒLŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj˜LsbŒ!c.drm_dp_dsc_sink_supports_format”†”asbuh1hhj®Lubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjðLh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj®LubjÓ )�”}”(hŒdsc_dpcd”h]”hŒdsc_dpcd”…”�”}”(hjþLh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj®Lubj9)�”}”(hŒ[”h]”hŒ[”…”�”}”(hj Mh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj®Lubh)�”}”(hhh]”jÓ )�”}”(hŒDP_DSC_RECEIVER_CAP_SIZE”h]”hŒDP_DSC_RECEIVER_CAP_SIZE”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjMubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jMŒmodname”NŒ classname”Njé jì )�”}”jï ]”jìLŒ!c.drm_dp_dsc_sink_supports_format”†”asbuh1hhj®Lubj9)�”}”(hŒ]”h]”hŒ]”…”�”}”(hj;Mh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj®Lubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjªLubjä)�”}”(hŒu8 output_format”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(hjWMh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjTMubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jYMŒmodname”NŒ classname”Njé jì )�”}”jï ]”jìLŒ!c.drm_dp_dsc_sink_supports_format”†”asbuh1hhjPMubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjuMh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjPMubjÓ )�”}”(hŒ output_format”h]”hŒ output_format”…”�”}”(hjƒMh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjPMubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjªLubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjrLh²hh³jƒLh´Kùubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjnLh²hh³jƒLh´Kùubah}”(h]”jiLah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jƒLh´KùhjkLh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ3check if sink supports DSC with given output format”h]”hŒ3check if sink supports DSC with given output format”…”�”}”(hj­Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´KùhjªMh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjkLh²hh³jƒLh´Kùubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jÅMj$ jÅMj% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hX**Parameters** ``const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE]`` DSC-capability DPCDs of the sink ``u8 output_format`` output_format which is to be checked **Description** Returns true if the sink supports DSC with the given output_format, false otherwise.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjÏMh]”hŒ Parameters”…”�”}”(hjÑMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÍMubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´KýhjÉMubjw )�”}”(hhh]”(j| )�”}”(hŒQ``const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE]`` DSC-capability DPCDs of the sink ”h]”(j‚ )�”}”(hŒ/``const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE]``”h]”jˆ )�”}”(hjîMh]”hŒ+const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE]”…”�”}”(hjðMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjìMubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´KúhjèMubjž )�”}”(hhh]”hÎ)�”}”(hŒ DSC-capability DPCDs of the sink”h]”hŒ DSC-capability DPCDs of the sink”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jNh´KúhjNubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjèMubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jNh´KúhjåMubj| )�”}”(hŒ:``u8 output_format`` output_format which is to be checked ”h]”(j‚ )�”}”(hŒ``u8 output_format``”h]”jˆ )�”}”(hj'Nh]”hŒu8 output_format”…”�”}”(hj)Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj%Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´Kûhj!Nubjž )�”}”(hhh]”hÎ)�”}”(hŒ$output_format which is to be checked”h]”hŒ$output_format which is to be checked”…”�”}”(hj@Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jhj^Qubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_dp_aux_msg (C struct)”Œc.drm_dp_aux_msg”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒdrm_dp_aux_msg”h]”j¤ )�”}”(hŒstruct drm_dp_aux_msg”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjJRh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjFRh²hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´MCubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXRh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjFRh²hh³jWRh´MCubjÍ )�”}”(hŒdrm_dp_aux_msg”h]”jÓ )�”}”(hjDRh]”hŒdrm_dp_aux_msg”…”�”}”(hjjRh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjfRubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjFRh²hh³jWRh´MCubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjBRh²hh³jWRh´MCubah}”(h]”j=Rah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jWRh´MChj?Rh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ#DisplayPort AUX channel transaction”h]”hŒ#DisplayPort AUX channel transaction”…”�”}”(hjŒRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´MJhj‰Rh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj?Rh²hh³jWRh´MCubeh}”(h]”h ]”(j Œstruct”eh"]”h$]”h&]”j" j j# j¤Rj$ j¤Rj% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hXÅ**Definition**:: struct drm_dp_aux_msg { unsigned int address; u8 request; u8 reply; void *buffer; size_t size; }; **Members** ``address`` address of the (first) register to access ``request`` contains the type of transaction (see DP_AUX_* macros) ``reply`` upon completion, contains the reply type of the transaction ``buffer`` pointer to a transmission or reception buffer ``size`` size of **buffer**”h]”(hÎ)�”}”(hŒ**Definition**::”h]”(j3 )�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj°Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¬RubhŒ:”…”�”}”(hj¬Rh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´MNhj¨RubjN )�”}”(hŒustruct drm_dp_aux_msg { unsigned int address; u8 request; u8 reply; void *buffer; size_t size; };”h]”hŒustruct drm_dp_aux_msg { unsigned int address; u8 request; u8 reply; void *buffer; size_t size; };”…”�”}”hjÉRsbah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jM h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´MPhj¨RubhÎ)�”}”(hŒ **Members**”h]”j3 )�”}”(hjÚRh]”hŒMembers”…”�”}”(hjÜRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjØRubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´MXhj¨Rubjw )�”}”(hhh]”(j| )�”}”(hŒ6``address`` address of the (first) register to access ”h]”(j‚ )�”}”(hŒ ``address``”h]”jˆ )�”}”(hjùRh]”hŒaddress”…”�”}”(hjûRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj÷Rubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´MLhjóRubjž )�”}”(hhh]”hÎ)�”}”(hŒ)address of the (first) register to access”h]”hŒ)address of the (first) register to access”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jSh´MLhjSubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjóRubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jSh´MLhjðRubj| )�”}”(hŒC``request`` contains the type of transaction (see DP_AUX_* macros) ”h]”(j‚ )�”}”(hŒ ``request``”h]”jˆ )�”}”(hj2Sh]”hŒrequest”…”�”}”(hj4Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj0Subah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´MMhj,Subjž )�”}”(hhh]”hÎ)�”}”(hŒ6contains the type of transaction (see DP_AUX_* macros)”h]”hŒ6contains the type of transaction (see DP_AUX_* macros)”…”�”}”(hjKSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jGSh´MMhjHSubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj,Subeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jGSh´MMhjðRubj| )�”}”(hŒF``reply`` upon completion, contains the reply type of the transaction ”h]”(j‚ )�”}”(hŒ ``reply``”h]”jˆ )�”}”(hjkSh]”hŒreply”…”�”}”(hjmSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjiSubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´MNhjeSubjž )�”}”(hhh]”hÎ)�”}”(hŒ;upon completion, contains the reply type of the transaction”h]”hŒ;upon completion, contains the reply type of the transaction”…”�”}”(hj„Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j€Sh´MNhj�Subah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjeSubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j€Sh´MNhjðRubj| )�”}”(hŒ9``buffer`` pointer to a transmission or reception buffer ”h]”(j‚ )�”}”(hŒ ``buffer``”h]”jˆ )�”}”(hj¤Sh]”hŒbuffer”…”�”}”(hj¦Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¢Subah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´MOhjžSubjž )�”}”(hhh]”hÎ)�”}”(hŒ-pointer to a transmission or reception buffer”h]”hŒ-pointer to a transmission or reception buffer”…”�”}”(hj½Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¹Sh´MOhjºSubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjžSubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¹Sh´MOhjðRubj| )�”}”(hŒ``size`` size of **buffer**”h]”(j‚ )�”}”(hŒ``size``”h]”jˆ )�”}”(hjÝSh]”hŒsize”…”�”}”(hjßSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÛSubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´MOhj×Subjž )�”}”(hhh]”hÎ)�”}”(hŒsize of **buffer**”h]”(hŒsize of ”…”�”}”(hjöSh²hh³Nh´Nubj3 )�”}”(hŒ **buffer**”h]”hŒbuffer”…”�”}”(hjþSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjöSubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´MPhjóSubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj×Subeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jòSh´MOhjðRubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj¨Rubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_dp_aux_cec (C struct)”Œc.drm_dp_aux_cec”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒdrm_dp_aux_cec”h]”j¤ )�”}”(hŒstruct drm_dp_aux_cec”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjETh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjATh²hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´MVubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSTh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjATh²hh³jRTh´MVubjÍ )�”}”(hŒdrm_dp_aux_cec”h]”jÓ )�”}”(hj?Th]”hŒdrm_dp_aux_cec”…”�”}”(hjeTh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjaTubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjATh²hh³jRTh´MVubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj=Th²hh³jRTh´MVubah}”(h]”j8Tah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jRTh´MVhj:Th²hubj )�”}”(hhh]”hÎ)�”}”(hŒ"DisplayPort CEC-Tunneling-over-AUX”h]”hŒ"DisplayPort CEC-Tunneling-over-AUX”…”�”}”(hj‡Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´M^hj„Th²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj:Th²hh³jRTh´MVubeh}”(h]”h ]”(j Œstruct”eh"]”h$]”h&]”j" j j# jŸTj$ jŸTj% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hX¦**Definition**:: struct drm_dp_aux_cec { struct mutex lock; struct cec_adapter *adap; struct drm_connector *connector; struct delayed_work unregister_work; }; **Members** ``lock`` mutex protecting this struct ``adap`` the CEC adapter for CEC-Tunneling-over-AUX support. ``connector`` the connector this CEC adapter is associated with ``unregister_work`` unregister the CEC adapter”h]”(hÎ)�”}”(hŒ**Definition**::”h]”(j3 )�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj«Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj§TubhŒ:”…”�”}”(hj§Th²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´Mbhj£TubjN )�”}”(hŒ�struct drm_dp_aux_cec { struct mutex lock; struct cec_adapter *adap; struct drm_connector *connector; struct delayed_work unregister_work; };”h]”hŒ�struct drm_dp_aux_cec { struct mutex lock; struct cec_adapter *adap; struct drm_connector *connector; struct delayed_work unregister_work; };”…”�”}”hjÄTsbah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jM h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´Mdhj£TubhÎ)�”}”(hŒ **Members**”h]”j3 )�”}”(hjÕTh]”hŒMembers”…”�”}”(hj×Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÓTubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´Mkhj£Tubjw )�”}”(hhh]”(j| )�”}”(hŒ&``lock`` mutex protecting this struct ”h]”(j‚ )�”}”(hŒ``lock``”h]”jˆ )�”}”(hjôTh]”hŒlock”…”�”}”(hjöTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjòTubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´M`hjîTubjž )�”}”(hhh]”hÎ)�”}”(hŒmutex protecting this struct”h]”hŒmutex protecting this struct”…”�”}”(hj Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j Uh´M`hj Uubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjîTubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j Uh´M`hjëTubj| )�”}”(hŒ=``adap`` the CEC adapter for CEC-Tunneling-over-AUX support. ”h]”(j‚ )�”}”(hŒ``adap``”h]”jˆ )�”}”(hj-Uh]”hŒadap”…”�”}”(hj/Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj+Uubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´Mahj'Uubjž )�”}”(hhh]”hÎ)�”}”(hŒ3the CEC adapter for CEC-Tunneling-over-AUX support.”h]”hŒ3the CEC adapter for CEC-Tunneling-over-AUX support.”…”�”}”(hjFUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jBUh´MahjCUubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj'Uubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jBUh´MahjëTubj| )�”}”(hŒ@``connector`` the connector this CEC adapter is associated with ”h]”(j‚ )�”}”(hŒ ``connector``”h]”jˆ )�”}”(hjfUh]”hŒ connector”…”�”}”(hjhUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjdUubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´Mbhj`Uubjž )�”}”(hhh]”hÎ)�”}”(hŒ1the connector this CEC adapter is associated with”h]”hŒ1the connector this CEC adapter is associated with”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j{Uh´Mbhj|Uubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj`Uubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j{Uh´MbhjëTubj| )�”}”(hŒ.``unregister_work`` unregister the CEC adapter”h]”(j‚ )�”}”(hŒ``unregister_work``”h]”jˆ )�”}”(hjŸUh]”hŒunregister_work”…”�”}”(hj¡Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj�Uubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´Mbhj™Uubjž )�”}”(hhh]”hÎ)�”}”(hŒunregister the CEC adapter”h]”hŒunregister the CEC adapter”…”�”}”(hj¸Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´MchjµUubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj™Uubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j´Uh´MbhjëTubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj£Tubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_dp_aux (C struct)”Œ c.drm_dp_aux”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ drm_dp_aux”h]”j¤ )�”}”(hŒstruct drm_dp_aux”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjùUh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjõUh²hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´Miubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjõUh²hh³jVh´MiubjÍ )�”}”(hŒ drm_dp_aux”h]”jÓ )�”}”(hjóUh]”hŒ drm_dp_aux”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjVubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjõUh²hh³jVh´Miubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjñUh²hh³jVh´Miubah}”(h]”jìUah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jVh´MihjîUh²hubj )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort AUX channel”h]”hŒDisplayPort AUX channel”…”�”}”(hj;Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´Mlhj8Vh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjîUh²hh³jVh´Miubeh}”(h]”h ]”(j Œstruct”eh"]”h$]”h&]”j" j j# jSVj$ jSVj% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hXD**Definition**:: struct drm_dp_aux { const char *name; struct i2c_adapter ddc; struct device *dev; struct drm_device *drm_dev; struct drm_crtc *crtc; struct mutex hw_mutex; struct work_struct crc_work; u8 crc_count; ssize_t (*transfer)(struct drm_dp_aux *aux, struct drm_dp_aux_msg *msg); int (*wait_hpd_asserted)(struct drm_dp_aux *aux, unsigned long wait_us); unsigned i2c_nack_count; unsigned i2c_defer_count; struct drm_dp_aux_cec cec; bool is_remote; bool powered_down; bool no_zero_sized; bool dpcd_probe_disabled; }; **Members** ``name`` user-visible name of this AUX channel and the I2C-over-AUX adapter. It's also used to specify the name of the I2C adapter. If set to ``NULL``, dev_name() of **dev** will be used. ``ddc`` I2C adapter that can be used for I2C-over-AUX communication ``dev`` pointer to struct device that is the parent for this AUX channel. ``drm_dev`` pointer to the :c:type:`drm_device` that owns this AUX channel. Beware, this may be ``NULL`` before drm_dp_aux_register() has been called. It should be set to the :c:type:`drm_device` that will be using this AUX channel as early as possible. For many graphics drivers this should happen before drm_dp_aux_init(), however it's perfectly fine to set this field later so long as it's assigned before calling drm_dp_aux_register(). ``crtc`` backpointer to the crtc that is currently using this AUX channel ``hw_mutex`` internal mutex used for locking transfers. Note that if the underlying hardware is shared among multiple channels, the driver needs to do additional locking to prevent concurrent access. ``crc_work`` worker that captures CRCs for each frame ``crc_count`` counter of captured frame CRCs ``transfer`` transfers a message representing a single AUX transaction. This is a hardware-specific implementation of how transactions are executed that the drivers must provide. A pointer to a :c:type:`drm_dp_aux_msg` structure describing the transaction is passed into this function. Upon success, the implementation should return the number of payload bytes that were transferred, or a negative error-code on failure. Helpers will propagate these errors, with the exception of the ``-EBUSY`` error, which causes a transaction to be retried. On a short, helpers will return ``-EPROTO`` to make it simpler to check for failure. The **transfer\(\)** function must only modify the reply field of the :c:type:`drm_dp_aux_msg` structure. The retry logic and i2c helpers assume this is the case. Also note that this callback can be called no matter the state **dev** is in and also no matter what state the panel is in. It's expected: - If the **dev** providing the AUX bus is currently unpowered then it will power itself up for the transfer. - If we're on eDP (using a drm_panel) and the panel is not in a state where it can respond (it's not powered or it's in a low power state) then this function may return an error, but not crash. It's up to the caller of this code to make sure that the panel is powered on if getting an error back is not OK. If a drm_panel driver is initiating a DP AUX transfer it may power itself up however it wants. All other code should ensure that the pre_enable() bridge chain (which eventually calls the drm_panel prepare function) has powered the panel. ``wait_hpd_asserted`` wait for HPD to be asserted This is mainly useful for eDP panels drivers to wait for an eDP panel to finish powering on. It is optional for DP AUX controllers to implement this function. It is required for DP AUX endpoints (panel drivers) to call this function after powering up but before doing AUX transfers unless the DP AUX endpoint driver knows that we're not using the AUX controller's HPD. One example of the panel driver not needing to call this is if HPD is hooked up to a GPIO that the panel driver can read directly. If a DP AUX controller does not implement this function then it may still support eDP panels that use the AUX controller's built-in HPD signal by implementing a long wait for HPD in the transfer() callback, though this is deprecated. This function will efficiently wait for the HPD signal to be asserted. The `wait_us` parameter that is passed in says that we know that the HPD signal is expected to be asserted within `wait_us` microseconds. This function could wait for longer than `wait_us` if the logic in the DP controller has a long debouncing time. The important thing is that if this function returns success that the DP controller is ready to send AUX transactions. This function returns 0 if HPD was asserted or -ETIMEDOUT if time expired and HPD wasn't asserted. This function should not print timeout errors to the log. The semantics of this function are designed to match the readx_poll_timeout() function. That means a `wait_us` of 0 means to wait forever. Like readx_poll_timeout(), this function may sleep. NOTE: this function specifically reports the state of the HPD pin that's associated with the DP AUX channel. This is different from the HPD concept in much of the rest of DRM which is more about physical presence of a display. For eDP, for instance, a display is assumed always present even if the HPD pin is deasserted. ``i2c_nack_count`` Counts I2C NACKs, used for DP validation. ``i2c_defer_count`` Counts I2C DEFERs, used for DP validation. ``cec`` struct containing fields used for CEC-Tunneling-over-AUX. ``is_remote`` Is this AUX CH actually using sideband messaging. ``powered_down`` If true then the remote endpoint is powered down. ``no_zero_sized`` If the hw can't use zero sized transfers (NVIDIA) ``dpcd_probe_disabled`` If probing before a DPCD access is disabled.”h]”(hÎ)�”}”(hŒ**Definition**::”h]”(j3 )�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj_Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj[VubhŒ:”…”�”}”(hj[Vh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´MphjWVubjN )�”}”(hX>struct drm_dp_aux { const char *name; struct i2c_adapter ddc; struct device *dev; struct drm_device *drm_dev; struct drm_crtc *crtc; struct mutex hw_mutex; struct work_struct crc_work; u8 crc_count; ssize_t (*transfer)(struct drm_dp_aux *aux, struct drm_dp_aux_msg *msg); int (*wait_hpd_asserted)(struct drm_dp_aux *aux, unsigned long wait_us); unsigned i2c_nack_count; unsigned i2c_defer_count; struct drm_dp_aux_cec cec; bool is_remote; bool powered_down; bool no_zero_sized; bool dpcd_probe_disabled; };”h]”hX>struct drm_dp_aux { const char *name; struct i2c_adapter ddc; struct device *dev; struct drm_device *drm_dev; struct drm_crtc *crtc; struct mutex hw_mutex; struct work_struct crc_work; u8 crc_count; ssize_t (*transfer)(struct drm_dp_aux *aux, struct drm_dp_aux_msg *msg); int (*wait_hpd_asserted)(struct drm_dp_aux *aux, unsigned long wait_us); unsigned i2c_nack_count; unsigned i2c_defer_count; struct drm_dp_aux_cec cec; bool is_remote; bool powered_down; bool no_zero_sized; bool dpcd_probe_disabled; };”…”�”}”hjxVsbah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jM h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´MrhjWVubhÎ)�”}”(hŒ **Members**”h]”j3 )�”}”(hj‰Vh]”hŒMembers”…”�”}”(hj‹Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj‡Vubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´M†hjWVubjw )�”}”(hhh]”(j| )�”}”(hŒ½``name`` user-visible name of this AUX channel and the I2C-over-AUX adapter. It's also used to specify the name of the I2C adapter. If set to ``NULL``, dev_name() of **dev** will be used. ”h]”(j‚ )�”}”(hŒ``name``”h]”jˆ )�”}”(hj¨Vh]”hŒname”…”�”}”(hjªVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¦Vubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´Mhj¢Vubjž )�”}”(hhh]”(hÎ)�”}”(hŒCuser-visible name of this AUX channel and the I2C-over-AUX adapter.”h]”hŒCuser-visible name of this AUX channel and the I2C-over-AUX adapter.”…”�”}”(hjÁVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´M{hj¾VubhÎ)�”}”(hŒnIt's also used to specify the name of the I2C adapter. If set to ``NULL``, dev_name() of **dev** will be used.”h]”(hŒCIt’s also used to specify the name of the I2C adapter. If set to ”…”�”}”(hjÐVh²hh³Nh´Nubjˆ )�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjØVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÐVubhŒ, dev_name() of ”…”�”}”(hjÐVh²hh³Nh´Nubj3 )�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hjêVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÐVubhŒ will be used.”…”�”}”(hjÐVh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´M~hj¾Vubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¢Vubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j½Vh´MhjŸVubj| )�”}”(hŒD``ddc`` I2C adapter that can be used for I2C-over-AUX communication ”h]”(j‚ )�”}”(hŒ``ddc``”h]”jˆ )�”}”(hjWh]”hŒddc”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjWubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´M…hjWubjž )�”}”(hhh]”hÎ)�”}”(hŒ;I2C adapter that can be used for I2C-over-AUX communication”h]”hŒ;I2C adapter that can be used for I2C-over-AUX communication”…”�”}”(hj.Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´M„hj+Wubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjWubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j*Wh´M…hjŸVubj| )�”}”(hŒJ``dev`` pointer to struct device that is the parent for this AUX channel. ”h]”(j‚ )�”}”(hŒ``dev``”h]”jˆ )�”}”(hjOWh]”hŒdev”…”�”}”(hjQWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjMWubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´M‹hjIWubjž )�”}”(hhh]”hÎ)�”}”(hŒApointer to struct device that is the parent for this AUX channel.”h•«]”hŒApointer to struct device that is the parent for this AUX channel.”…”�”}”(hjhWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´MŠhjeWubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjIWubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jdWh´M‹hjŸVubj| )�”}”(hX¹``drm_dev`` pointer to the :c:type:`drm_device` that owns this AUX channel. Beware, this may be ``NULL`` before drm_dp_aux_register() has been called. It should be set to the :c:type:`drm_device` that will be using this AUX channel as early as possible. For many graphics drivers this should happen before drm_dp_aux_init(), however it's perfectly fine to set this field later so long as it's assigned before calling drm_dp_aux_register(). ”h]”(j‚ )�”}”(hŒ ``drm_dev``”h]”jˆ )�”}”(hj‰Wh]”hŒdrm_dev”…”�”}”(hj‹Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj‡Wubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´M˜hjƒWubjž )�”}”(hhh]”(hÎ)�”}”(hŒŠpointer to the :c:type:`drm_device` that owns this AUX channel. Beware, this may be ``NULL`` before drm_dp_aux_register() has been called.”h]”(hŒpointer to the ”…”�”}”(hj¢Wh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_device`”h]”jˆ )�”}”(hj¬Wh]”hŒ drm_device”…”�”}”(hj®Wh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjªWubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œ drm_device”uh1hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´M�hj¢WubhŒ1 that owns this AUX channel. Beware, this may be ”…”�”}”(hj¢Wh²hh³Nh´Nubjˆ )�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjÎWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¢WubhŒ. before drm_dp_aux_register() has been called.”…”�”}”(hj¢Wh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÉWh´M�hjŸWubhÎ)�”}”(hX It should be set to the :c:type:`drm_device` that will be using this AUX channel as early as possible. For many graphics drivers this should happen before drm_dp_aux_init(), however it's perfectly fine to set this field later so long as it's assigned before calling drm_dp_aux_register().”h]”(hŒIt should be set to the ”…”�”}”(hjæWh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_device`”h]”jˆ )�”}”(hjðWh]”hŒ drm_device”…”�”}”(hjòWh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjîWubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œ drm_device”uh1hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´M”hjæWubhŒø that will be using this AUX channel as early as possible. For many graphics drivers this should happen before drm_dp_aux_init(), however it’s perfectly fine to set this field later so long as it’s assigned before calling drm_dp_aux_register().”…”�”}”(hjæWh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j Xh´M”hjŸWubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjƒWubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jžWh´M˜hjŸVubj| )�”}”(hŒJ``crtc`` backpointer to the crtc that is currently using this AUX channel ”h]”(j‚ )�”}”(hŒ``crtc``”h]”jˆ )�”}”(hj*Xh]”hŒcrtc”…”�”}”(hj,Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj(Xubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´Mžhj$Xubjž )�”}”(hhh]”hÎ)�”}”(hŒ@backpointer to the crtc that is currently using this AUX channel”h]”hŒ@backpointer to the crtc that is currently using this AUX channel”…”�”}”(hjCXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´M�hj@Xubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj$Xubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j?Xh´MžhjŸVubj| )�”}”(hŒÉ``hw_mutex`` internal mutex used for locking transfers. Note that if the underlying hardware is shared among multiple channels, the driver needs to do additional locking to prevent concurrent access. ”h]”(j‚ )�”}”(hŒ ``hw_mutex``”h]”jˆ )�”}”(hjdXh]”hŒhw_mutex”…”�”}”(hjfXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjbXubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´M§hj^Xubjž )�”}”(hhh]”(hÎ)�”}”(hŒ*internal mutex used for locking transfers.”h]”hŒ*internal mutex used for locking transfers.”…”�”}”(hj}Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´M£hjzXubhÎ)�”}”(hŒ�Note that if the underlying hardware is shared among multiple channels, the driver needs to do additional locking to prevent concurrent access.”h]”hŒ�Note that if the underlying hardware is shared among multiple channels, the driver needs to do additional locking to prevent concurrent access.”…”�”}”(hjŒXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´M¥hjzXubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj^Xubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jyXh´M§hjŸVubj| )�”}”(hŒ6``crc_work`` worker that captures CRCs for each frame ”h]”(j‚ )�”}”(hŒ ``crc_work``”h]”jˆ )�”}”(hj­Xh]”hŒcrc_work”…”�”}”(hj¯Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj«Xubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´M¬hj§Xubjž )�”}”(hhh]”hÎ)�”}”(hŒ(worker that captures CRCs for each frame”h]”hŒ(worker that captures CRCs for each frame”…”�”}”(hjÆXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÂXh´M¬hjÃXubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj§Xubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÂXh´M¬hjŸVubj| )�”}”(hŒ-``crc_count`` counter of captured frame CRCs ”h]”(j‚ )�”}”(hŒ ``crc_count``”h]”jˆ )�”}”(hjæXh]”hŒ crc_count”…”�”}”(hjèXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjäXubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´M±hjàXubjž )�”}”(hhh]”hÎ)�”}”(hŒcounter of captured frame CRCs”h]”hŒcounter of captured frame CRCs”…”�”}”(hjÿXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jûXh´M±hjüXubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjàXubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jûXh´M±hjŸVubj| )�”}”(hXJ``transfer`` transfers a message representing a single AUX transaction. This is a hardware-specific implementation of how transactions are executed that the drivers must provide. A pointer to a :c:type:`drm_dp_aux_msg` structure describing the transaction is passed into this function. Upon success, the implementation should return the number of payload bytes that were transferred, or a negative error-code on failure. Helpers will propagate these errors, with the exception of the ``-EBUSY`` error, which causes a transaction to be retried. On a short, helpers will return ``-EPROTO`` to make it simpler to check for failure. The **transfer\(\)** function must only modify the reply field of the :c:type:`drm_dp_aux_msg` structure. The retry logic and i2c helpers assume this is the case. Also note that this callback can be called no matter the state **dev** is in and also no matter what state the panel is in. It's expected: - If the **dev** providing the AUX bus is currently unpowered then it will power itself up for the transfer. - If we're on eDP (using a drm_panel) and the panel is not in a state where it can respond (it's not powered or it's in a low power state) then this function may return an error, but not crash. It's up to the caller of this code to make sure that the panel is powered on if getting an error back is not OK. If a drm_panel driver is initiating a DP AUX transfer it may power itself up however it wants. All other code should ensure that the pre_enable() bridge chain (which eventually calls the drm_panel prepare function) has powered the panel. ”h]”(j‚ )�”}”(hŒ ``transfer``”h]”jˆ )�”}”(hjYh]”hŒtransfer”…”�”}”(hj!Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjYubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´MÙhjYubjž )�”}”(hhh]”(hÎ)�”}”(hŒ:transfers a message representing a single AUX transaction.”h]”hŒ:transfers a message representing a single AUX transaction.”…”�”}”(hj8Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´M¶hj5YubhÎ)�”}”(hŒjThis is a hardware-specific implementation of how transactions are executed that the drivers must provide.”h]”hŒjThis is a hardware-specific implementation of how transactions are executed that the drivers must provide.”…”�”}”(hjGYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´M¹hj5YubhÎ)�”}”(hŒñA pointer to a :c:type:`drm_dp_aux_msg` structure describing the transaction is passed into this function. Upon success, the implementation should return the number of payload bytes that were transferred, or a negative error-code on failure.”h]”(hŒA pointer to a ”…”�”}”(hjVYh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_dp_aux_msg`”h]”jˆ )�”}”(hj`Yh]”hŒdrm_dp_aux_msg”…”�”}”(hjbYh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj^Yubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_dp_aux_msg”uh1hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´M¼hjVYubhŒÊ structure describing the transaction is passed into this function. Upon success, the implementation should return the number of payload bytes that were transferred, or a negative error-code on failure.”…”�”}”(hjVYh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j}Yh´M¼hj5YubhÎ)�”}”(hŒÏHelpers will propagate these errors, with the exception of the ``-EBUSY`` error, which causes a transaction to be retried. On a short, helpers will return ``-EPROTO`` to make it simpler to check for failure.”h]”(hŒ?Helpers will propagate these errors, with the exception of the ”…”�”}”(hjˆYh²hh³Nh´Nubjˆ )�”}”(hŒ ``-EBUSY``”h]”hŒ-EBUSY”…”�”}”(hj�Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjˆYubhŒR error, which causes a transaction to be retried. On a short, helpers will return ”…”�”}”(hjˆYh²hh³Nh´Nubjˆ )�”}”(hŒ ``-EPROTO``”h]”hŒ-EPROTO”…”�”}”(hj¢Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjˆYubhŒ) to make it simpler to check for failure.”…”�”}”(hjˆYh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´MÁhj5YubhÎ)�”}”(hŒ¢The **transfer\(\)** function must only modify the reply field of the :c:type:`drm_dp_aux_msg` structure. The retry logic and i2c helpers assume this is the case.”h]”(hŒThe ”…”�”}”(hj»Yh²hh³Nh´Nubj3 )�”}”(hŒ**transfer\(\)**”h]”hŒ transfer()”…”�”}”(hjÃYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj»YubhŒ2 function must only modify the reply field of the ”…”�”}”(hj»Yh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_dp_aux_msg`”h]”jˆ )�”}”(hj×Yh]”hŒdrm_dp_aux_msg”…”�”}”(hjÙYh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÕYubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_dp_aux_msg”uh1hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´MÆhj»YubhŒD structure. The retry logic and i2c helpers assume this is the case.”…”�”}”(hj»Yh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jôYh´MÆhj5YubhÎ)�”}”(hŒŠAlso note that this callback can be called no matter the state **dev** is in and also no matter what state the panel is in. It's expected:”h]”(hŒ?Also note that this callback can be called no matter the state ”…”�”}”(hjÿYh²hh³Nh´Nubj3 )�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÿYubhŒF is in and also no matter what state the panel is in. It’s expected:”…”�”}”(hjÿYh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´MÊhj5Yubhú)�”}”(hhh]”(hÿ)�”}”(hŒkIf the **dev** providing the AUX bus is currently unpowered then it will power itself up for the transfer. ”h]”hÎ)�”}”(hŒjIf the **dev** providing the AUX bus is currently unpowered then it will power itself up for the transfer.”h]”(hŒIf the ”…”�”}”(hj'Zh²hh³Nh´Nubj3 )�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hj/Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj'ZubhŒ\ providing the AUX bus is currently unpowered then it will power itself up for the transfer.”…”�”}”(hj'Zh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´MÎhj#Zubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj Zubhÿ)�”}”(hXIf we're on eDP (using a drm_panel) and the panel is not in a state where it can respond (it's not powered or it's in a low power state) then this function may return an error, but not crash. It's up to the caller of this code to make sure that the panel is powered on if getting an error back is not OK. If a drm_panel driver is initiating a DP AUX transfer it may power itself up however it wants. All other code should ensure that the pre_enable() bridge chain (which eventually calls the drm_panel prepare function) has powered the panel. ”h]”hÎ)�”}”(hXIf we're on eDP (using a drm_panel) and the panel is not in a state where it can respond (it's not powered or it's in a low power state) then this function may return an error, but not crash. It's up to the caller of this code to make sure that the panel is powered on if getting an error back is not OK. If a drm_panel driver is initiating a DP AUX transfer it may power itself up however it wants. All other code should ensure that the pre_enable() bridge chain (which eventually calls the drm_panel prepare function) has powered the panel.”h]”hX&If we’re on eDP (using a drm_panel) and the panel is not in a state where it can respond (it’s not powered or it’s in a low power state) then this function may return an error, but not crash. It’s up to the caller of this code to make sure that the panel is powered on if getting an error back is not OK. If a drm_panel driver is initiating a DP AUX transfer it may power itself up however it wants. All other code should ensure that the pre_enable() bridge chain (which eventually calls the drm_panel prepare function) has powered the panel.”…”�”}”(hjRZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´MÑhjNZubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj Zubeh}”(h]”h ]”h"]”h$]”h&]”jNjÅ<uh1hùh³jGZh´MÎhj5Yubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjYubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j4Yh´MÙhjŸVubj| )�”}”(hXl``wait_hpd_asserted`` wait for HPD to be asserted This is mainly useful for eDP panels drivers to wait for an eDP panel to finish powering on. It is optional for DP AUX controllers to implement this function. It is required for DP AUX endpoints (panel drivers) to call this function after powering up but before doing AUX transfers unless the DP AUX endpoint driver knows that we're not using the AUX controller's HPD. One example of the panel driver not needing to call this is if HPD is hooked up to a GPIO that the panel driver can read directly. If a DP AUX controller does not implement this function then it may still support eDP panels that use the AUX controller's built-in HPD signal by implementing a long wait for HPD in the transfer() callback, though this is deprecated. This function will efficiently wait for the HPD signal to be asserted. The `wait_us` parameter that is passed in says that we know that the HPD signal is expected to be asserted within `wait_us` microseconds. This function could wait for longer than `wait_us` if the logic in the DP controller has a long debouncing time. The important thing is that if this function returns success that the DP controller is ready to send AUX transactions. This function returns 0 if HPD was asserted or -ETIMEDOUT if time expired and HPD wasn't asserted. This function should not print timeout errors to the log. The semantics of this function are designed to match the readx_poll_timeout() function. That means a `wait_us` of 0 means to wait forever. Like readx_poll_timeout(), this function may sleep. NOTE: this function specifically reports the state of the HPD pin that's associated with the DP AUX channel. This is different from the HPD concept in much of the rest of DRM which is more about physical presence of a display. For eDP, for instance, a display is assumed always present even if the HPD pin is deasserted. ”h]”(j‚ )�”}”(hŒ``wait_hpd_asserted``”h]”jˆ )�”}”(hjZh]”hŒwait_hpd_asserted”…”�”}”(hj�Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj}Zubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´MhjyZubjž )�”}”(hhh]”(hÎ)�”}”(hŒwait for HPD to be asserted”h]”hŒwait for HPD to be asserted”…”�”}”(hj˜Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´Mßhj•ZubhÎ)�”}”(hXóThis is mainly useful for eDP panels drivers to wait for an eDP panel to finish powering on. It is optional for DP AUX controllers to implement this function. It is required for DP AUX endpoints (panel drivers) to call this function after powering up but before doing AUX transfers unless the DP AUX endpoint driver knows that we're not using the AUX controller's HPD. One example of the panel driver not needing to call this is if HPD is hooked up to a GPIO that the panel driver can read directly.”h]”hX÷This is mainly useful for eDP panels drivers to wait for an eDP panel to finish powering on. It is optional for DP AUX controllers to implement this function. It is required for DP AUX endpoints (panel drivers) to call this function after powering up but before doing AUX transfers unless the DP AUX endpoint driver knows that we’re not using the AUX controller’s HPD. One example of the panel driver not needing to call this is if HPD is hooked up to a GPIO that the panel driver can read directly.”…”�”}”(hj§Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´Máhj•ZubhÎ)�”}”(hŒéIf a DP AUX controller does not implement this function then it may still support eDP panels that use the AUX controller's built-in HPD signal by implementing a long wait for HPD in the transfer() callback, though this is deprecated.”h]”hŒëIf a DP AUX controller does not implement this function then it may still support eDP panels that use the AUX controller’s built-in HPD signal by implementing a long wait for HPD in the transfer() callback, though this is deprecated.”…”�”}”(hj¶Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´Mêhj•ZubhÎ)�”}”(hX¸This function will efficiently wait for the HPD signal to be asserted. The `wait_us` parameter that is passed in says that we know that the HPD signal is expected to be asserted within `wait_us` microseconds. This function could wait for longer than `wait_us` if the logic in the DP controller has a long debouncing time. The important thing is that if this function returns success that the DP controller is ready to send AUX transactions.”h]”(hŒKThis function will efficiently wait for the HPD signal to be asserted. The ”…”�”}”(hjÅZh²hh³Nh´NubhŒtitle_reference”“”)�”}”(hŒ `wait_us`”h]”hŒwait_us”…”�”}”(hjÏZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍZhjÅZubhŒe parameter that is passed in says that we know that the HPD signal is expected to be asserted within ”…”�”}”(hjÅZh²hh³Nh´NubjÎZ)�”}”(hŒ `wait_us`”h]”hŒwait_us”…”�”}”(hjáZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍZhjÅZubhŒ8 microseconds. This function could wait for longer than ”…”�”}”(hjÅZh²hh³Nh´NubjÎZ)�”}”(hŒ `wait_us`”h]”hŒwait_us”…”�”}”(hjóZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍZhjÅZubhŒµ if the logic in the DP controller has a long debouncing time. The important thing is that if this function returns success that the DP controller is ready to send AUX transactions.”…”�”}”(hjÅZh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´Mïhj•ZubhÎ)�”}”(hŒœThis function returns 0 if HPD was asserted or -ETIMEDOUT if time expired and HPD wasn't asserted. This function should not print timeout errors to the log.”h]”hŒžThis function returns 0 if HPD was asserted or -ETIMEDOUT if time expired and HPD wasn’t asserted. This function should not print timeout errors to the log.”…”�”}”(hj [h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´M÷hj•ZubhÎ)�”}”(hŒ¾The semantics of this function are designed to match the readx_poll_timeout() function. That means a `wait_us` of 0 means to wait forever. Like readx_poll_timeout(), this function may sleep.”h]”(hŒeThe semantics of this function are designed to match the readx_poll_timeout() function. That means a ”…”�”}”(hj[h²hh³Nh´NubjÎZ)�”}”(hŒ `wait_us`”h]”hŒwait_us”…”�”}”(hj#[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÍZhj[ubhŒP of 0 means to wait forever. Like readx_poll_timeout(), this function may sleep.”…”�”}”(hj[h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´Mûhj•ZubhÎ)�”}”(hX@NOTE: this function specifically reports the state of the HPD pin that's associated with the DP AUX channel. This is different from the HPD concept in much of the rest of DRM which is more about physical presence of a display. For eDP, for instance, a display is assumed always present even if the HPD pin is deasserted.”h]”hXBNOTE: this function specifically reports the state of the HPD pin that’s associated with the DP AUX channel. This is different from the HPD concept in much of the rest of DRM which is more about physical presence of a display. For eDP, for instance, a display is assumed always present even if the HPD pin is deasserted.”…”�”}”(hj<[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´Mÿhj•Zubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hjyZubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j”Zh´MhjŸVubj| )�”}”(hŒ=``i2c_nack_count`` Counts I2C NACKs, used for DP validation. ”h]”(j‚ )�”}”(hŒ``i2c_nack_count``”h]”jˆ )�”}”(hj][h]”hŒi2c_nack_count”…”�”}”(hj_[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj[[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´MhjW[ubjž )�”}”(hhh]”hÎ)�”}”(hŒ)Counts I2C NACKs, used for DP validation.”h]”hŒ)Counts I2C NACKs, used for DP validation.”…”�”}”(hjv[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jr[h´Mhjs[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjW[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jr[h´MhjŸVubj| )�”}”(hŒ?``i2c_defer_count`` Counts I2C DEFERs, used for DP validation. ”h]”(j‚ )�”}”(hŒ``i2c_defer_count``”h]”jˆ )�”}”(hj–[h]”hŒi2c_defer_count”…”�”}”(hj˜[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj”[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´M hj�[ubjž )�”}”(hhh]”hÎ)�”}”(hŒ*Counts I2C DEFERs, used for DP validation.”h]”hŒ*Counts I2C DEFERs, used for DP validation.”…”�”}”(hj¯[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j«[h´M hj¬[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj�[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j«[h´M hjŸVubj| )�”}”(hŒB``cec`` struct containing fields used for CEC-Tunneling-over-AUX. ”h]”(j‚ )�”}”(hŒ``cec``”h]”jˆ )�”}”(hjÏ[h]”hŒcec”…”�”}”(hjÑ[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÍ[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´MhjÉ[ubjž )�”}”(hhh]”hÎ)�”}”(hŒ9struct containing fields used for CEC-Tunneling-over-AUX.”h]”hŒ9struct containing fields used for CEC-Tunneling-over-AUX.”…”�”}”(hjè[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jä[h´Mhjå[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÉ[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jä[h´MhjŸVubj| )�”}”(hŒ@``is_remote`` Is this AUX CH actually using sideband messaging. ”h]”(j‚ )�”}”(hŒ ``is_remote``”h]”jˆ )�”}”(hj\h]”hŒ is_remote”…”�”}”(hj \h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj\ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´Mhj\ubjž )�”}”(hhh]”hÎ)�”}”(hŒ1Is this AUX CH actually using sideband messaging.”h]”hŒ1Is this AUX CH actually using sideband messaging.”…”�”}”(hj!\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j\h´Mhj\ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j\h´MhjŸVubj| )�”}”(hŒC``powered_down`` If true then the remote endpoint is powered down. ”h]”(j‚ )�”}”(hŒ``powered_down``”h]”jˆ )�”}”(hjA\h]”hŒ powered_down”…”�”}”(hjC\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj?\ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´Mhj;\ubjž )�”}”(hhh]”hÎ)�”}”(hŒ1If true then the remote endpoint is powered down.”h]”hŒ1If true then the remote endpoint is powered down.”…”�”}”(hjZ\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jV\h´MhjW\ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj;\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jV\h´MhjŸVubj| )�”}”(hŒD``no_zero_sized`` If the hw can't use zero sized transfers (NVIDIA) ”h]”(j‚ )�”}”(hŒ``no_zero_sized``”h]”jˆ )�”}”(hjz\h]”hŒ no_zero_sized”…”�”}”(hj|\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjx\ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´Mhjt\ubjž )�”}”(hhh]”hÎ)�”}”(hŒ1If the hw can't use zero sized transfers (NVIDIA)”h]”hŒ3If the hw can’t use zero sized transfers (NVIDIA)”…”�”}”(hj“\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j�\h´Mhj�\ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjt\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j�\h´MhjŸVubj| )�”}”(hŒD``dpcd_probe_disabled`` If probing before a DPCD access is disabled.”h]”(j‚ )�”}”(hŒ``dpcd_probe_disabled``”h]”jˆ )�”}”(hj³\h]”hŒdpcd_probe_disabled”…”�”}”(hjµ\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj±\ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´M"hj­\ubjž )�”}”(hhh]”hÎ)�”}”(hŒ,If probing before a DPCD access is disabled.”h]”hŒ,If probing before a DPCD access is disabled.”…”�”}”(hjÌ\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´M#hjÉ\ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj­\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÈ\h´M"hjŸVubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjWVubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´NubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjö\h]”hŒ Description”…”�”}”(hjø\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjô\ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´M&hjÎ9h²hubhÎ)�”}”(hXRAn AUX channel can also be used to transport I2C messages to a sink. A typical application of that is to access an EDID that's present in the sink device. The **transfer\(\)** function can also be used to execute such transactions. The drm_dp_aux_register() function registers an I2C adapter that can be passed to drm_probe_ddc(). Upon removal, drivers should call drm_dp_aux_unregister() to remove the I2C adapter. The I2C adapter uses long transfers by default; if a partial response is received, the adapter will drop down to the size given by the partial response for this transaction only.”h]”(hŒ¡An AUX channel can also be used to transport I2C messages to a sink. A typical application of that is to access an EDID that’s present in the sink device. The ”…”�”}”(hj ]h²hh³Nh´Nubj3 )�”}”(hŒ**transfer\(\)**”h]”hŒ transfer()”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj ]ubhX£ function can also be used to execute such transactions. The drm_dp_aux_register() function registers an I2C adapter that can be passed to drm_probe_ddc(). Upon removal, drivers should call drm_dp_aux_unregister() to remove the I2C adapter. The I2C adapter uses long transfers by default; if a partial response is received, the adapter will drop down to the size given by the partial response for this transaction only.”…”�”}”(hj ]h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´MmhjÎ9h²hubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_dp_dpcd_readb (C function)”Œc.drm_dp_dpcd_readb”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒSssize_t drm_dp_dpcd_readb (struct drm_dp_aux *aux, unsigned int offset, u8 *valuep)”h]”j¤ )�”}”(hŒRssize_t drm_dp_dpcd_readb(struct drm_dp_aux *aux, unsigned int offset, u8 *valuep)”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒssize_t”h]”hŒssize_t”…”�”}”(hjI]h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjF]ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jK]Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jŒdrm_dp_dpcd_readb”sbŒc.drm_dp_dpcd_readb”†”asbuh1hhjB]h²hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´M0ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjk]h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjB]h²hh³jj]h´M0ubjÍ )�”}”(hŒdrm_dp_dpcd_readb”h]”jÓ )�”}”(hjg]h]”hŒdrm_dp_dpcd_readb”…”�”}”(hj}]h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjy]ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjB]h²hh³jj]h´M0ubjÞ)�”}”(hŒ9(struct drm_dp_aux *aux, unsigned int offset, u8 *valuep)”h]”(jä)�”}”(hŒstruct drm_dp_aux *aux”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Œ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(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ï ]”je]Œc.drm_dp_dpcd_readb”†”asbuh1hhj”]ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔ]h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj”]ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjâ]h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj”]ubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hjï]h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj”]ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj�]ubjä)�”}”(hŒunsigned int offset”h]”(j¦)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(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Œint”h]”hŒint”…”�”}”(hj$^h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj^ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2^h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj^ubjÓ )�”}”(hŒoffset”h]”hŒoffset”…”�”}”(hj@^h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj^ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj�]ubjä)�”}”(hŒ u8 *valuep”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(hj\^h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjY^ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j^^Œmodname”NŒ classname”Njé jì )�”}”jï ]”je]Œc.drm_dp_dpcd_readb”†”asbuh1hhjU^ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjz^h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjU^ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjˆ^h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjU^ubjÓ )�”}”(hŒvaluep”h]”hŒvaluep”…”�”}”(hj•^h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjU^ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj�]ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjB]h²hh³jj]h´M0ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj>]h²hh³jj]h´M0ubah}”(h]”j9]ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jj]h´M0hj;]h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ read a single byte from the DPCD”h]”hŒ read a single byte from the DPCD”…”�”}”(hj¿^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´M0hj¼^h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj;]h²hh³jj]h´M0ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j×^j$ j×^j% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hX‚**Parameters** ``struct drm_dp_aux *aux`` DisplayPort AUX channel ``unsigned int offset`` address of the register to read ``u8 *valuep`` location where the value of the register will be stored **Description** Returns the number of bytes transferred (1) on success, or a negative error code on failure. In most of the cases you should be using drm_dp_dpcd_read_byte() instead.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjá^h]”hŒ Parameters”…”�”}”(hjã^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjß^ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´M4hjÛ^ubjw )�”}”(hhh]”(j| )�”}”(hŒ3``struct drm_dp_aux *aux`` DisplayPort AUX channel ”h]”(j‚ )�”}”(hŒ``struct drm_dp_aux *aux``”h]”jˆ )�”}”(hj_h]”hŒstruct drm_dp_aux *aux”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjþ^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´M1hjú^ubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort AUX channel”h]”hŒDisplayPort AUX channel”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j_h´M1hj_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjú^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j_h´M1hj÷^ubj| )�”}”(hŒ8``unsigned int offset`` address of the register to read ”h]”(j‚ )�”}”(hŒ``unsigned int offset``”h]”jˆ )�”}”(hj9_h]”hŒunsigned int offset”…”�”}”(hj;_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj7_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´M2hj3_ubjž )�”}”(hhh]”hÎ)�”}”(hŒaddress of the register to read”h]”hŒaddress of the register to read”…”�”}”(hjR_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jN_h´M2hjO_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj3_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jN_h´M2hj÷^ubj| )�”}”(hŒG``u8 *valuep`` location where the value of the register will be stored ”h]”(j‚ )�”}”(hŒ``u8 *valuep``”h]”jˆ )�”}”(hjr_h]”hŒ u8 *valuep”…”�”}”(hjt_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjp_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´M3hjl_ubjž )�”}”(hhh]”hÎ)�”}”(hŒ7location where the value of the register will be stored”h]”hŒ7location where the value of the register will be stored”…”�”}”(hj‹_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j‡_h´M3hjˆ_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjl_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j‡_h´M3hj÷^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÛ^ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj­_h]”hŒ Description”…”�”}”(hj¯_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj«_ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´M5hjÛ^ubhÎ)�”}”(hŒ¦Returns the number of bytes transferred (1) on success, or a negative error code on failure. In most of the cases you should be using drm_dp_dpcd_read_byte() instead.”h]”hŒ¦Returns the number of bytes transferred (1) on success, or a negative error code on failure. In most of the cases you should be using drm_dp_dpcd_read_byte() instead.”…”�”}”(hjÃ_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´M4hjÛ^ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ"drm_dp_dpcd_read_data (C function)”Œc.drm_dp_dpcd_read_data”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒbint drm_dp_dpcd_read_data (struct drm_dp_aux *aux, unsigned int offset, void *buffer, size_t size)”h]”j¤ )�”}”(hŒaint drm_dp_dpcd_read_data(struct drm_dp_aux *aux, unsigned int offset, void *buffer, size_t size)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjò_h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjî_h²hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”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Œdrm_dp_dpcd_read_data”h]”jÓ )�”}”(hŒdrm_dp_dpcd_read_data”h]”hŒdrm_dp_dpcd_read_data”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj`ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjî_h²hh³j`h´M@ubjÞ)�”}”(hŒH(struct drm_dp_aux *aux, unsigned int offset, void *buffer, size_t size)”h]”(jä)�”}”(hŒstruct drm_dp_aux *aux”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Œ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(hjM`h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjJ`ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jO`Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj`sbŒc.drm_dp_dpcd_read_data”†”asbuh1hhj+`ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjm`h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj+`ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj{`h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj+`ubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hjˆ`h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj+`ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj'`ubjä)�”}”(hŒunsigned int offset”h]”(j¦)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(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Œint”h]”hŒint”…”�”}”(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Œoffset”h]”hŒoffset”…”�”}”(hjÙ`h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj�`ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj'`ubjä)�”}”(hŒ void *buffer”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjò`h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjî`ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjî`ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjî`ubjÓ )�”}”(hŒbuffer”h]”hŒbuffer”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjî`ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj'`ubjä)�”}”(hŒ size_t size”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj7ah²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj4aubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j9aŒmodname”NŒ classname”Njé jì )�”}”jï ]”ji`Œc.drm_dp_dpcd_read_data”†”asbuh1hhj0aubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjUah²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj0aubjÓ )�”}”(hŒsize”h]”hŒsize”…”�”}”(hjcah²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj0aubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj'`ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjî_h²hh³j`h´M@ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ$read a series of bytes from the DPCD”h]”hŒ$read a series of bytes from the DPCD”…”�”}”(hj�ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´M@hjŠah²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¥aj$ j¥aj% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hX�**Parameters** ``struct drm_dp_aux *aux`` DisplayPort AUX channel (SST or MST) ``unsigned int offset`` address of the (first) register to read ``void *buffer`` buffer to store the register values ``size_t size`` number of bytes in **buffer** **Description** Returns zero (0) on success, or a negative error code on failure. -EIO is returned if the request was NAKed by the sink or if the retry count was exceeded. If not all bytes were transferred, this function returns -EPROTO. Errors from the underlying AUX channel transfer function, with the exception of -EBUSY (which causes the transaction to be retried), are propagated to the caller.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj¯ah]”hŒ Parameters”…”�”}”(hj±ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj­aubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´MDhj©aubjw )�”}”(hhh]”(j| )�”}”(hŒ@``struct drm_dp_aux *aux`` DisplayPort AUX channel (SST or MST) ”h]”(j‚ )�”}”(hŒ``struct drm_dp_aux *aux``”h]”jˆ )�”}”(hjÎah]”hŒstruct drm_dp_aux *aux”…”�”}”(hjÐah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÌaubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´MAhjÈaubjž )�”}”(hhh]”hÎ)�”}”(hŒ$DisplayPort AUX channel (SST or MST)”h]”hŒ$DisplayPort AUX channel (SST or MST)”…”�”}”(hjçah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jãah´MAhjäaubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÈaubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jãah´MAhjÅaubj| )�”}”(hŒ@``unsigned int offset`` address of the (first) register to read ”h]”(j‚ )�”}”(hŒ``unsigned int offset``”h]”jˆ )�”}”(hjbh]”hŒunsigned int offset”…”�”}”(hj bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjbubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´MBhjbubjž )�”}”(hhh]”hÎ)�”}”(hŒ'address of the (first) register to read”h]”hŒ'address of the (first) register to read”…”�”}”(hj bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jbh´MBhjbubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjbubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jbh´MBhjÅaubj| )�”}”(hŒ5``void *buffer`` buffer to store the register values ”h]”(j‚ )�”}”(hŒ``void *buffer``”h]”jˆ )�”}”(hj@bh]”hŒ void *buffer”…”�”}”(hjBbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj>bubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´MChj:bubjž )�”}”(hhh]”hÎ)�”}”(hŒ#buffer to store the register values”h]”hŒ#buffer to store the register values”…”�”}”(hjYbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jUbh´MChjVbubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj:bubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jUbh´MChjÅaubj| )�”}”(hŒ.``size_t size`` number of bytes in **buffer** ”h]”(j‚ )�”}”(hŒ``size_t size``”h]”jˆ )�”}”(hjybh]”hŒ size_t size”…”�”}”(hj{bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjwbubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´MDhjsbubjž )�”}”(hhh]”hÎ)�”}”(hŒnumber of bytes in **buffer**”h]”(hŒnumber of bytes in ”…”�”}”(hj’bh²hh³Nh´Nubj3 )�”}”(hŒ **buffer**”h]”hŒbuffer”…”�”}”(hjšbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj’bubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jŽbh´MDhj�bubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjsbubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jŽbh´MDhjÅaubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj©aubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjÂbh]”hŒ Description”…”�”}”(hjÄbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÀbubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´MFhj©aubhÎ)�”}”(hX€Returns zero (0) on success, or a negative error code on failure. -EIO is returned if the request was NAKed by the sink or if the retry count was exceeded. If not all bytes were transferred, this function returns -EPROTO. Errors from the underlying AUX channel transfer function, with the exception of -EBUSY (which causes the transaction to be retried), are propagated to the caller.”h]”hX€Returns zero (0) on success, or a negative error code on failure. -EIO is returned if the request was NAKed by the sink or if the retry count was exceeded. If not all bytes were transferred, this function returns -EPROTO. Errors from the underlying AUX channel transfer function, with the exception of -EBUSY (which causes the transaction to be retried), are propagated to the caller.”…”�”}”(hjØbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´MEhj©aubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ#drm_dp_dpcd_write_data (C function)”Œc.drm_dp_dpcd_write_data”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒcint drm_dp_dpcd_write_data (struct drm_dp_aux *aux, unsigned int offset, void *buffer, size_t size)”h]”j¤ )�”}”(hŒbint drm_dp_dpcd_write_data(struct drm_dp_aux *aux, unsigned int offset, void *buffer, size_t size)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjch²hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´Mnubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjch²hh³jch´MnubjÍ )�”}”(hŒdrm_dp_dpcd_write_data”h]”jÓ )�”}”(hŒdrm_dp_dpcd_write_data”h]”hŒdrm_dp_dpcd_write_data”…”�”}”(hj(ch²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj$cubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjch²hh³jch´MnubjÞ)�”}”(hŒH(struct drm_dp_aux *aux, unsigned int offset, void *buffer, size_t size)”h]”(jä)�”}”(hŒstruct drm_dp_aux *aux”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjDch²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj@cubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQch²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj@cubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(hjbch²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj_cubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jdcŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj*csbŒc.drm_dp_dpcd_write_data”†”asbuh1hhj@cubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚ch²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj@cubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj�ch²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj@cubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hj�ch²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj@cubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjnubjN )�”}”(hŒKstruct drm_dp_desc { struct drm_dp_dpcd_ident ident; u32 quirks; };”h]”hŒKstruct drm_dp_desc { struct drm_dp_dpcd_ident ident; u32 quirks; };”…”�”}”hj_nsbah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jM h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´Mhj>nubhÎ)�”}”(hŒ **Members**”h]”j3 )�”}”(hjpnh]”hŒMembers”…”�”}”(hjrnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjnnubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´M$hj>nubjw )�”}”(hhh]”(j| )�”}”(hŒM``ident`` DP device identification from DPCD 0x400 (sink) or 0x500 (branch). ”h]”(j‚ )�”}”(hŒ ``ident``”h]”jˆ )�”}”(hj�nh]”hŒident”…”�”}”(hj‘nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj�nubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´Mhj‰nubjž )�”}”(hhh]”hÎ)�”}”(hŒBDP device identification from DPCD 0x400 (sink) or 0x500 (branch).”h]”hŒBDP device identification from DPCD 0x400 (sink) or 0x500 (branch).”…”�”}”(hj¨nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¤nh´Mhj¥nubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj‰nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¤nh´Mhj†nubj| )�”}”(hŒB``quirks`` Quirks; use drm_dp_has_quirk() to query for the quirks.”h]”(j‚ )�”}”(hŒ ``quirks``”h]”jˆ )�”}”(hjÈnh]”hŒquirks”…”�”}”(hjÊnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÆnubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´MhjÂnubjž )�”}”(hhh]”hÎ)�”}”(hŒ7Quirks; use drm_dp_has_quirk() to query for the quirks.”h]”hŒ7Quirks; use drm_dp_has_quirk() to query for the quirks.”…”�”}”(hjánh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´MhjÞnubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÂnubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÝnh´Mhj†nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj>nubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_dp_quirk (C enum)”Œc.drm_dp_quirk”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ drm_dp_quirk”h]”j¤ )�”}”(hŒenum drm_dp_quirk”h]”(jª )�”}”(hjÂ7h]”hŒenum”…”�”}”(hj"oh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjoh²hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´M"ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0oh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjoh²hh³j/oh´M"ubjÍ )�”}”(hŒ drm_dp_quirk”h]”jÓ )�”}”(hjoh]”hŒ drm_dp_quirk”…”�”}”(hjBoh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj>oubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjoh²hh³j/oh´M"ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjoh²hh³j/oh´M"ubah}”(h]”joah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j/oh´M"hjoh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ/Display Port sink/branch device specific quirks”h]”hŒ/Display Port sink/branch device specific quirks”…”�”}”(hjdoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´M(hjaoh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjoh²hh³j/oh´M"ubeh}”(h]”h ]”(j Œenum”eh"]”h$]”h&]”j" j j# j|oj$ j|oj% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hX@**Constants** ``DP_DPCD_QUIRK_CONSTANT_N`` The device requires main link attributes Mvid and Nvid to be limited to 16 bits. So will give a constant value (0x8000) for compatability. ``DP_DPCD_QUIRK_NO_PSR`` The device does not support PSR even if reports that it supports or driver still need to implement proper handling for such device. ``DP_DPCD_QUIRK_NO_SINK_COUNT`` The device does not set SINK_COUNT to a non-zero value. The driver should ignore SINK_COUNT during detection. Note that drm_dp_read_sink_count_cap() automatically checks for this quirk. ``DP_DPCD_QUIRK_DSC_WITHOUT_VIRTUAL_DPCD`` The device supports MST DSC despite not supporting Virtual DPCD. The DSC caps can be read from the physical aux instead. ``DP_DPCD_QUIRK_CAN_DO_MAX_LINK_RATE_3_24_GBPS`` The device supports a link rate of 3.24 Gbps (multiplier 0xc) despite the DP_MAX_LINK_RATE register reporting a lower max multiplier. ``DP_DPCD_QUIRK_HBLANK_EXPANSION_REQUIRES_DSC`` The device applies HBLANK expansion for some modes, but this requires enabling DSC. ``DP_DPCD_QUIRK_DSC_THROUGHPUT_BPP_LIMIT`` The device doesn't support DSC decompression at the maximum DSC pixel throughput and compressed bpp it indicates via its DPCD DSC capabilities. The compressed bpp must be limited above a device specific DSC pixel throughput.”h]”(hÎ)�”}”(hŒ **Constants**”h]”j3 )�”}”(hj†oh]”hŒ Constants”…”�”}”(hjˆoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj„oubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´M,hj€oubjw )�”}”(hhh]”(j| )�”}”(hŒ¨``DP_DPCD_QUIRK_CONSTANT_N`` The device requires main link attributes Mvid and Nvid to be limited to 16 bits. So will give a constant value (0x8000) for compatability. ”h]”(j‚ )�”}”(hŒ``DP_DPCD_QUIRK_CONSTANT_N``”h]”jˆ )�”}”(hj¥oh]”hŒDP_DPCD_QUIRK_CONSTANT_N”…”�”}”(hj§oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj£oubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´M0hjŸoubjž )�”}”(hhh]”hÎ)�”}”(hŒŠThe device requires main link attributes Mvid and Nvid to be limited to 16 bits. So will give a constant value (0x8000) for compatability.”h]”hŒŠThe device requires main link attributes Mvid and Nvid to be limited to 16 bits. So will give a constant value (0x8000) for compatability.”…”�”}”(hj¾oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´M/hj»oubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjŸoubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jºoh´M0hjœoubj| )�”}”(hŒ�``DP_DPCD_QUIRK_NO_PSR`` The device does not support PSR even if reports that it supports or driver still need to implement proper handling for such device. ”h]”(j‚ )�”}”(hŒ``DP_DPCD_QUIRK_NO_PSR``”h]”jˆ )�”}”(hjßoh]”hŒDP_DPCD_QUIRK_NO_PSR”…”�”}”(hjáoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÝoubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´M4hjÙoubjž )�”}”(hhh]”hÎ)�”}”(hŒƒThe device does not support PSR even if reports that it supports or driver still need to implement proper handling for such device.”h]”hŒƒThe device does not support PSR even if reports that it supports or driver still need to implement proper handling for such device.”…”�”}”(hjøoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´M3hjõoubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÙoubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jôoh´M4hjœoubj| )�”}”(hŒÚ``DP_DPCD_QUIRK_NO_SINK_COUNT`` The device does not set SINK_COUNT to a non-zero value. The driver should ignore SINK_COUNT during detection. Note that drm_dp_read_sink_count_cap() automatically checks for this quirk. ”h]”(j‚ )�”}”(hŒ``DP_DPCD_QUIRK_NO_SINK_COUNT``”h]”jˆ )�”}”(hjph]”hŒDP_DPCD_QUIRK_NO_SINK_COUNT”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjpubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´M9hjpubjž )�”}”(hhh]”hÎ)�”}”(hŒ¹The device does not set SINK_COUNT to a non-zero value. The driver should ignore SINK_COUNT during detection. Note that drm_dp_read_sink_count_cap() automatically checks for this quirk.”h]”hŒ¹The device does not set SINK_COUNT to a non-zero value. The driver should ignore SINK_COUNT during detection. Note that drm_dp_read_sink_count_cap() automatically checks for this quirk.”…”�”}”(hj2ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´M7hj/pubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjpubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j.ph´M9hjœoubj| )�”}”(hŒ¤``DP_DPCD_QUIRK_DSC_WITHOUT_VIRTUAL_DPCD`` The device supports MST DSC despite not supporting Virtual DPCD. The DSC caps can be read from the physical aux instead. ”h]”(j‚ )�”}”(hŒ*``DP_DPCD_QUIRK_DSC_WITHOUT_VIRTUAL_DPCD``”h]”jˆ )�”}”(hjSph]”hŒ&DP_DPCD_QUIRK_DSC_WITHOUT_VIRTUAL_DPCD”…”�”}”(hjUph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjQpubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´M=hjMpubjž )�”}”(hhh]”hÎ)�”}”(hŒxThe device supports MST DSC despite not supporting Virtual DPCD. The DSC caps can be read from the physical aux instead.”h]”hŒxThe device supports MST DSC despite not supporting Virtual DPCD. The DSC caps can be read from the physical aux instead.”…”�”}”(hjlph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´M<hjipubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjMpubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jhph´M=hjœoubj| )�”}”(hŒ·``DP_DPCD_QUIRK_CAN_DO_MAX_LINK_RATE_3_24_GBPS`` The device supports a link rate of 3.24 Gbps (multiplier 0xc) despite the DP_MAX_LINK_RATE register reporting a lower max multiplier. ”h]”(j‚ )�”}”(hŒ0``DP_DPCD_QUIRK_CAN_DO_MAX_LINK_RATE_3_24_GBPS``”h]”jˆ )�”}”(hj�ph]”hŒ,DP_DPCD_QUIRK_CAN_DO_MAX_LINK_RATE_3_24_GBPS”…”�”}”(hj�ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj‹pubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´MAhj‡pubjž )�”}”(hhh]”hÎ)�”}”(hŒ…The device supports a link rate of 3.24 Gbps (multiplier 0xc) despite the DP_MAX_LINK_RATE register reporting a lower max multiplier.”h]”hŒ…The device supports a link rate of 3.24 Gbps (multiplier 0xc) despite the DP_MAX_LINK_RATE register reporting a lower max multiplier.”…”�”}”(hj¦ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´M@hj£pubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj‡pubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¢ph´MAhjœoubj| )�”}”(hŒ„``DP_DPCD_QUIRK_HBLANK_EXPANSION_REQUIRES_DSC`` The device applies HBLANK expansion for some modes, but this requires enabling DSC. ”h]”(j‚ )�”}”(hŒ/``DP_DPCD_QUIRK_HBLANK_EXPANSION_REQUIRES_DSC``”h]”jˆ )�”}”(hjÇph]”hŒ+DP_DPCD_QUIRK_HBLANK_EXPANSION_REQUIRES_DSC”…”�”}”(hjÉph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÅpubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´MEhjÁpubjž )�”}”(hhh]”hÎ)�”}”(hŒSThe device applies HBLANK expansion for some modes, but this requires enabling DSC.”h]”hŒSThe device applies HBLANK expansion for some modes, but this requires enabling DSC.”…”�”}”(hjàph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´MDhjÝpubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÁpubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÜph´MEhjœoubj| )�”}”(hX ``DP_DPCD_QUIRK_DSC_THROUGHPUT_BPP_LIMIT`` The device doesn't support DSC decompression at the maximum DSC pixel throughput and compressed bpp it indicates via its DPCD DSC capabilities. The compressed bpp must be limited above a device specific DSC pixel throughput.”h]”(j‚ )�”}”(hŒ*``DP_DPCD_QUIRK_DSC_THROUGHPUT_BPP_LIMIT``”h]”jˆ )�”}”(hjqh]”hŒ&DP_DPCD_QUIRK_DSC_THROUGHPUT_BPP_LIMIT”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÿpubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´MJhjûpubjž )�”}”(hhh]”hÎ)�”}”(hŒàThe device doesn't support DSC decompression at the maximum DSC pixel throughput and compressed bpp it indicates via its DPCD DSC capabilities. The compressed bpp must be limited above a device specific DSC pixel throughput.”h]”hŒâThe device doesn’t support DSC decompression at the maximum DSC pixel throughput and compressed bpp it indicates via its DPCD DSC capabilities. The compressed bpp must be limited above a device specific DSC pixel throughput.”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´MHhjqubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjûpubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jqh´MJhjœoubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj€oubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´NubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjDqh]”hŒ Description”…”�”}”(hjFqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjBqubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´MMhjÎ9h²hubhÎ)�”}”(hŒ·Display Port sink and branch devices in the wild have a variety of bugs, try to collect them here. The quirks are shared, but it's up to the drivers to implement workarounds for them.”h]”hŒ¹Display Port sink and branch devices in the wild have a variety of bugs, try to collect them here. The quirks are shared, but it’s up to the drivers to implement workarounds for them.”…”�”}”(hjZqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´M)hjÎ9h²hubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_dp_has_quirk (C function)”Œc.drm_dp_has_quirk”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒObool drm_dp_has_quirk (const struct drm_dp_desc *desc, enum drm_dp_quirk quirk)”h]”j¤ )�”}”(hŒNbool drm_dp_has_quirk(const struct drm_dp_desc *desc, enum drm_dp_quirk quirk)”h]”(j¦)�”}”(hj£Ih]”hŒbool”…”�”}”(hj‚qh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj~qh²hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´Mfubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�qh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj~qh²hh³j�qh´MfubjÍ )�”}”(hŒdrm_dp_has_quirk”h]”jÓ )�”}”(hŒdrm_dp_has_quirk”h]”hŒdrm_dp_has_quirk”…”�”}”(hj¢qh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjžqubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj~qh²hh³j�qh´MfubjÞ)�”}”(hŒ9(const struct drm_dp_desc *desc, enum drm_dp_quirk quirk)”h]”(jä)�”}”(hŒconst struct drm_dp_desc *desc”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hj¾qh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjºqubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjËqh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjºqubjª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjÙqh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjºqubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæqh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjºqubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_dp_desc”h]”hŒ drm_dp_desc”…”�”}”(hj÷qh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjôqubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jùqŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj¤qsbŒc.drm_dp_has_quirk”†”asbuh1hhjºqubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjºqubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj%rh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjºqubjÓ )�”}”(hŒdesc”h]”hŒdesc”…”�”}”(hj2rh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjºqubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¶qubjä)�”}”(hŒenum drm_dp_quirk quirk”h]”(jª )�”}”(hjÂ7h]”hŒenum”…”�”}”(hjKrh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjGrubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXrh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjGrubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_dp_quirk”h]”hŒ drm_dp_quirk”…”�”}”(hjirh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjfrubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jkrŒmodname”NŒ classname”Njé jì )�”}”jï ]”jrŒc.drm_dp_has_quirk”†”asbuh1hhjGrubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡rh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjGrubjÓ )�”}”(hŒquirk”h]”hŒquirk”…”�”}”(hj•rh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjGrubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¶qubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj~qh²hh³j�qh´Mfubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjzqh²hh³j�qh´Mfubah}”(h]”juqah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j�qh´Mfhjwqh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ(does the DP device have a specific quirk”h]”hŒ(does the DP device have a specific quirk”…”�”}”(hj¿rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´Mfhj¼rh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjwqh²hh³j�qh´Mfubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j×rj$ j×rj% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hŒæ**Parameters** ``const struct drm_dp_desc *desc`` Device descriptor filled by drm_dp_read_desc() ``enum drm_dp_quirk quirk`` Quirk to query for **Description** Return true if DP device identified by **desc** has **quirk**.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjárh]”hŒ Parameters”…”�”}”(hjãrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjßrubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´MjhjÛrubjw )�”}”(hhh]”(j| )�”}”(hŒR``const struct drm_dp_desc *desc`` Device descriptor filled by drm_dp_read_desc() ”h]”(j‚ )�”}”(hŒ"``const struct drm_dp_desc *desc``”h]”jˆ )�”}”(hjsh]”hŒconst struct drm_dp_desc *desc”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjþrubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´Mghjúrubjž )�”}”(hhh]”hÎ)�”}”(hŒ.Device descriptor filled by drm_dp_read_desc()”h]”hŒ.Device descriptor filled by drm_dp_read_desc()”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jsh´Mghjsubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjúrubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jsh´Mghj÷rubj| )�”}”(hŒ/``enum drm_dp_quirk quirk`` Quirk to query for ”h]”(j‚ )�”}”(hŒ``enum drm_dp_quirk quirk``”h]”jˆ )�”}”(hj9sh]”hŒenum drm_dp_quirk quirk”…”�”}”(hj;sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj7subah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´Mhhj3subjž )�”}”(hhh]”hÎ)�”}”(hŒQuirk to query for”h]”hŒQuirk to query for”…”�”}”(hjRsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jNsh´MhhjOsubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj3subeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jNsh´Mhhj÷rubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÛrubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjtsh]”hŒ Description”…”�”}”(hjvsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjrsubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´MjhjÛrubhÎ)�”}”(hŒ>Return true if DP device identified by **desc** has **quirk**.”h]”(hŒ'Return true if DP device identified by ”…”�”}”(hjŠsh²hh³Nh´Nubj3 )�”}”(hŒ**desc**”h]”hŒdesc”…”�”}”(hj’sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjŠsubhŒ has ”…”�”}”(hjŠsh²hh³Nh´Nubj3 )�”}”(hŒ **quirk**”h]”hŒquirk”…”�”}”(hj¤sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjŠsubhŒ.”…”�”}”(hjŠsh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´MihjÛrubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ!drm_edp_backlight_info (C struct)”Œc.drm_edp_backlight_info”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒdrm_edp_backlight_info”h]”j¤ )�”}”(hŒstruct drm_edp_backlight_info”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjÝsh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjÙsh²hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´Mnubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjësh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÙsh²hh³jêsh´MnubjÍ )�”}”(hŒdrm_edp_backlight_info”h]”jÓ )�”}”(hj×sh]”hŒdrm_edp_backlight_info”…”�”}”(hjýsh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjùsubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÙsh²hh³jêsh´Mnubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjÕsh²hh³jêsh´Mnubah}”(h]”jÐsah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jêsh´MnhjÒsh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ Probed eDP backlight info struct”h]”hŒ Probed eDP backlight info struct”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´Mshjth²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÒsh²hh³jêsh´Mnubeh}”(h]”h ]”(j Œstruct”eh"]”h$]”h&]”j" j j# j7tj$ j7tj% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hX**Definition**:: struct drm_edp_backlight_info { u8 pwmgen_bit_count; u8 pwm_freq_pre_divider; u32 max; bool lsb_reg_used : 1; bool aux_enable : 1; bool aux_set : 1; bool luminance_set : 1; }; **Members** ``pwmgen_bit_count`` The pwmgen bit count ``pwm_freq_pre_divider`` The PWM frequency pre-divider value being used for this backlight, if any ``max`` The maximum backlight level that may be set ``lsb_reg_used`` Do we also write values to the DP_EDP_BACKLIGHT_BRIGHTNESS_LSB register? ``aux_enable`` Does the panel support the AUX enable cap? ``aux_set`` Does the panel support setting the brightness through AUX? ``luminance_set`` Does the panel support setting the brightness through AUX using luminance values?”h]”(hÎ)�”}”(hŒ**Definition**::”h]”(j3 )�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjCth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj?tubhŒ:”…”�”}”(hj?th²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´Mwhj;tubjN )�”}”(hŒËstruct drm_edp_backlight_info { u8 pwmgen_bit_count; u8 pwm_freq_pre_divider; u32 max; bool lsb_reg_used : 1; bool aux_enable : 1; bool aux_set : 1; bool luminance_set : 1; };”h]”hŒËstruct drm_edp_backlight_info { u8 pwmgen_bit_count; u8 pwm_freq_pre_divider; u32 max; bool lsb_reg_used : 1; bool aux_enable : 1; bool aux_set : 1; bool luminance_set : 1; };”…”�”}”hj\tsbah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jM h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´Myhj;tubhÎ)�”}”(hŒ **Members**”h]”j3 )�”}”(hjmth]”hŒMembers”…”�”}”(hjoth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjktubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´Mƒhj;tubjw )�”}”(hhh]”(j| )�”}”(hŒ*``pwmgen_bit_count`` The pwmgen bit count ”h]”(j‚ )�”}”(hŒ``pwmgen_bit_count``”h]”jˆ )�”}”(hjŒth]”hŒpwmgen_bit_count”…”�”}”(hjŽth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjŠtubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´Muhj†tubjž )�”}”(hhh]”hÎ)�”}”(hŒThe pwmgen bit count”h]”hŒThe pwmgen bit count”…”�”}”(hj¥th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¡th´Muhj¢tubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj†tubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¡th´Muhjƒtubj| )�”}”(hŒc``pwm_freq_pre_divider`` The PWM frequency pre-divider value being used for this backlight, if any ”h]”(j‚ )�”}”(hŒ``pwm_freq_pre_divider``”h]”jˆ )�”}”(hjÅth]”hŒpwm_freq_pre_divider”…”�”}”(hjÇth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÃtubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´Mvhj¿tubjž )�”}”(hhh]”hÎ)�”}”(hŒIThe PWM frequency pre-divider value being used for this backlight, if any”h]”hŒIThe PWM frequency pre-divider value being used for this backlight, if any”…”�”}”(hjÞth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÚth´MvhjÛtubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¿tubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÚth´Mvhjƒtubj| )�”}”(hŒ4``max`` The maximum backlight level that may be set ”h]”(j‚ )�”}”(hŒ``max``”h]”jˆ )�”}”(hjþth]”hŒmax”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjütubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´Mwhjøtubjž )�”}”(hhh]”hÎ)�”}”(hŒ+The maximum backlight level that may be set”h]”hŒ+The maximum backlight level that may be set”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³juh´Mwhjuubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjøtubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³juh´Mwhjƒtubj| )�”}”(hŒZ``lsb_reg_used`` Do we also write values to the DP_EDP_BACKLIGHT_BRIGHTNESS_LSB register? ”h]”(j‚ )�”}”(hŒ``lsb_reg_used``”h]”jˆ )�”}”(hj7uh]”hŒ lsb_reg_used”…”�”}”(hj9uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj5uubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´Mxhj1uubjž )�”}”(hhh]”hÎ)�”}”(hŒHDo we also write values to the DP_EDP_BACKLIGHT_BRIGHTNESS_LSB register?”h]”hŒHDo we also write values to the DP_EDP_BACKLIGHT_BRIGHTNESS_LSB register?”…”�”}”(hjPuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jLuh´MxhjMuubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj1uubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jLuh´Mxhjƒtubj| )�”}”(hŒ:``aux_enable`` Does the panel support the AUX enable cap? ”h]”(j‚ )�”}”(hŒ``aux_enable``”h]”jˆ )�”}”(hjpuh]”hŒ aux_enable”…”�”}”(hjruh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjnuubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´Myhjjuubjž )�”}”(hhh]”hÎ)�”}”(hŒ*Does the panel support the AUX enable cap?”h]”hŒ*Does the panel support the AUX enable cap?”…”�”}”(hj‰uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j…uh´Myhj†uubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjjuubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j…uh´Myhjƒtubj| )�”}”(hŒG``aux_set`` Does the panel support setting the brightness through AUX? ”h]”(j‚ )�”}”(hŒ ``aux_set``”h]”jˆ )�”}”(hj©uh]”hŒaux_set”…”�”}”(hj«uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj§uubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´Mzhj£uubjž )�”}”(hhh]”hÎ)�”}”(hŒ:Does the panel support setting the brightness through AUX?”h]”hŒ:Does the panel support setting the brightness through AUX?”…”�”}”(hjÂuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¾uh´Mzhj¿uubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj£uubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¾uh´Mzhjƒtubj| )�”}”(hŒc``luminance_set`` Does the panel support setting the brightness through AUX using luminance values?”h]”(j‚ )�”}”(hŒ``luminance_set``”h]”jˆ )�”}”(hjâuh]”hŒ luminance_set”…”�”}”(hjäuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjàuubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´MzhjÜuubjž )�”}”(hhh]”hÎ)�”}”(hŒQDoes the panel support setting the brightness through AUX using luminance values?”h]”hŒQDoes the panel support setting the brightness through AUX using luminance values?”…”�”}”(hjûuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´M{hjøuubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÜuubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j÷uh´Mzhjƒtubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj;tubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´NubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj%vh]”hŒ Description”…”�”}”(hj'vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj#vubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´M~hjÎ9h²hubhÎ)�”}”(hŒvThis structure contains various data about an eDP backlight, which can be populated by using drm_edp_backlight_init().”h]”hŒvThis structure contains various data about an eDP backlight, which can be populated by using drm_edp_backlight_init().”…”�”}”(hj;vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´M{hjÎ9h²hubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ!drm_dp_phy_test_params (C struct)”Œc.drm_dp_phy_test_params”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒdrm_dp_phy_test_params”h]”j¤ )�”}”(hŒstruct drm_dp_phy_test_params”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjcvh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj_vh²hh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´M�ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjqvh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj_vh²hh³jpvh´M�ubjÍ )�”}”(hŒdrm_dp_phy_test_params”h]”jÓ )�”}”(hj]vh]”hŒdrm_dp_phy_test_params”…”�”}”(hjƒvh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjvubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj_vh²hh³jpvh´M�ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj[vh²hh³jpvh´M�ubah}”(h]”jVvah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jpvh´M�hjXvh²hubj )�”}”(hhh]”hÎ)�”}”(hŒDP Phy Compliance parameters”h]”hŒDP Phy Compliance parameters”…”�”}”(hj¥vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´MÌhj¢vh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjXvh²hh³jpvh´M�ubeh}”(h]”h ]”(j Œstruct”eh"]”h$]”h&]”j" j j# j½vj$ j½vj% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hX]**Definition**:: struct drm_dp_phy_test_params { int link_rate; u8 num_lanes; u8 phy_pattern; u8 hbr2_reset[2]; u8 custom80[10]; bool enhanced_frame_cap; }; **Members** ``link_rate`` Requested Link rate from DPCD 0x219 ``num_lanes`` Number of lanes requested by sing through DPCD 0x220 ``phy_pattern`` DP Phy test pattern from DPCD 0x248 ``hbr2_reset`` DP HBR2_COMPLIANCE_SCRAMBLER_RESET from DCPD 0x24A and 0x24B ``custom80`` DP Test_80BIT_CUSTOM_PATTERN from DPCDs 0x250 through 0x259 ``enhanced_frame_cap`` flag for enhanced frame capability.”h]”(hÎ)�”}”(hŒ**Definition**::”h]”(j3 )�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjÉvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÅvubhŒ:”…”�”}”(hjÅvh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´MÐhjÁvubjN )�”}”(hŒ£struct drm_dp_phy_test_params { int link_rate; u8 num_lanes; u8 phy_pattern; u8 hbr2_reset[2]; u8 custom80[10]; bool enhanced_frame_cap; };”h]”hŒ£struct drm_dp_phy_test_params { int link_rate; u8 num_lanes; u8 phy_pattern; u8 hbr2_reset[2]; u8 custom80[10]; bool enhanced_frame_cap; };”…”�”}”hjâvsbah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jM h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´MÒhjÁvubhÎ)�”}”(hŒ **Members**”h]”j3 )�”}”(hjóvh]”hŒMembers”…”�”}”(hjõvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjñvubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´MÛhjÁvubjw )�”}”(hhh]”(j| )�”}”(hŒ2``link_rate`` Requested Link rate from DPCD 0x219 ”h]”(j‚ )�”}”(hŒ ``link_rate``”h]”jˆ )�”}”(hjwh]”hŒ link_rate”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjwubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´MÎhj wubjž )�”}”(hhh]”hÎ)�”}”(hŒ#Requested Link rate from DPCD 0x219”h]”hŒ#Requested Link rate from DPCD 0x219”…”�”}”(hj+wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j'wh´MÎhj(wubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj wubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j'wh´MÎhj wubj| )�”}”(hŒC``num_lanes`` Number of lanes requested by sing through DPCD 0x220 ”h]”(j‚ )�”}”(hŒ ``num_lanes``”h]”jˆ )�”}”(hjKwh]”hŒ num_lanes”…”�”}”(hjMwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjIwubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´MÏhjEwubjž )�”}”(hhh]”hÎ)�”}”(hŒ4Number of lanes requested by sing through DPCD 0x220”h]”hŒ4Number of lanes requested by sing through DPCD 0x220”…”�”}”(hjdwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j`wh´MÏhjawubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjEwubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j`wh´MÏhj wubj| )�”}”(hŒ4``phy_pattern`` DP Phy test pattern from DPCD 0x248 ”h]”(j‚ )�”}”(hŒ``phy_pattern``”h]”jˆ )�”}”(hj„wh]”hŒ phy_pattern”…”�”}”(hj†wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj‚wubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´MÐhj~wubjž )�”}”(hhh]”hÎ)�”}”(hŒ#DP Phy test pattern from DPCD 0x248”h]”hŒ#DP Phy test pattern from DPCD 0x248”…”�”}”(hj�wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j™wh´MÐhjšwubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj~wubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j™wh´MÐhj wubj| )�”}”(hŒL``hbr2_reset`` DP HBR2_COMPLIANCE_SCRAMBLER_RESET from DCPD 0x24A and 0x24B ”h]”(j‚ )�”}”(hŒ``hbr2_reset``”h]”jˆ )�”}”(hj½wh]”hŒ hbr2_reset”…”�”}”(hj¿wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj»wubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œh/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:274: ./include/drm/display/drm_dp_helper.h”h´MÑhj·wubjž )�”}”(hhh]”hÎ)�”}”(hŒ", or "" on errors. The returned string is always non-NULL and valid. **Return** Name of the DP PHY.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj†yh]”hŒ Parameters”…”�”}”(hjˆyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj„yubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M§hj€yubjw )�”}”(hhh]”j| )�”}”(hŒ1``enum drm_dp_phy dp_phy`` The DP PHY identifier ”h]”(j‚ )�”}”(hŒ``enum drm_dp_phy dp_phy``”h]”jˆ )�”}”(hj¥yh]”hŒenum drm_dp_phy dp_phy”…”�”}”(hj§yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj£yubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M¤hjŸyubjž )�”}”(hhh]”hÎ)�”}”(hŒThe DP PHY identifier”h]”hŒThe DP PHY identifier”…”�”}”(hj¾yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jºyh´M¤hj»yubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjŸyubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jºyh´M¤hjœyubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj€yubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjàyh]”hŒ Description”…”�”}”(hjâyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÞyubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M¦hj€yubhÎ)�”}”(hŒ®Given the **dp_phy**, get a user friendly name of the DP PHY, either "DPRX" or "LTTPR ", or "" on errors. The returned string is always non-NULL and valid.”h]”(hŒ Given the ”…”�”}”(hjöyh²hh³Nh´Nubj3 )�”}”(hŒ **dp_phy**”h]”hŒdp_phy”…”�”}”(hjþyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjöyubhŒ¦, get a user friendly name of the DP PHY, either “DPRXâ€� or “LTTPR â€�, or “â€� on errors. The returned string is always non-NULL and valid.”…”�”}”(hjöyh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M¥hj€yubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjzh]”hŒReturn”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjzubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M©hj€yubhÎ)�”}”(hŒName of the DP PHY.”h]”hŒName of the DP PHY.”…”�”}”(hj/zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mªhj€yubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ,drm_dp_lttpr_wake_timeout_setup (C function)”Œ!c.drm_dp_lttpr_wake_timeout_setup”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒTvoid drm_dp_lttpr_wake_timeout_setup (struct drm_dp_aux *aux, bool transparent_mode)”h]”j¤ )�”}”(hŒSvoid drm_dp_lttpr_wake_timeout_setup(struct drm_dp_aux *aux, bool transparent_mode)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj^zh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjZzh²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MÙubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjmzh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjZzh²hh³jlzh´MÙubjÍ )�”}”(hŒdrm_dp_lttpr_wake_timeout_setup”h]”jÓ )�”}”(hŒdrm_dp_lttpr_wake_timeout_setup”h]”hŒdrm_dp_lttpr_wake_timeout_setup”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj{zubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjZzh²hh³jlzh´MÙubjÞ)�”}”(hŒ/(struct drm_dp_aux *aux, bool transparent_mode)”h]”(jä)�”}”(hŒstruct drm_dp_aux *aux”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj›zh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj—zubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨zh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj—zubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(hj¹zh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¶zubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j»zŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj�zsbŒ!c.drm_dp_lttpr_wake_timeout_setup”†”asbuh1hhj—zubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙzh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj—zubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjçzh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj—zubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hjôzh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj—zubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj“zubjä)�”}”(hŒbool transparent_mode”h]”(j¦)�”}”(hj£Ih]”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Œtransparent_mode”h]”hŒtransparent_mode”…”�”}”(hj({h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj {ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj“zubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjZzh²hh³jlzh´MÙubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjVzh²hh³jlzh´MÙubah}”(h]”jQzah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jlzh´MÙhjSzh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ'Grant extended time for sink to wake up”h]”hŒ'Grant extended time for sink to wake up”…”�”}”(hjR{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MÙhjO{h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjSzh²hh³jlzh´MÙubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jj{j$ jj{j% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hXß**Parameters** ``struct drm_dp_aux *aux`` The DP AUX channel to use ``bool transparent_mode`` This is true if lttpr is in transparent mode **Description** This function checks if the sink needs any extended wake time, if it does it grants this request. Post this setup the source device can keep trying the Aux transaction till the granted wake timeout. If this function is not called all Aux transactions are expected to take a default of 1ms before they throw an error.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjt{h]”hŒ Parameters”…”�”}”(hjv{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjr{ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MÝhjn{ubjw )�”}”(hhh]”(j| )�”}”(hŒ5``struct drm_dp_aux *aux`` The DP AUX channel to use ”h]”(j‚ )�”}”(hŒ``struct drm_dp_aux *aux``”•h]”jˆ )�”}”(hj“{h]”hŒstruct drm_dp_aux *aux”…”�”}”(hj•{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj‘{ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MÚhj�{ubjž )�”}”(hhh]”hÎ)�”}”(hŒThe DP AUX channel to use”h]”hŒThe DP AUX channel to use”…”�”}”(hj¬{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¨{h´MÚhj©{ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj�{ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¨{h´MÚhjŠ{ubj| )�”}”(hŒG``bool transparent_mode`` This is true if lttpr is in transparent mode ”h]”(j‚ )�”}”(hŒ``bool transparent_mode``”h]”jˆ )�”}”(hjÌ{h]”hŒbool transparent_mode”…”�”}”(hjÎ{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÊ{ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MÛhjÆ{ubjž )�”}”(hhh]”hÎ)�”}”(hŒ,This is true if lttpr is in transparent mode”h]”hŒ,This is true if lttpr is in transparent mode”…”�”}”(hjå{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³já{h´MÛhjâ{ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÆ{ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³já{h´MÛhjŠ{ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjn{ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj|h]”hŒ Description”…”�”}”(hj |h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj|ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MÝhjn{ubhÎ)�”}”(hX<This function checks if the sink needs any extended wake time, if it does it grants this request. Post this setup the source device can keep trying the Aux transaction till the granted wake timeout. If this function is not called all Aux transactions are expected to take a default of 1ms before they throw an error.”h]”hX<This function checks if the sink needs any extended wake time, if it does it grants this request. Post this setup the source device can keep trying the Aux transaction till the granted wake timeout. If this function is not called all Aux transactions are expected to take a default of 1ms before they throw an error.”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MÜhjn{ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_dp_dpcd_probe (C function)”Œc.drm_dp_dpcd_probe”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒCint drm_dp_dpcd_probe (struct drm_dp_aux *aux, unsigned int offset)”h]”j¤ )�”}”(hŒBint drm_dp_dpcd_probe(struct drm_dp_aux *aux, unsigned int offset)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjL|h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjH|h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M‘ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[|h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjH|h²hh³jZ|h´M‘ubjÍ )�”}”(hŒdrm_dp_dpcd_probe”h]”jÓ )�”}”(hŒdrm_dp_dpcd_probe”h]”hŒdrm_dp_dpcd_probe”…”�”}”(hjm|h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hji|ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjH|h²hh³jZ|h´M‘ubjÞ)�”}”(hŒ-(struct drm_dp_aux *aux, unsigned int offset)”h]”(jä)�”}”(hŒstruct drm_dp_aux *aux”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Œ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(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%)�”}”jjo|sbŒc.drm_dp_dpcd_probe”†”asbuh1hhj…|ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇ|h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj…|ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÕ|h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj…|ubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hjâ|h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj…|ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj�|ubjä)�”}”(hŒunsigned int offset”h]”(j¦)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(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Œint”h]”hŒint”…”�”}”(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Œoffset”h]”hŒoffset”…”�”}”(hj3}h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj÷|ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj�|ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjH|h²hh³jZ|h´M‘ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjD|h²hh³jZ|h´M‘ubah}”(h]”j?|ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jZ|h´M‘hjA|h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ4probe a given DPCD address with a 1-byte read access”h]”hŒ4probe a given DPCD address with a 1-byte read access”…”�”}”(hj]}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M‘hjZ}h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjA|h²hh³jZ|h´M‘ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# ju}j$ ju}j% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hX¬**Parameters** ``struct drm_dp_aux *aux`` DisplayPort AUX channel (SST) ``unsigned int offset`` address of the register to probe **Description** Probe the provided DPCD address by reading 1 byte from it. The function can be used to trigger some side-effect the read access has, like waking up the sink, without the need for the read-out value. Returns 0 if the read access suceeded, or a negative error code on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj}h]”hŒ Parameters”…”�”}”(hj�}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj}}ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M•hjy}ubjw )�”}”(hhh]”(j| )�”}”(hŒ9``struct drm_dp_aux *aux`` DisplayPort AUX channel (SST) ”h]”(j‚ )�”}”(hŒ``struct drm_dp_aux *aux``”h]”jˆ )�”}”(hjž}h]”hŒstruct drm_dp_aux *aux”…”�”}”(hj }h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjœ}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M’hj˜}ubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort AUX channel (SST)”h]”hŒDisplayPort AUX channel (SST)”…”�”}”(hj·}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j³}h´M’hj´}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj˜}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j³}h´M’hj•}ubj| )�”}”(hŒ9``unsigned int offset`` address of the register to probe ”h]”(j‚ )�”}”(hŒ``unsigned int offset``”h]”jˆ )�”}”(hj×}h]”hŒunsigned int offset”…”�”}”(hjÙ}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÕ}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M“hjÑ}ubjž )�”}”(hhh]”hÎ)�”}”(hŒ address of the register to probe”h]”hŒ address of the register to probe”…”�”}”(hjð}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jì}h´M“hjí}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÑ}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jì}h´M“hj•}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjy}ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj~h]”hŒ Description”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M•hjy}ubhÎ)�”}”(hŒÆProbe the provided DPCD address by reading 1 byte from it. The function can be used to trigger some side-effect the read access has, like waking up the sink, without the need for the read-out value.”h]”hŒÆProbe the provided DPCD address by reading 1 byte from it. The function can be used to trigger some side-effect the read access has, like waking up the sink, without the need for the read-out value.”…”�”}”(hj(~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M”hjy}ubhÎ)�”}”(hŒKReturns 0 if the read access suceeded, or a negative error code on failure.”h]”hŒKReturns 0 if the read access suceeded, or a negative error code on failure.”…”�”}”(hj7~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M˜hjy}ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ$drm_dp_dpcd_set_powered (C function)”Œc.drm_dp_dpcd_set_powered”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒCvoid drm_dp_dpcd_set_powered (struct drm_dp_aux *aux, bool powered)”h]”j¤ )�”}”(hŒBvoid drm_dp_dpcd_set_powered(struct drm_dp_aux *aux, bool powered)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjf~h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjb~h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mªubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hju~h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjb~h²hh³jt~h´MªubjÍ )�”}”(hŒdrm_dp_dpcd_set_powered”h]”jÓ )�”}”(hŒdrm_dp_dpcd_set_powered”h]”hŒdrm_dp_dpcd_set_powered”…”�”}”(hj‡~h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjƒ~ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjb~h²hh³jt~h´MªubjÞ)�”}”(hŒ&(struct drm_dp_aux *aux, bool powered)”h]”(jä)�”}”(hŒstruct drm_dp_aux *aux”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Œ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(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%)�”}”jj‰~sbŒc.drm_dp_dpcd_set_powered”†”asbuh1hhjŸ~ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjá~h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjŸ~ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjï~h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŸ~ubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hjü~h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjŸ~ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj›~ubjä)�”}”(hŒ bool powered”h]”(j¦)�”}”(hj£Ih]”hŒbool”…”�”}”(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» hjubjÓ )�”}”(hŒpowered”h]”hŒpowered”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj›~ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjb~h²hh³jt~h´Mªubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj^~h²hh³jt~h´Mªubah}”(h]”jY~ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jt~h´Mªhj[~h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ$Set whether the DP device is powered”h]”hŒ$Set whether the DP device is powered”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MªhjWh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj[~h²hh³jt~h´Mªubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jrj$ jrj% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hXÒ**Parameters** ``struct drm_dp_aux *aux`` DisplayPort AUX channel; for convenience it's OK to pass NULL here and the function will be a no-op. ``bool powered`` true if powered; false if not **Description** If the endpoint device on the DP AUX bus is known to be powered down then this function can be called to make future transfers fail immediately instead of needing to time out. If this function is never called then a device defaults to being powered.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj|h]”hŒ Parameters”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjzubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M®hjvubjw )�”}”(hhh]”(j| )�”}”(hŒ€``struct drm_dp_aux *aux`` DisplayPort AUX channel; for convenience it's OK to pass NULL here and the function will be a no-op. ”h]”(j‚ )�”}”(hŒ``struct drm_dp_aux *aux``”h]”jˆ )�”}”(hj›h]”hŒstruct drm_dp_aux *aux”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj™ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M¬hj•ubjž )�”}”(hhh]”hÎ)�”}”(hŒdDisplayPort AUX channel; for convenience it's OK to pass NULL here and the function will be a no-op.”h]”hŒfDisplayPort AUX channel; for convenience it’s OK to pass NULL here and the function will be a no-op.”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M«hj±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j°h´M¬hj’ubj| )�”}”(hŒ/``bool powered`` true if powered; false if not ”h]”(j‚ )�”}”(hŒ``bool powered``”h]”jˆ )�”}”(hjÕh]”hŒ bool powered”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÓubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M­hjÏubjž )�”}”(hhh]”hÎ)�”}”(hŒtrue if powered; false if not”h]”hŒtrue if powered; false if not”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jêh´M­hjëubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÏubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jêh´M­hj’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjvubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj€h]”hŒ Description”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj€ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M¯hjvubhÎ)�”}”(hŒ¯If the endpoint device on the DP AUX bus is known to be powered down then this function can be called to make future transfers fail immediately instead of needing to time out.”h]”hŒ¯If the endpoint device on the DP AUX bus is known to be powered down then this function can be called to make future transfers fail immediately instead of needing to time out.”…”�”}”(hj&€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M®hjvubhÎ)�”}”(hŒIIf this function is never called then a device defaults to being powered.”h]”hŒIIf this function is never called then a device defaults to being powered.”…”�”}”(hj5€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M²hjvubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ"drm_dp_dpcd_set_probe (C function)”Œc.drm_dp_dpcd_set_probe”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ@void drm_dp_dpcd_set_probe (struct drm_dp_aux *aux, bool enable)”h]”j¤ )�”}”(hŒ?void drm_dp_dpcd_set_probe(struct drm_dp_aux *aux, bool enable)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjd€h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj`€h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MÁubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjs€h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj`€h²hh³jr€h´MÁubjÍ )�”}”(hŒdrm_dp_dpcd_set_probe”h]”jÓ )�”}”(hŒdrm_dp_dpcd_set_probe”h]”hŒdrm_dp_dpcd_set_probe”…”�”}”(hj…€h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj�€ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj`€h²hh³jr€h´MÁubjÞ)�”}”(hŒ%(struct drm_dp_aux *aux, bool enable)”h]”(jä)�”}”(hŒstruct drm_dp_aux *aux”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Œ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(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%)�”}”jj‡€sbŒc.drm_dp_dpcd_set_probe”†”asbuh1hhj�€ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj߀h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj�€ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjí€h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�€ubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hjú€h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj�€ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj™€ubjä)�”}”(hŒ bool enable”h]”(j¦)�”}”(hj£Ih]”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Œenable”h]”hŒenable”…”�”}”(hj.�h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj™€ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj`€h²hh³jr€h´MÁubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj\€h²hh³jr€h´MÁubah}”(h]”jW€ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jr€h´MÁhjY€h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ0Set whether a probing before DPCD access is done”h]”hŒ0Set whether a probing before DPCD access is done”…”�”}”(hjX�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MÁhjU�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjY€h²hh³jr€h´MÁubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jp�j$ jp�j% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hŒv**Parameters** ``struct drm_dp_aux *aux`` DisplayPort AUX channel ``bool enable`` Enable the probing if required”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjz�h]”hŒ Parameters”…”�”}”(hj|�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjx�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MÅhjt�ubjw )�”}”(hhh]”(j| )�”}”(hŒ3``struct drm_dp_aux *aux`` DisplayPort AUX channel ”h]”(j‚ )�”}”(hŒ``struct drm_dp_aux *aux``”h]”jˆ )�”}”(hj™�h]”hŒstruct drm_dp_aux *aux”…”�”}”(hj›�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj—�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MÂhj“�ubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort AUX channel”h]”hŒDisplayPort AUX channel”…”�”}”(hj²�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j®�h´MÂhj¯�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj“�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j®�h´MÂhj��ubj| )�”}”(hŒ.``bool enable`` Enable the probing if required”h]”(j‚ )�”}”(hŒ``bool enable``”h]”jˆ )�”}”(hjÒ�h]”hŒ bool enable”…”�”}”(hjÔ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÐ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MÄhjÌ�ubjž )�”}”(hhh]”hÎ)�”}”(hŒEnable the probing if required”h]”hŒEnable the probing if required”…”�”}”(hjë�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MÃhjè�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÌ�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jç�h´MÄhj��ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjt�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_dp_dpcd_read (C function)”Œc.drm_dp_dpcd_read”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒassize_t drm_dp_dpcd_read (struct drm_dp_aux *aux, unsigned int offset, void *buffer, size_t size)”h]”j¤ )�”}”(hŒ`ssize_t drm_dp_dpcd_read(struct drm_dp_aux *aux, unsigned int offset, void *buffer, size_t size)”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒssize_t”h]”hŒssize_t”…”�”}”(hj/‚h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj,‚ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j1‚Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jŒdrm_dp_dpcd_read”sbŒc.drm_dp_dpcd_read”†”asbuh1hhj(‚h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MÝubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQ‚h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj(‚h²hh³jP‚h´MÝubjÍ )�”}”(hŒdrm_dp_dpcd_read”h]”jÓ )�”}”(hjM‚h]”hŒdrm_dp_dpcd_read”…”�”}”(hjc‚h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj_‚ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj(‚h²hh³jP‚h´MÝubjÞ)�”}”(hŒH(struct drm_dp_aux *aux, unsigned int offset, void *buffer, size_t size)”h]”(jä)�”}”(hŒstruct drm_dp_aux *aux”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj~‚h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjz‚ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹‚h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjz‚ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(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ï ]”jK‚Œc.drm_dp_dpcd_read”†”asbuh1hhjz‚ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjº‚h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjz‚ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÈ‚h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjz‚ubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hjÕ‚h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjz‚ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjv‚ubjä)�”}”(hŒunsigned int offset”h]”(j¦)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(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Œint”h]”hŒint”…”�”}”(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Œoffset”h]”hŒoffset”…”�”}”(hj&ƒh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjê‚ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjv‚ubjä)�”}”(hŒ void *buffer”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj?ƒh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj;ƒubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjMƒh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj;ƒubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj[ƒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj;ƒubjÓ )�”}”(hŒbuffer”h]”hŒbuffer”…”�”}”(hjhƒh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj;ƒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjv‚ubjä)�”}”(hŒ size_t size”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(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ï ]”jK‚Œc.drm_dp_dpcd_read”†”asbuh1hhj}ƒubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢ƒh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj}ƒubjÓ )�”}”(hŒsize”h]”hŒsize”…”�”}”(hj°ƒh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj}ƒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjv‚ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj(‚h²hh³jP‚h´MÝubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj$‚h²hh³jP‚h´MÝubah}”(h]”j‚ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jP‚h´MÝhj!‚h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ$read a series of bytes from the DPCD”h]”hŒ$read a series of bytes from the DPCD”…”�”}”(hjÚƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MÝhj׃h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj!‚h²hh³jP‚h´MÝubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jòƒj$ jòƒj% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hXî**Parameters** ``struct drm_dp_aux *aux`` DisplayPort AUX channel (SST or MST) ``unsigned int offset`` address of the (first) register to read ``void *buffer`` buffer to store the register values ``size_t size`` number of bytes in **buffer** **Description** Returns the number of bytes transferred on success, or a negative error code on failure. -EIO is returned if the request was NAKed by the sink or if the retry count was exceeded. If not all bytes were transferred, this function returns -EPROTO. Errors from the underlying AUX channel transfer function, with the exception of -EBUSY (which causes the transaction to be retried), are propagated to the caller. In most of the cases you want to use drm_dp_dpcd_read_data() instead.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjüƒh]”hŒ Parameters”…”�”}”(hjþƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjúƒubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Máhjöƒubjw )�”}”(hhh]”(j| )�”}”(hŒ@``struct drm_dp_aux *aux`` DisplayPort AUX channel (SST or MST) ”h]”(j‚ )�”}”(hŒ``struct drm_dp_aux *aux``”h]”jˆ )�”}”(hj„h]”hŒstruct drm_dp_aux *aux”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MÞhj„ubjž )�”}”(hhh]”hÎ)�”}”(hŒ$DisplayPort AUX channel (SST or MST)”h]”hŒ$DisplayPort AUX channel (SST or MST)”…”�”}”(hj4„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j0„h´MÞhj1„ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j0„h´MÞhj„ubj| )�”}”(hŒ@``unsigned int offset`` address of the (first) register to read ”h]”(j‚ )�”}”(hŒ``unsigned int offset``”h]”jˆ )�”}”(hjT„h]”hŒunsigned int offset”…”�”}”(hjV„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjR„ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MßhjN„ubjž )�”}”(hhh]”hÎ)�”}”(hŒ'address of the (first) register to read”h]”hŒ'address of the (first) register to read”…”�”}”(hjm„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³ji„h´Mßhjj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjN„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³ji„h´Mßhj„ubj| )�”}”(hŒ5``void *buffer`` buffer to store the register values ”h]”(j‚ )�”}”(hŒ``void *buffer``”h]”jˆ )�”}”(hj�„h]”hŒ void *buffer”…”�”}”(hj�„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj‹„ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Màhj‡„ubjž )�”}”(hhh]”hÎ)�”}”(hŒ#buffer to store the register values”h]”hŒ#buffer to store the register values”…”�”}”(hj¦„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¢„h´Màhj£„ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj‡„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¢„h´Màhj„ubj| )�”}”(hŒ.``size_t size`` number of bytes in **buffer** ”h]”(j‚ )�”}”(hŒ``size_t size``”h]”jˆ )�”}”(hjÆ„h]”hŒ size_t size”…”�”}”(hjÈ„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÄ„ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MáhjÀ„ubjž )�”}”(hhh]”hÎ)�”}”(hŒnumber of bytes in **buffer**”h]”(hŒnumber of bytes in ”…”�”}”(hjß„h²hh³Nh´Nubj3 )�”}”(hŒ **buffer**”h]”hŒbuffer”…”�”}”(hjç„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjß„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÛ„h´MáhjÜ„ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÀ„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÛ„h´Máhj„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjöƒubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj…h]”hŒ Description”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj …ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MãhjöƒubhÎ)�”}”(hX—Returns the number of bytes transferred on success, or a negative error code on failure. -EIO is returned if the request was NAKed by the sink or if the retry count was exceeded. If not all bytes were transferred, this function returns -EPROTO. Errors from the underlying AUX channel transfer function, with the exception of -EBUSY (which causes the transaction to be retried), are propagated to the caller.”h]”hX—Returns the number of bytes transferred on success, or a negative error code on failure. -EIO is returned if the request was NAKed by the sink or if the retry count was exceeded. If not all bytes were transferred, this function returns -EPROTO. Errors from the underlying AUX channel transfer function, with the exception of -EBUSY (which causes the transaction to be retried), are propagated to the caller.”…”�”}”(hj%…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MâhjöƒubhÎ)�”}”(hŒEIn most of the cases you want to use drm_dp_dpcd_read_data() instead.”h]”hŒEIn most of the cases you want to use drm_dp_dpcd_read_data() instead.”…”�”}”(hj4…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Méhjöƒubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_dp_dpcd_write (C function)”Œc.drm_dp_dpcd_write”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒbssize_t drm_dp_dpcd_write (struct drm_dp_aux *aux, unsigned int offset, void *buffer, size_t size)”h]”j¤ )�”}”(hŒassize_t drm_dp_dpcd_write(struct drm_dp_aux *aux, unsigned int offset, void *buffer, size_t size)”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒssize_t”h]”hŒssize_t”…”�”}”(hjf…h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjc…ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jh…Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jŒdrm_dp_dpcd_write”sbŒc.drm_dp_dpcd_write”†”asbuh1hhj_…h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆ…h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj_…h²hh³j‡…h´MubjÍ )�”}”(hŒdrm_dp_dpcd_write”h]”jÓ )�”}”(hj„…h]”hŒdrm_dp_dpcd_write”…”�”}”(hjš…h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj–…ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj_…h²hh³j‡…h´MubjÞ)�”}”(hŒH(struct drm_dp_aux *aux, unsigned int offset, void *buffer, size_t size)”h]”(jä)�”}”(hŒstruct drm_dp_aux *aux”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Œ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(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.drm_dp_dpcd_write”†”asbuh1hhj±…ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñ…h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj±…ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÿ…h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj±…ubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hj †h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj±…ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj­…ubjä)�”}”(hŒunsigned int offset”h]”(j¦)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj%†h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj!†ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3†h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj!†ubj¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjA†h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj!†ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjO†h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj!†ubjÓ )�”}”(hŒoffset”h]”hŒoffset”…”�”}”(hj]†h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj!†ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj­…ubjä)�”}”(hŒ void *buffer”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjv†h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjr†ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„†h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjr†ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj’†h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjr†ubjÓ )�”}”(hŒbuffer”h]”hŒbuffer”…”�”}”(hjŸ†h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjr†ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj­…ubjä)�”}”(hŒ size_t size”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(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.drm_dp_dpcd_write”†”asbuh1hhj´†ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙ†h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj´†ubjÓ )�”}”(hŒsize”h]”hŒsize”…”�”}”(hjç†h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj´†ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj­…ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj_…h²hh³j‡…h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj[…h²hh³j‡…h´Mubah}”(h]”jV…ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j‡…h´MhjX…h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ#write a series of bytes to the DPCD”h]”hŒ#write a series of bytes to the DPCD”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mhj‡h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjX…h²hh³j‡…h´Mubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j)‡j$ j)‡j% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hXò**Parameters** ``struct drm_dp_aux *aux`` DisplayPort AUX channel (SST or MST) ``unsigned int offset`` address of the (first) register to write ``void *buffer`` buffer containing the values to write ``size_t size`` number of bytes in **buffer** **Description** Returns the number of bytes transferred on success, or a negative error code on failure. -EIO is returned if the request was NAKed by the sink or if the retry count was exceeded. If not all bytes were transferred, this function returns -EPROTO. Errors from the underlying AUX channel transfer function, with the exception of -EBUSY (which causes the transaction to be retried), are propagated to the caller. In most of the cases you want to use drm_dp_dpcd_write_data() instead.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj3‡h]”hŒ Parameters”…”�”}”(hj5‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj1‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mhj-‡ubjw )�”}”(hhh]”(j| )�”}”(hŒ@``struct drm_dp_aux *aux`` DisplayPort AUX channel (SST or MST) ”h]”(j‚ )�”}”(hŒ``struct drm_dp_aux *aux``”h]”jˆ )�”}”(hjR‡h]”hŒstruct drm_dp_aux *aux”…”�”}”(hjT‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjP‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MhjL‡ubjž )�”}”(hhh]”hÎ)�”}”(hŒ$DisplayPort AUX channel (SST or MST)”h]”hŒ$DisplayPort AUX channel (SST or MST)”…”�”}”(hjk‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jg‡h´Mhjh‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjL‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jg‡h´MhjI‡ubj| )�”}”(hŒA``unsigned int offset`` address of the (first) register to write ”h]”(j‚ )�”}”(hŒ``unsigned int offset``”h]”jˆ )�”}”(hj‹‡h]”hŒunsigned int offset”…”�”}”(hj�‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj‰‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mhj…‡ubjž )�”}”(hhh]”hÎ)�”}”(hŒ(address of the (first) register to write”h]”hŒ(address of the (first) register to write”…”�”}”(hj¤‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j ‡h´Mhj¡‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj…‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j ‡h´MhjI‡ubj| )�”}”(hŒ7``void *buffer`` buffer containing the values to write ”h]”(j‚ )�”}”(hŒ``void *buffer``”h]”jˆ )�”}”(hjćh]”hŒ void *buffer”…”�”}”(hjƇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mhj¾‡ubjž )�”}”(hhh]”hÎ)�”}”(hŒ%buffer containing the values to write”h]”hŒ%buffer containing the values to write”…”�”}”(hj݇h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÙ‡h´MhjÚ‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¾‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÙ‡h´MhjI‡ubj| )�”}”(hŒ.``size_t size`` number of bytes in **buffer** ”h]”(j‚ )�”}”(hŒ``size_t size``”h]”jˆ )�”}”(hjý‡h]”hŒ size_t size”…”�”}”(hjÿ‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjû‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mhj÷‡ubjž )�”}”(hhh]”hÎ)�”}”(hŒnumber of bytes in **buffer**”h]”(hŒnumber of bytes in ”…”�”}”(hjˆh²hh³Nh´Nubj3 )�”}”(hŒ **buffer**”h]”hŒbuffer”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jˆh´Mhjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj÷‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jˆh´MhjI‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj-‡ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjFˆh]”hŒ Description”…”�”}”(hjHˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjDˆubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M hj-‡ubhÎ)�”}”(hX—Returns the number of bytes transferred on success, or a negative error code on failure. -EIO is returned if the request was NAKed by the sink or if the retry count was exceeded. If not all bytes were transferred, this function returns -EPROTO. Errors from the underlying AUX channel transfer function, with the exception of -EBUSY (which causes the transaction to be retried), are propagated to the caller.”h]”hX—Returns the number of bytes transferred on success, or a negative error code on failure. -EIO is returned if the request was NAKed by the sink or if the retry count was exceeded. If not all bytes were transferred, this function returns -EPROTO. Errors from the underlying AUX channel transfer function, with the exception of -EBUSY (which causes the transaction to be retried), are propagated to the caller.”…”�”}”(hj\ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mhj-‡ubhÎ)�”}”(hŒFIn most of the cases you want to use drm_dp_dpcd_write_data() instead.”h]”hŒFIn most of the cases you want to use drm_dp_dpcd_write_data() instead.”…”�”}”(hjkˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mhj-‡ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ)drm_dp_dpcd_read_link_status (C function)”Œc.drm_dp_dpcd_read_link_status”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒYint drm_dp_dpcd_read_link_status (struct drm_dp_aux *aux, u8 status[DP_LINK_STATUS_SIZE])”h]”j¤ )�”}”(hŒXint drm_dp_dpcd_read_link_status(struct drm_dp_aux *aux, u8 status[DP_LINK_STATUS_SIZE])”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjšˆh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj–ˆh²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.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Œdrm_dp_dpcd_read_link_status”h]”jÓ )�”}”(hŒdrm_dp_dpcd_read_link_status”h]”hŒdrm_dp_dpcd_read_link_status”…”�”}”(hj»ˆh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj·ˆubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj–ˆh²hh³j¨ˆh´M#ubjÞ)�”}”(hŒ8(struct drm_dp_aux *aux, u8 status[DP_LINK_STATUS_SIZE])”h]”(jä)�”}”(hŒstruct drm_dp_aux *aux”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Œ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(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%)�”}”jj½ˆsbŒc.drm_dp_dpcd_read_link_status”†”asbuh1hhjÓˆubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÓˆubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj#‰h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÓˆubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hj0‰h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÓˆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjψubjä)�”}”(hŒu8 status[DP_LINK_STATUS_SIZE]”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(hjL‰h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjI‰ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jN‰Œmodname”NŒ classname”Njé jì )�”}”jï ]”j‰Œc.drm_dp_dpcd_read_link_status”†”asbuh1hhjE‰ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjj‰h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjE‰ubjÓ )�”}”(hŒstatus”h]”hŒstatus”…”�”}”(hjx‰h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjE‰ubj9)�”}”(hjMh]”hŒ[”…”�”}”(hj†‰h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjE‰ubh)�”}”(hhh]”jÓ )�”}”(hŒDP_LINK_STATUS_SIZE”h]”hŒDP_LINK_STATUS_SIZE”…”�”}”(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.drm_dp_dpcd_read_link_status”†”asbuh1hhjE‰ubj9)�”}”(hj=Mh]”hŒ]”…”�”}”(hj´‰h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjE‰ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjψubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj–ˆh²hh³j¨ˆh´M#ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ)read DPCD link status (bytes 0x202-0x207)”h]”hŒ)read DPCD link status (bytes 0x202-0x207)”…”�”}”(hj݉h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.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²hhjÎ9h³Nh´Nubj) )�”}”(hŒô**Parameters** ``struct drm_dp_aux *aux`` DisplayPort AUX channel ``u8 status[DP_LINK_STATUS_SIZE]`` buffer to store the link status in (must be at least 6 bytes) **Description** Returns a negative error code on failure or 0 on success.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjÿ‰h]”hŒ Parameters”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjý‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M'hjù‰ubjw )�”}”(hhh]”(j| )�”}”(hŒ3``struct drm_dp_aux *aux`` DisplayPort AUX channel ”h]”(j‚ )�”}”(hŒ``struct drm_dp_aux *aux``”h]”jˆ )�”}”(hjŠh]”hŒstruct drm_dp_aux *aux”…”�”}”(hj Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjŠubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M$hjŠubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort AUX channel”h]”hŒDisplayPort AUX channel”…”�”}”(hj7Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j3Šh´M$hj4Šubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j3Šh´M$hjŠubj| )�”}”(hŒa``u8 status[DP_LINK_STATUS_SIZE]`` buffer to store the link status in (must be at least 6 bytes) ”h]”(j‚ )�”}”(hŒ"``u8 status[DP_LINK_STATUS_SIZE]``”h]”jˆ )�”}”(hjWŠh]”hŒu8 status[DP_LINK_STATUS_SIZE]”…”�”}”(hjYŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjUŠubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M%hjQŠubjž )�”}”(hhh]”hÎ)�”}”(hŒ=buffer to store the link status in (must be at least 6 bytes)”h]”hŒ=buffer to store the link status in (must be at least 6 bytes)”…”�”}”(hjpŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jlŠh´M%hjmŠubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjQŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jlŠh´M%hjŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjù‰ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj’Šh]”hŒ Description”…”�”}”(hj”Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj�Šubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M'hjù‰ubhÎ)�”}”(hŒ9Returns a negative error code on failure or 0 on success.”h]”hŒ9Returns a negative error code on failure or 0 on success.”…”�”}”(hj¨Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M&hjù‰ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ-drm_dp_dpcd_read_phy_link_status (C function)”Œ"c.drm_dp_dpcd_read_phy_link_status”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒzint drm_dp_dpcd_read_phy_link_status (struct drm_dp_aux *aux, enum drm_dp_phy dp_phy, u8 link_status[DP_LINK_STATUS_SIZE])”h]”j¤ )�”}”(hŒyint drm_dp_dpcd_read_phy_link_status(struct drm_dp_aux *aux, enum drm_dp_phy dp_phy, u8 link_status[DP_LINK_STATUS_SIZE])”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj׊h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjÓŠh²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M2ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæŠh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÓŠh²hh³jåŠh´M2ubjÍ )�”}”(hŒ drm_dp_dpcd_read_phy_link_status”h]”jÓ )�”}”(hŒ drm_dp_dpcd_read_phy_link_status”h]”hŒ drm_dp_dpcd_read_phy_link_status”…”�”}”(hjøŠh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjôŠubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÓŠh²hh³jåŠh´M2ubjÞ)�”}”(hŒU(struct drm_dp_aux *aux, enum drm_dp_phy dp_phy, u8 link_status[DP_LINK_STATUS_SIZE])”h]”(jä)�”}”(hŒstruct drm_dp_aux *aux”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Œ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(hj2‹h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj/‹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j4‹Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjúŠsbŒ"c.drm_dp_dpcd_read_phy_link_status”†”asbuh1hhj‹ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjR‹h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj‹ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj`‹h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‹ubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hjm‹h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj‹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj ‹ubjä)�”}”(hŒenum drm_dp_phy dp_phy”h]”(jª )�”}”(hjÂ7h]”hŒenum”…”�”}”(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Œ drm_dp_phy”h]”hŒ drm_dp_phy”…”�”}”(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ï ]”jN‹Œ"c.drm_dp_dpcd_read_phy_link_status”†”asbuh1hhj‚‹ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj‚‹ubjÓ )�”}”(hŒdp_phy”h]”hŒdp_phy”…”�”}”(hjЋh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj‚‹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj ‹ubjä)�”}”(hŒ#u8 link_status[DP_LINK_STATUS_SIZE]”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(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ï ]”jN‹Œ"c.drm_dp_dpcd_read_phy_link_status”†”asbuh1hhjå‹ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Œh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjå‹ubjÓ )�”}”(hŒ link_status”h]”hŒ link_status”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjå‹ubj9)�”}”(hjMh]”hŒ[”…”�”}”(hj&Œh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjå‹ubh)�”}”(hhh]”jÓ )�”}”(hŒDP_LINK_STATUS_SIZE”h]”hŒDP_LINK_STATUS_SIZE”…”�”}”(hj6Œh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj3Œubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j8ŒŒmodname”NŒ classname”Njé jì )�”}”jï ]”jN‹Œ"c.drm_dp_dpcd_read_phy_link_status”†”asbuh1hhjå‹ubj9)�”}”(hj=Mh]”hŒ]”…”�”}”(hjTŒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjå‹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj ‹ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjÓŠh²hh³jåŠh´M2ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjÏŠh²hh³jåŠh´M2ubah}”(h]”jÊŠah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jåŠh´M2hjÌŠh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ,get the link status information for a DP PHY”h]”hŒ,get the link status information for a DP PHY”…”�”}”(hj}Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M2hjzŒh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÌŠh²hh³jåŠh´M2ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j•Œj$ j•Œj% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hXí**Parameters** ``struct drm_dp_aux *aux`` DisplayPort AUX channel ``enum drm_dp_phy dp_phy`` the DP PHY to get the link status for ``u8 link_status[DP_LINK_STATUS_SIZE]`` buffer to return the status in **Description** Fetch the AUX DPCD registers for the DPRX or an LTTPR PHY link status. The layout of the returned **link_status** matches the DPCD register layout of the DPRX PHY link status. Returns 0 if the information was read successfully or a negative error code on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjŸŒh]”hŒ Parameters”…”�”}”(hj¡Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj�Œubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M6hj™Œubjw )�”}”(hhh]”(j| )�”}”(hŒ3``struct drm_dp_aux *aux`` DisplayPort AUX channel ”h]”(j‚ )�”}”(hŒ``struct drm_dp_aux *aux``”h]”jˆ )�”}”(hj¾Œh]”hŒstruct drm_dp_aux *aux”…”�”}”(hjÀŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¼Œubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M3hj¸Œubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort AUX channel”h]”hŒDisplayPort AUX channel”…”�”}”(hj׌h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÓŒh´M3hjÔŒubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¸Œubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÓŒh´M3hjµŒubj| )�”}”(hŒA``enum drm_dp_phy dp_phy`` the DP PHY to get the link status for ”h]”(j‚ )�”}”(hŒ``enum drm_dp_phy dp_phy``”h]”jˆ )�”}”(hj÷Œh]”hŒenum drm_dp_phy dp_phy”…”�”}”(hjùŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjõŒubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M4hjñŒubjž )�”}”(hhh]”hÎ)�”}”(hŒ%the DP PHY to get the link status for”h]”hŒ%the DP PHY to get the link status for”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j �h´M4hj �ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjñŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j �h´M4hjµŒubj| )�”}”(hŒG``u8 link_status[DP_LINK_STATUS_SIZE]`` buffer to return the status in ”h]”(j‚ )�”}”(hŒ'``u8 link_status[DP_LINK_STATUS_SIZE]``”h]”jˆ )�”}”(hj0�h]”hŒ#u8 link_status[DP_LINK_STATUS_SIZE]”…”�”}”(hj2�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj.�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M5hj*�ubjž )�”}”(hhh]”hÎ)�”}”(hŒbuffer to return the status in”h]”hŒbuffer to return the status in”…”�”}”(hjI�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jE�h´M5hjF�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj*�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jE�h´M5hjµŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj™ŒubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjk�h]”hŒ Description”…”�”}”(hjm�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hji�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M7hj™ŒubhÎ)�”}”(hŒ¯Fetch the AUX DPCD registers for the DPRX or an LTTPR PHY link status. The layout of the returned **link_status** matches the DPCD register layout of the DPRX PHY link status.”h]”(hŒbFetch the AUX DPCD registers for the DPRX or an LTTPR PHY link status. The layout of the returned ”…”�”}”(hj��h²hh³Nh´Nubj3 )�”}”(hŒ**link_status**”h]”hŒ link_status”…”�”}”(hj‰�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj��ubhŒ> matches the DPCD register layout of the DPRX PHY link status.”…”�”}”(hj��h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M6hj™ŒubhÎ)�”}”(hŒWReturns 0 if the information was read successfully or a negative error code on failure.”h]”hŒWReturns 0 if the information was read successfully or a negative error code on failure.”…”�”}”(hj¢�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M:hj™Œubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ!drm_dp_link_power_up (C function)”Œc.drm_dp_link_power_up”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒIint drm_dp_link_power_up (struct drm_dp_aux *aux, unsigned char revision)”h]”j¤ )�”}”(hŒHint drm_dp_link_power_up(struct drm_dp_aux *aux, unsigned char revision)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjÑ�h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjÍ�h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.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Œdrm_dp_link_power_up”h]”jÓ )�”}”(hŒdrm_dp_link_power_up”h]”hŒdrm_dp_link_power_up”…”�”}”(hjò�h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjî�ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÍ�h²hh³jß�h´M]ubjÞ)�”}”(hŒ0(struct drm_dp_aux *aux, unsigned char revision)”h]”(jä)�”}”(hŒstruct drm_dp_aux *aux”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Œ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(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%)�”}”jjô�sbŒc.drm_dp_link_power_up”†”asbuh1hhj Žubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjLŽh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj Žubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjZŽh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ŽubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hjgŽh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj Žubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjŽubjä)�”}”(hŒunsigned char revision”h]”(j¦)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(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Œchar”h]”hŒchar”…”�”}”(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Œrevision”h]”hŒrevision”…”�”}”(hj¸Žh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj|Žubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjŽubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjÍ�h²hh³jß�h´M]ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œpower up a DisplayPort link”h]”hŒpower up a DisplayPort link”…”�”}”(hjâŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.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²hhjÎ9h³Nh´Nubj) )�”}”(hŒÒ**Parameters** ``struct drm_dp_aux *aux`` DisplayPort AUX channel ``unsigned char revision`` DPCD revision supported on the link **Description** Returns 0 on success or a negative error code on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj�h]”hŒ Parameters”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MahjþŽubjw )�”}”(hhh]”(j| )�”}”(hŒ3``struct drm_dp_aux *aux`` DisplayPort AUX channel ”h]”(j‚ )�”}”(hŒ``struct drm_dp_aux *aux``”h]”jˆ )�”}”(hj#�h]”hŒstruct drm_dp_aux *aux”…”�”}”(hj%�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj!�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M^hj�ubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort AUX channel”h]”hŒDisplayPort AUX channel”…”�”}”(hj<�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j8�h´M^hj9�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j8�h´M^hj�ubj| )�”}”(hŒ?``unsigned char revision`` DPCD revision supported on the link ”h]”(j‚ )�”}”(hŒ``unsigned char revision``”h]”jˆ )�”}”(hj\�h]”hŒunsigned char revision”…”�”}”(hj^�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjZ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M_hjV�ubjž )�”}”(hhh]”hÎ)�”}”(hŒ#DPCD revision supported on the link”h]”hŒ#DPCD revision supported on the link”…”�”}”(hju�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jq�h´M_hjr�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjV�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jq�h´M_hj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjþŽubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj—�h]”hŒ Description”…”�”}”(hj™�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj•�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MahjþŽubhÎ)�”}”(hŒ9Returns 0 on success or a negative error code on failure.”h]”hŒ9Returns 0 on success or a negative error code on failure.”…”�”}”(hj­�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M`hjþŽubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ#drm_dp_link_power_down (C function)”Œc.drm_dp_link_power_down”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒKint drm_dp_link_power_down (struct drm_dp_aux *aux, unsigned char revision)”h]”j¤ )�”}”(hŒJint drm_dp_link_power_down(struct drm_dp_aux *aux, unsigned char revision)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjÜ�h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjØ�h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.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Œdrm_dp_link_power_down”h]”jÓ )�”}”(hŒdrm_dp_link_power_down”h]”hŒdrm_dp_link_power_down”…”�”}”(hjý�h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjù�ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjØ�h²hh³jê�h´MƒubjÞ)�”}”(hŒ0(struct drm_dp_aux *aux, unsigned char revision)”h]”(jä)�”}”(hŒstruct drm_dp_aux *aux”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Œ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(hj7�h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj4�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j9�Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjÿ�sbŒc.drm_dp_link_power_down”†”asbuh1hhj�ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjW�h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj�ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hje�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�ubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hjr�h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj�ubjä)�”}”(hŒunsigned char revision”h]”(j¦)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(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Œchar”h]”hŒchar”…”�”}”(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Œrevision”h]”hŒrevision”…”�”}”(hjÃ�h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj‡�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj�ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjØ�h²hh³jê�h´Mƒubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œpower down a DisplayPort link”h]”hŒpower down a DisplayPort link”…”�”}”(hjí�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.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²hhjÎ9h³Nh´Nubj) )�”}”(hŒÒ**Parameters** ``struct drm_dp_aux *aux`` DisplayPort AUX channel ``unsigned char revision`` DPCD revision supported on the link **Description** Returns 0 on success or a negative error code on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj‘h]”hŒ Parameters”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj ‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M‡hj ‘ubjw )�”}”(hhh]”(j| )�”}”(hŒ3``struct drm_dp_aux *aux`` DisplayPort AUX channel ”h]”(j‚ )�”}”(hŒ``struct drm_dp_aux *aux``”h]”jˆ )�”}”(hj.‘h]”hŒstruct drm_dp_aux *aux”…”�”}”(hj0‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj,‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M„hj(‘ubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort AUX channel”h]”hŒDisplayPort AUX channel”…”�”}”(hjG‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jC‘h´M„hjD‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj(‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jC‘h´M„hj%‘ubj| )�”}”(hŒ?``unsigned char revision`` DPCD revision supported on the link ”h]”(j‚ )�”}”(hŒ``unsigned char revision``”h]”jˆ )�”}”(hjg‘h]”hŒunsigned char revision”…”�”}”(hji‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hje‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M…hja‘ubjž )�”}”(hhh]”hÎ)�”}”(hŒ#DPCD revision supported on the link”h]”hŒ#DPCD revision supported on the link”…”�”}”(hj€‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j|‘h´M…hj}‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hja‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j|‘h´M…hj%‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj ‘ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj¢‘h]”hŒ Description”…”�”}”(hj¤‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj ‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M‡hj ‘ubhÎ)�”}”(hŒ9Returns 0 on success or a negative error code on failure.”h]”hŒ9Returns 0 on success or a negative error code on failure.”…”�”}”(hj¸‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M†hj ‘ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ&drm_dp_dpcd_write_payload (C function)”Œc.drm_dp_dpcd_write_payload”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒiint drm_dp_dpcd_write_payload (struct drm_dp_aux *aux, int vcpid, u8 start_time_slot, u8 time_slot_count)”h]”j¤ )�”}”(hŒhint drm_dp_dpcd_write_payload(struct drm_dp_aux *aux, int vcpid, u8 start_time_slot, u8 time_slot_count)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjç‘h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjã‘h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.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Œdrm_dp_dpcd_write_payload”h]”jÓ )�”}”(hŒdrm_dp_dpcd_write_payload”h]”hŒdrm_dp_dpcd_write_payload”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj’ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjã‘h²hh³jõ‘h´M®ubjÞ)�”}”(hŒK(struct drm_dp_aux *aux, int vcpid, u8 start_time_slot, u8 time_slot_count)”h]”(jä)�”}”(hŒstruct drm_dp_aux *aux”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj$’h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj ’ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1’h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj ’ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(hjB’h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj?’ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jD’Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj ’sbŒc.drm_dp_dpcd_write_payload”†”asbuh1hhj ’ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjb’h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj ’ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjp’h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ’ubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hj}’h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj ’ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj’ubjä)�”}”(hŒ int vcpid”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(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Œvcpid”h]”hŒvcpid”…”�”}”(hj²’h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj’’ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj’ubjä)�”}”(hŒu8 start_time_slot”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(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.drm_dp_dpcd_write_payload”†”asbuh1hhjÇ’ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjì’h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÇ’ubjÓ )�”}”(hŒstart_time_slot”h]”hŒstart_time_slot”…”�”}”(hjú’h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÇ’ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj’ubjä)�”}”(hŒu8 time_slot_count”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(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.drm_dp_dpcd_write_payload”†”asbuh1hhj“ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4“h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj“ubjÓ )�”}”(hŒtime_slot_count”h]”hŒtime_slot_count”…”�”}”(hjB“h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj“ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj’ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjã‘h²hh³jõ‘h´M®ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ2Write Virtual Channel information to payload table”h]”hŒ2Write Virtual Channel information to payload table”…”�”}”(hjl“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M®hji“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²hhjÎ9h³Nh´Nubj) )�”}”(hX**Parameters** ``struct drm_dp_aux *aux`` DisplayPort AUX channel ``int vcpid`` Virtual Channel Payload ID ``u8 start_time_slot`` Starting time slot ``u8 time_slot_count`` Time slot count **Description** Write the Virtual Channel payload allocation table, checking the payload update status and retrying as necessary. **Return** 0 on success, negative error otherwise”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjŽ“h]”hŒ Parameters”…”�”}”(hj�“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjŒ“ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M²hjˆ“ubjw )�”}”(hhh]”(j| )�”}”(hŒ3``struct drm_dp_aux *aux`` DisplayPort AUX channel ”h]”(j‚ )�”}”(hŒ``struct drm_dp_aux *aux``”h]”jˆ )�”}”(hj­“h]”hŒstruct drm_dp_aux *aux”…”�”}”(hj¯“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj«“ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M¯hj§“ubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort AUX channel”h]”hŒDisplayPort AUX channel”…”�”}”(hjÆ“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j“h´M¯hjÓubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj§“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j“h´M¯hj¤“ubj| )�”}”(hŒ)``int vcpid`` Virtual Channel Payload ID ”h]”(j‚ )�”}”(hŒ ``int vcpid``”h]”jˆ )�”}”(hjæ“h]”hŒ int vcpid”…”�”}”(hjè“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjä“ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M°hjà“ubjž )�”}”(hhh]”hÎ)�”}”(hŒVirtual Channel Payload ID”h]”hŒVirtual Channel Payload ID”…”�”}”(hjÿ“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jû“h´M°hjü“ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjà“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jû“h´M°hj¤“ubj| )�”}”(hŒ*``u8 start_time_slot`` Starting time slot ”h]”(j‚ )�”}”(hŒ``u8 start_time_slot``”h]”jˆ )�”}”(hj”h]”hŒu8 start_time_slot”…”�”}”(hj!”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj”ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M±hj”ubjž )�”}”(hhh]”hÎ)�”}”(hŒStarting time slot”h]”hŒStarting time slot”…”�”}”(hj8”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j4”h´M±hj5”ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j4”h´M±hj¤“ubj| )�”}”(hŒ'``u8 time_slot_count`` Time slot count ”h]”(j‚ )�”}”(hŒ``u8 time_slot_count``”h]”jˆ )�”}”(hjX”h]”hŒu8 time_slot_count”…”�”}”(hjZ”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjV”ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M²hjR”ubjž )�”}”(hhh]”hÎ)�”}”(hŒTime slot count”h]”hŒTime slot count”…”�”}”(hjq”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jm”h´M²hjn”ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjR”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jm”h´M²hj¤“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjˆ“ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj“”h]”hŒ Description”…”�”}”(hj•”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj‘”ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M´hjˆ“ubhÎ)�”}”(hŒqWrite the Virtual Channel payload allocation table, checking the payload update status and retrying as necessary.”h]”hŒqWrite the Virtual Channel payload allocation table, checking the payload update status and retrying as necessary.”…”�”}”(hj©”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M³hjˆ“ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjº”h]”hŒReturn”…”�”}”(hj¼”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¸”ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M¶hjˆ“ubhÎ)�”}”(hŒ&0 on success, negative error otherwise”h]”hŒ&0 on success, negative error otherwise”…”�”}”(hjДh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M·hjˆ“ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ&drm_dp_dpcd_clear_payload (C function)”Œc.drm_dp_dpcd_clear_payload”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ6int drm_dp_dpcd_clear_payload (struct drm_dp_aux *aux)”h]”j¤ )�”}”(hŒ5int drm_dp_dpcd_clear_payload(struct drm_dp_aux *aux)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjÿ”h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjû”h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.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Œdrm_dp_dpcd_clear_payload”h]”jÓ )�”}”(hŒdrm_dp_dpcd_clear_payload”h]”hŒdrm_dp_dpcd_clear_payload”…”�”}”(hj •h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj•ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjû”h²hh³j •h´MçubjÞ)�”}”(hŒ(struct drm_dp_aux *aux)”h]”jä)�”}”(hŒstruct drm_dp_aux *aux”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj<•h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj8•ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjI•h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj8•ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(hjZ•h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjW•ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j\•Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj"•sbŒc.drm_dp_dpcd_clear_payload”†”asbuh1hhj8•ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjz•h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj8•ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjˆ•h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj8•ubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hj••h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj8•ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj4•ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjû”h²hh³j •h´Mçubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ$Clear the entire VC Payload ID table”h]”hŒ$Clear the entire VC Payload ID table”…”�”}”(hj¿•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.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²hhjÎ9h³Nh´Nubj) )�”}”(hŒ¶**Parameters** ``struct drm_dp_aux *aux`` DisplayPort AUX channel **Description** Clear the entire VC Payload ID table. **Return** 0 on success, negative error code on errors.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjá•h]”hŒ Parameters”…”�”}”(hjã•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjß•ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MëhjÛ•ubjw )�”}”(hhh]”j| )�”}”(hŒ3``struct drm_dp_aux *aux`` DisplayPort AUX channel ”h]”(j‚ )�”}”(hŒ``struct drm_dp_aux *aux``”h]”jˆ )�”}”(hj–h]”hŒstruct drm_dp_aux *aux”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjþ•ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mèhjú•ubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort AUX channel”h]”hŒDisplayPort AUX channel”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j–h´Mèhj–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjú•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j–h´Mèhj÷•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÛ•ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj;–h]”hŒ Description”…”�”}”(hj=–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj9–ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MêhjÛ•ubhÎ)�”}”(hŒ%Clear the entire VC Payload ID table.”h]”hŒ%Clear the entire VC Payload ID table.”…”�”}”(hjQ–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MéhjÛ•ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjb–h]”hŒReturn”…”�”}”(hjd–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj`–ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MëhjÛ•ubhÎ)�”}”(hŒ,0 on success, negative error code on errors.”h]”hŒ,0 on success, negative error code on errors.”…”�”}”(hjx–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MìhjÛ•ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ)drm_dp_dpcd_poll_act_handled (C function)”Œc.drm_dp_dpcd_poll_act_handled”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒIint drm_dp_dpcd_poll_act_handled (struct drm_dp_aux *aux, int timeout_ms)”h]”j¤ )�”}”(hŒHint drm_dp_dpcd_poll_act_handled(struct drm_dp_aux *aux, int timeout_ms)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj§–h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj£–h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.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Œdrm_dp_dpcd_poll_act_handled”h]”jÓ )�”}”(hŒdrm_dp_dpcd_poll_act_handled”h]”hŒdrm_dp_dpcd_poll_act_handled”…”�”}”(hjÈ–h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÄ–ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj£–h²hh³jµ–h´MõubjÞ)�”}”(hŒ((struct drm_dp_aux *aux, int timeout_ms)”h]”(jä)�”}”(hŒstruct drm_dp_aux *aux”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Œ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(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%)�”}”jjÊ–sbŒc.drm_dp_dpcd_poll_act_handled”†”asbuh1hhjà–ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"—h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjà–ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj0—h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjà–ubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hj=—h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjà–ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÜ–ubjä)�”}”(hŒint timeout_ms”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjV—h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjR—ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjd—h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjR—ubjÓ )�”}”(hŒ timeout_ms”h]”hŒ timeout_ms”…”�”}”(hjr—h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjR—ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÜ–ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj£–h²hh³jµ–h´Mõubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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ŒPoll for ACT handled status”h]”hŒPoll for ACT handled status”…”�”}”(hjœ—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.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²hhjÎ9h³Nh´Nubj) )�”}”(hX�**Parameters** ``struct drm_dp_aux *aux`` DisplayPort AUX channel ``int timeout_ms`` Timeout in ms **Description** Try waiting for the sink to finish updating its payload table by polling for the ACT handled bit of DP_PAYLOAD_TABLE_UPDATE_STATUS for up to **timeout_ms** milliseconds, defaulting to 3000 ms if 0. **Return** 0 if the ACT was handled in time, negative error code on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj¾—h]”hŒ Parameters”…”�”}”(hjÀ—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¼—ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mùhj¸—ubjw )�”}”(hhh]”(j| )�”}”(hŒ3``struct drm_dp_aux *aux`` DisplayPort AUX channel ”h]”(j‚ )�”}”(hŒ``struct drm_dp_aux *aux``”h]”jˆ )�”}”(hjÝ—h]”hŒstruct drm_dp_aux *aux”…”�”}”(hjß—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÛ—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Möhj×—ubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort AUX channel”h]”hŒDisplayPort AUX channel”…”�”}”(hjö—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jò—h´Möhjó—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj×—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jò—h´MöhjÔ—ubj| )�”}”(hŒ!``int timeout_ms`` Timeout in ms ”h]”(j‚ )�”}”(hŒ``int timeout_ms``”h]”jˆ )�”}”(hj˜h]”hŒint timeout_ms”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M÷hj˜ubjž )�”}”(hhh]”hÎ)�”}”(hŒ Timeout in ms”h]”hŒ Timeout in ms”…”�”}”(hj/˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j+˜h´M÷hj,˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j+˜h´M÷hjÔ—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj¸—ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjQ˜h]”hŒ Description”…”�”}”(hjS˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjO˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mùhj¸—ubhÎ)�”}”(hŒÅTry waiting for the sink to finish updating its payload table by polling for the ACT handled bit of DP_PAYLOAD_TABLE_UPDATE_STATUS for up to **timeout_ms** milliseconds, defaulting to 3000 ms if 0.”h]”(hŒ�Try waiting for the sink to finish updating its payload table by polling for the ACT handled bit of DP_PAYLOAD_TABLE_UPDATE_STATUS for up to ”…”�”}”(hjg˜h²hh³Nh´Nubj3 )�”}”(hŒ**timeout_ms**”h]”hŒ timeout_ms”…”�”}”(hjo˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjg˜ubhŒ* milliseconds, defaulting to 3000 ms if 0.”…”�”}”(hjg˜h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Møhj¸—ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjŠ˜h]”hŒReturn”…”�”}”(hjŒ˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjˆ˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mühj¸—ubhÎ)�”}”(hŒA0 if the ACT was handled in time, negative error code on failure.”h]”hŒA0 if the ACT was handled in time, negative error code on failure.”…”�”}”(hj ˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mýhj¸—ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ&drm_dp_downstream_is_type (C function)”Œc.drm_dp_downstream_is_type”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒcbool drm_dp_downstream_is_type (const u8 dpcd[DP_RECEIVER_CAP_SIZE], const u8 port_cap[4], u8 type)”h]”j¤ )�”}”(hŒbbool drm_dp_downstream_is_type(const u8 dpcd[DP_RECEIVER_CAP_SIZE], const u8 port_cap[4], u8 type)”h]”(j¦)�”}”(hj£Ih]”hŒbool”…”�”}”(hjϘh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj˘h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.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Œdrm_dp_downstream_is_type”h]”jÓ )�”}”(hŒdrm_dp_downstream_is_type”h]”hŒdrm_dp_downstream_is_type”…”�”}”(hjï˜h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjë˜ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj˘h²hh³jܘh´M&ubjÞ)�”}”(hŒD(const u8 dpcd[DP_RECEIVER_CAP_SIZE], const u8 port_cap[4], u8 type)”h]”(jä)�”}”(hŒ#const u8 dpcd[DP_RECEIVER_CAP_SIZE]”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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Œu8”h]”hŒu8”…”�”}”(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%)�”}”jjñ˜sbŒc.drm_dp_downstream_is_type”†”asbuh1hhj™ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjI™h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj™ubjÓ )�”}”(hŒdpcd”h]”hŒdpcd”…”�”}”(hjW™h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj™ubj9)�”}”(hjMh]”hŒ[”…”�”}”(hje™h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj™ubh)�”}”(hhh]”jÓ )�”}”(hŒDP_RECEIVER_CAP_SIZE”h]”hŒDP_RECEIVER_CAP_SIZE”…”�”}”(hju™h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjr™ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jw™Œmodname”NŒ classname”Njé jì )�”}”jï ]”jE™Œc.drm_dp_downstream_is_type”†”asbuh1hhj™ubj9)�”}”(hj=Mh]”hŒ]”…”�”}”(hj“™h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj™ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj™ubjä)�”}”(hŒconst u8 port_cap[4]”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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Œu8”h]”hŒu8”…”�”}”(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ï ]”jE™Œc.drm_dp_downstream_is_type”†”asbuh1hhj§™ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjç™h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj§™ubjÓ )�”}”(hŒport_cap”h]”hŒport_cap”…”�”}”(hjõ™h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj§™ubj9)�”}”(hjMh]”hŒ[”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj§™ubhŒdesc_sig_literal_number”“”)�”}”(hŒ4”h]”hŒ4”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”Œm”ah"]”h$]”h&]”uh1jšhj§™ubj9)�”}”(hj=Mh]”hŒ]”…”�”}”(hj!šh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj§™ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj™ubjä)�”}”(hŒu8 type”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(hj<šh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj9šubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j>šŒmodname”NŒ classname”Njé jì )�”}”jï ]”jE™Œc.drm_dp_downstream_is_type”†”asbuh1hhj5šubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZšh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj5šubjÓ )�”}”(hŒtype”h]”hŒtype”…”�”}”(hjhšh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj5šubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj™ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj˘h²hh³jܘh´M&ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ.is the downstream facing port of certain type?”h]”hŒ.is the downstream facing port of certain type?”…”�”}”(hj’šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.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²hhjÎ9h³Nh´Nubj) )�”}”(hX**Parameters** ``const u8 dpcd[DP_RECEIVER_CAP_SIZE]`` DisplayPort configuration data ``const u8 port_cap[4]`` port capabilities ``u8 type`` port type to be checked. Can be: ``DP_DS_PORT_TYPE_DP``, ``DP_DS_PORT_TYPE_VGA``, ``DP_DS_PORT_TYPE_DVI``, ``DP_DS_PORT_TYPE_HDMI``, ``DP_DS_PORT_TYPE_NON_EDID``, ``DP_DS_PORT_TYPE_DP_DUALMODE`` or ``DP_DS_PORT_TYPE_WIRELESS``. **Description** Caveat: Only works with DPCD 1.1+ port caps. **Return** whether the downstream facing port matches the type.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj´šh]”hŒ Parameters”…”�”}”(hj¶šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj²šubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M*hj®šubjw )�”}”(hhh]”(j| )�”}”(hŒG``const u8 dpcd[DP_RECEIVER_CAP_SIZE]`` DisplayPort configuration data ”h]”(j‚ )�”}”(hŒ'``const u8 dpcd[DP_RECEIVER_CAP_SIZE]``”h]”jˆ )�”}”(hjÓšh]”hŒ#const u8 dpcd[DP_RECEIVER_CAP_SIZE]”…”�”}”(hjÕšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÑšubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M'hjÍšubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort configuration data”h]”hŒDisplayPort configuration data”…”�”}”(hjìšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jèšh´M'hjéšubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÍšubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jèšh´M'hjÊšubj| )�”}”(hŒ+``const u8 port_cap[4]`` port capabilities ”h]”(j‚ )�”}”(hŒ``const u8 port_cap[4]``”h]”jˆ )�”}”(hj ›h]”hŒconst u8 port_cap[4]”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj ›ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M(hj›ubjž )�”}”(hhh]”hÎ)�”}”(hŒport capabilities”h]”hŒport capabilities”…”�”}”(hj%›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j!›h´M(hj"›ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j!›h´M(hjÊšubj| )�”}”(hŒð``u8 type`` port type to be checked. Can be: ``DP_DS_PORT_TYPE_DP``, ``DP_DS_PORT_TYPE_VGA``, ``DP_DS_PORT_TYPE_DVI``, ``DP_DS_PORT_TYPE_HDMI``, ``DP_DS_PORT_TYPE_NON_EDID``, ``DP_DS_PORT_TYPE_DP_DUALMODE`` or ``DP_DS_PORT_TYPE_WIRELESS``. ”h]”(j‚ )�”}”(hŒ ``u8 type``”h]”jˆ )�”}”(hjE›h]”hŒu8 type”…”�”}”(hjG›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjC›ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M,hj?›ubjž )�”}”(hhh]”hÎ)�”}”(hŒãport type to be checked. Can be: ``DP_DS_PORT_TYPE_DP``, ``DP_DS_PORT_TYPE_VGA``, ``DP_DS_PORT_TYPE_DVI``, ``DP_DS_PORT_TYPE_HDMI``, ``DP_DS_PORT_TYPE_NON_EDID``, ``DP_DS_PORT_TYPE_DP_DUALMODE`` or ``DP_DS_PORT_TYPE_WIRELESS``.”h]”(hŒ!port type to be checked. Can be: ”…”�”}”(hj^›h²hh³Nh´Nubjˆ )�”}”(hŒ``DP_DS_PORT_TYPE_DP``”h]”hŒDP_DS_PORT_TYPE_DP”…”�”}”(hjf›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj^›ubhŒ, ”…”�”}”(hj^›h²hh³Nh´Nubjˆ )�”}”(hŒ``DP_DS_PORT_TYPE_VGA``”h]”hŒDP_DS_PORT_TYPE_VGA”…”�”}”(hjx›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj^›ubhŒ, ”…”�”}”hj^›sbjˆ )�”}”(hŒ``DP_DS_PORT_TYPE_DVI``”h]”hŒDP_DS_PORT_TYPE_DVI”…”�”}”(hjŠ›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj^›ubhŒ, ”…”�”}”(hj^›h²hh³Nh´Nubjˆ )�”}”(hŒ``DP_DS_PORT_TYPE_HDMI``”h]”hŒDP_DS_PORT_TYPE_HDMI”…”�”}”(hjœ›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj^›ubhŒ, ”…”�”}”hj^›sbjˆ )�”}”(hŒ``DP_DS_PORT_TYPE_NON_EDID``”h]”hŒDP_DS_PORT_TYPE_NON_EDID”…”�”}”(hj®›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj^›ubhŒ, ”…”�”}”hj^›sbjˆ )�”}”(hŒ``DP_DS_PORT_TYPE_DP_DUALMODE``”h]”hŒDP_DS_PORT_TYPE_DP_DUALMODE”…”�”}”(hjÀ›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj^›ubhŒ or ”…”�”}”(hj^›h²hh³Nh´Nubjˆ )�”}”(hŒ``DP_DS_PORT_TYPE_WIRELESS``”h]”hŒDP_DS_PORT_TYPE_WIRELESS”…”�”}”(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³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M)hj[›ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj?›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jZ›h´M,hjÊšubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj®šubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjÿ›h]”hŒ Description”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjý›ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M.hj®šubhÎ)�”}”(hŒ,Caveat: Only works with DPCD 1.1+ port caps.”h]”hŒ,Caveat: Only works with DPCD 1.1+ port caps.”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M-hj®šubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj&œh]”hŒReturn”…”�”}”(hj(œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj$œubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M/hj®šubhÎ)�”}”(hŒ4whether the downstream facing port matches the type.”h]”hŒ4whether the downstream facing port matches the type.”…”�”}”(hj<œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M0hj®šubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ&drm_dp_downstream_is_tmds (C function)”Œc.drm_dp_downstream_is_tmds”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ{bool drm_dp_downstream_is_tmds (const u8 dpcd[DP_RECEIVER_CAP_SIZE], const u8 port_cap[4], const struct drm_edid *drm_edid)”h]”j¤ )�”}”(hŒzbool drm_dp_downstream_is_tmds(const u8 dpcd[DP_RECEIVER_CAP_SIZE], const u8 port_cap[4], const struct drm_edid *drm_edid)”h]”(j¦)�”}”(hj£Ih]”hŒbool”…”�”}”(hjkœh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjgœh²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M<ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyœh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjgœh²hh³jxœh´M<ubjÍ )�”}”(hŒdrm_dp_downstream_is_tmds”h]”jÓ )�”}”(hŒdrm_dp_downstream_is_tmds”h]”hŒdrm_dp_downstream_is_tmds”…”�”}”(hj‹œh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj‡œubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjgœh²hh³jxœh´M<ubjÞ)�”}”(hŒ\(const u8 dpcd[DP_RECEIVER_CAP_SIZE], const u8 port_cap[4], const struct drm_edid *drm_edid)”h]”(jä)�”}”(hŒ#const u8 dpcd[DP_RECEIVER_CAP_SIZE]”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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Œu8”h]”hŒu8”…”�”}”(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%)�”}”jj�œsbŒc.drm_dp_downstream_is_tmds”†”asbuh1hhj£œubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjåœh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj£œubjÓ )�”}”(hŒdpcd”h]”hŒdpcd”…”�”}”(hjóœh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj£œubj9)�”}”(hjMh]”hŒ[”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj£œubh)�”}”(hhh]”jÓ )�”}”(hŒDP_RECEIVER_CAP_SIZE”h]”hŒDP_RECEIVER_CAP_SIZE”…”�”}”(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.drm_dp_downstream_is_tmds”†”asbuh1hhj£œubj9)�”}”(hj=Mh]”hŒ]”…”�”}”(hj/�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj£œubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjŸœubjä)�”}”(hŒconst u8 port_cap[4]”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hjG�h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjC�ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjT�h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjC�ubh)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(hje�h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjb�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jg�Œmodname”NŒ classname”Njé jì )�”}”jï ]”jᜌc.drm_dp_downstream_is_tmds”†”asbuh1hhjC�ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒ�h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjC�ubjÓ )�”}”(hŒport_cap”h]”hŒport_cap”…”�”}”(hj‘�h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjC�ubj9)�”}”(hjMh]”hŒ[”…”�”}”(hjŸ�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjC�ubjš)�”}”(hjšh]”hŒ4”…”�”}”(hj¬�h²hh³Nh´Nubah}”(h]”h ]”jšah"]”h$]”h&]”uh1jšhjC�ubj9)�”}”(hj=Mh]”hŒ]”…”�”}”(hj¹�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjC�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjŸœubjä)�”}”(hŒconst struct drm_edid *drm_edid”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(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Œdrm_edid”h]”hŒdrm_edid”…”�”}”(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.drm_dp_downstream_is_tmds”†”asbuh1hhjÍ�ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(žh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÍ�ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj6žh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÍ�ubjÓ )�”}”(hŒdrm_edid”h]”hŒdrm_edid”…”�”}”(hjCžh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÍ�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjŸœubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjgœh²hh³jxœh´M<ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjcœh²hh³jxœh´M<ubah}”(h]”j^œah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jxœh´M<hj`œh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ#is the downstream facing port TMDS?”h]”hŒ#is the downstream facing port TMDS?”…”�”}”(hjmžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M<hjjžh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj`œh²hh³jxœh´M<ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j…žj$ j…žj% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hŒö**Parameters** ``const u8 dpcd[DP_RECEIVER_CAP_SIZE]`` DisplayPort configuration data ``const u8 port_cap[4]`` port capabilities ``const struct drm_edid *drm_edid`` EDID **Return** whether the downstream facing port is TMDS (HDMI/DVI).”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj�žh]”hŒ Parameters”…”�”}”(hj‘žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj�žubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M@hj‰žubjw )�”}”(hhh]”(j| )�”}”(hŒG``const u8 dpcd[DP_RECEIVER_CAP_SIZE]`` DisplayPort configuration data ”h]”(j‚ )�”}”(hŒ'``const u8 dpcd[DP_RECEIVER_CAP_SIZE]``”h]”jˆ )�”}”(hj®žh]”hŒ#const u8 dpcd[DP_RECEIVER_CAP_SIZE]”…”�”}”(hj°žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¬žubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M=hj¨žubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort configuration data”h]”hŒDisplayPort configuration data”…”�”}”(hjÇžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÞh´M=hjÄžubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¨žubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÞh´M=hj¥žubj| )�”}”(hŒ+``const u8 port_cap[4]`` port capabilities ”h]”(j‚ )�”}”(hŒ``const u8 port_cap[4]``”h]”jˆ )�”}”(hjçžh]”hŒconst u8 port_cap[4]”…”�”}”(hjéžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjåžubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M>hjážubjž )�”}”(hhh]”hÎ)�”}”(hŒport capabilities”h]”hŒport capabilities”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jüžh´M>hjýžubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjážubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jüžh´M>hj¥žubj| )�”}”(hŒ)``const struct drm_edid *drm_edid`` EDID ”h]”(j‚ )�”}”(hŒ#``const struct drm_edid *drm_edid``”h]”jˆ )�”}”(hj Ÿh]”hŒconst struct drm_edid *drm_edid”…”�”}”(hj"Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M?hjŸubjž )�”}”(hhh]”hÎ)�”}”(hŒEDID”h]”hŒEDID”…”�”}”(hj9Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j5Ÿh´M?hj6Ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjŸubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j5Ÿh´M?hj¥žubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj‰žubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj[Ÿh]”hŒReturn”…”�”}”(hj]Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjYŸubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MAhj‰žubhÎ)�”}”(hŒ6whether the downstream facing port is TMDS (HDMI/DVI).”h]”hŒ6whether the downstream facing port is TMDS (HDMI/DVI).”…”�”}”(hjqŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MAhj‰žubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ+drm_dp_send_real_edid_checksum (C function)”Œ c.drm_dp_send_real_edid_checksum”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒSbool drm_dp_send_real_edid_checksum (struct drm_dp_aux *aux, u8 real_edid_checksum)”h]”j¤ )�”}”(hŒRbool drm_dp_send_real_edid_checksum(struct drm_dp_aux *aux, u8 real_edid_checksum)”h]”(j¦)�”}”(hj£Ih]”hŒbool”…”�”}”(hj Ÿh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjœŸh²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.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Œdrm_dp_send_real_edid_checksum”h]”jÓ )�”}”(hŒdrm_dp_send_real_edid_checksum”h]”hŒdrm_dp_send_real_edid_checksum”…”�”}”(hjÀŸh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¼Ÿubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjœŸh²hh³j­Ÿh´M_ubjÞ)�”}”(hŒ/(struct drm_dp_aux *aux, u8 real_edid_checksum)”h]”(jä)�”}”(hŒstruct drm_dp_aux *aux”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Œ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(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%)�”}”jjŸsbŒ c.drm_dp_send_real_edid_checksum”†”asbuh1hhjØŸubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjØŸubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj( h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjØŸubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hj5 h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjØŸubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÔŸubjä)�”}”(hŒu8 real_edid_checksum”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(hjQ h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjN ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jS Œmodname”NŒ classname”Njé jì )�”}”jï ]”j Œ c.drm_dp_send_real_edid_checksum”†”asbuh1hhjJ ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjo h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjJ ubjÓ )�”}”(hŒreal_edid_checksum”h]”hŒreal_edid_checksum”…”�”}”(hj} h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjJ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÔŸubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjœŸh²hh³j­Ÿh´M_ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ"send back real edid checksum value”h]”hŒ"send back real edid checksum value”…”�”}”(hj§ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.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²hhjÎ9h³Nh´Nubj) )�”}”(hŒ¤**Parameters** ``struct drm_dp_aux *aux`` DisplayPort AUX channel ``u8 real_edid_checksum`` real edid checksum for the last block **Return** True on success”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjÉ h]”hŒ Parameters”…”�”}”(hjË h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÇ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mchjàubjw )�”}”(hhh]”(j| )�”}”(hŒ3``struct drm_dp_aux *aux`` DisplayPort AUX channel ”h]”(j‚ )�”}”(hŒ``struct drm_dp_aux *aux``”h]”jˆ )�”}”(hjè h]”hŒstruct drm_dp_aux *aux”…”�”}”(hjê h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjæ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M`hjâ ubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort AUX channel”h]”hŒDisplayPort AUX channel”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jý h´M`hjþ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjâ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jý h´M`hjß ubj| )�”}”(hŒ@``u8 real_edid_checksum`` real edid checksum for the last block ”h]”(j‚ )�”}”(hŒ``u8 real_edid_checksum``”h]”jˆ )�”}”(hj!¡h]”hŒu8 real_edid_checksum”…”�”}”(hj#¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mahj¡ubjž )�”}”(hhh]”hÎ)�”}”(hŒ%real edid checksum for the last block”h]”hŒ%real edid checksum for the last block”…”�”}”(hj:¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j6¡h´Mahj7¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j6¡h´Mahjß ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjàubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj\¡h]”hŒReturn”…”�”}”(hj^¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjZ¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MchjàubhÎ)�”}”(hŒTrue on success”h]”hŒTrue on success”…”�”}”(hjr¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mchjàubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ"drm_dp_read_dpcd_caps (C function)”Œc.drm_dp_read_dpcd_caps”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒQint drm_dp_read_dpcd_caps (struct drm_dp_aux *aux, u8 dpcd[DP_RECEIVER_CAP_SIZE])”h]”j¤ )�”}”(hŒPint drm_dp_read_dpcd_caps(struct drm_dp_aux *aux, u8 dpcd[DP_RECEIVER_CAP_SIZE])”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj¡¡h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj�¡h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.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Œdrm_dp_read_dpcd_caps”h]”jÓ )�”}”(hŒdrm_dp_read_dpcd_caps”h]”hŒdrm_dp_read_dpcd_caps”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¾¡ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj�¡h²hh³j¯¡h´MÌubjÞ)�”}”(hŒ7(struct drm_dp_aux *aux, u8 dpcd[DP_RECEIVER_CAP_SIZE])”h]”(jä)�”}”(hŒstruct drm_dp_aux *aux”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Œ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(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%)�”}”jjÄ¡sbŒc.drm_dp_read_dpcd_caps”†”asbuh1hhjÚ¡ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÚ¡ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj*¢h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÚ¡ubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hj7¢h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÚ¡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÖ¡ubjä)�”}”(hŒu8 dpcd[DP_RECEIVER_CAP_SIZE]”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(hjS¢h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjP¢ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jU¢Œmodname”NŒ classname”Njé jì )�”}”jï ]”j¢Œc.drm_dp_read_dpcd_caps”†”asbuh1hhjL¢ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjq¢h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjL¢ubjÓ )�”}”(hŒdpcd”h]”hŒdpcd”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjL¢ubj9)�”}”(hjMh]”hŒ[”…”�”}”(hj�¢h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjL¢ubh)�”}”(hhh]”jÓ )�”}”(hŒDP_RECEIVER_CAP_SIZE”h]”hŒDP_RECEIVER_CAP_SIZE”…”�”}”(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.drm_dp_read_dpcd_caps”†”asbuh1hhjL¢ubj9)�”}”(hj=Mh]”hŒ]”…”�”}”(hj»¢h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjL¢ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÖ¡ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj�¡h²hh³j¯¡h´MÌubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ2read DPCD caps and extended DPCD caps if available”h]”hŒ2read DPCD caps and extended DPCD caps if available”…”�”}”(hjä¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.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²hhjÎ9h³Nh´Nubj) )�”}”(hX’**Parameters** ``struct drm_dp_aux *aux`` DisplayPort AUX channel ``u8 dpcd[DP_RECEIVER_CAP_SIZE]`` Buffer to store the resulting DPCD in **Description** Attempts to read the base DPCD caps for **aux**. Additionally, this function checks for and reads the extended DPRX caps (``DP_DP13_DPCD_REV``) if present. **Return** ``0`` if the DPCD was read successfully, negative error code otherwise.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj£h]”hŒ Parameters”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj£ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MÐhj£ubjw )�”}”(hhh]”(j| )�”}”(hŒ3``struct drm_dp_aux *aux`` DisplayPort AUX channel ”h]”(j‚ )�”}”(hŒ``struct drm_dp_aux *aux``”h]”jˆ )�”}”(hj%£h]”hŒstruct drm_dp_aux *aux”…”�”}”(hj'£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj#£ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MÎhj£ubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort AUX channel”h]”hŒDisplayPort AUX channel”…”�”}”(hj>£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j:£h´MÎhj;£ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j:£h´MÎhj£ubj| )�”}”(hŒH``u8 dpcd[DP_RECEIVER_CAP_SIZE]`` Buffer to store the resulting DPCD in ”h]”(j‚ )�”}”(hŒ!``u8 dpcd[DP_RECEIVER_CAP_SIZE]``”h]”jˆ )�”}”(hj^£h]”hŒu8 dpcd[DP_RECEIVER_CAP_SIZE]”…”�”}”(hj`£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj\£ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MÏhjX£ubjž )�”}”(hhh]”hÎ)�”}”(hŒ%Buffer to store the resulting DPCD in”h]”hŒ%Buffer to store the resulting DPCD in”…”�”}”(hjw£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³js£h´MÏhjt£ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjX£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³js£h´MÏhj£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj£ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj™£h]”hŒ Description”…”�”}”(hj›£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj—£ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MÑhj£ubhÎ)�”}”(hŒ›Attempts to read the base DPCD caps for **aux**. Additionally, this function checks for and reads the extended DPRX caps (``DP_DP13_DPCD_REV``) if present.”h]”(hŒ(Attempts to read the base DPCD caps for ”…”�”}”(hj¯£h²hh³Nh´Nubj3 )�”}”(hŒ**aux**”h]”hŒaux”…”�”}”(hj·£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¯£ubhŒK. Additionally, this function checks for and reads the extended DPRX caps (”…”�”}”(hj¯£h²hh³Nh´Nubjˆ )�”}”(hŒ``DP_DP13_DPCD_REV``”h]”hŒDP_DP13_DPCD_REV”…”�”}”(hjÉ£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¯£ubhŒ ) if present.”…”�”}”(hj¯£h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MÐhj£ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjä£h]”hŒReturn”…”�”}”(hjæ£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjâ£ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MÔhj£ubhÎ)�”}”(hŒG``0`` if the DPCD was read successfully, negative error code otherwise.”h]”(jˆ )�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hjþ£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjú£ubhŒB if the DPCD was read successfully, negative error code otherwise.”…”�”}”(hjú£h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MÕhj£ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ(drm_dp_read_downstream_info (C function)”Œc.drm_dp_read_downstream_info”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ‹int drm_dp_read_downstream_info (struct drm_dp_aux *aux, const u8 dpcd[DP_RECEIVER_CAP_SIZE], u8 downstream_ports[DP_MAX_DOWNSTREAM_PORTS])”h]”j¤ )�”}”(hŒŠint drm_dp_read_downstream_info(struct drm_dp_aux *aux, const u8 dpcd[DP_RECEIVER_CAP_SIZE], u8 downstream_ports[DP_MAX_DOWNSTREAM_PORTS])”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj7¤h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj3¤h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mîubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjF¤h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj3¤h²hh³jE¤h´MîubjÍ )�”}”(hŒdrm_dp_read_downstream_info”h]”jÓ )�”}”(hŒdrm_dp_read_downstream_info”h]”hŒdrm_dp_read_downstream_info”…”�”}”(hjX¤h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjT¤ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj3¤h²hh³jE¤h´MîubjÞ)�”}”(hŒk(struct drm_dp_aux *aux, const u8 dpcd[DP_RECEIVER_CAP_SIZE], u8 downstream_ports[DP_MAX_DOWNSTREAM_PORTS])”h]”(jä)�”}”(hŒstruct drm_dp_aux *aux”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjt¤h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjp¤ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�¤h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjp¤ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(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%)�”}”jjZ¤sbŒc.drm_dp_read_downstream_info”†”asbuh1hhjp¤ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²¤h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjp¤ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÀ¤h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjp¤ubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hjͤh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjp¤ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjl¤ubjä)�”}”(hŒ#const u8 dpcd[DP_RECEIVER_CAP_SIZE]”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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Œu8”h]”hŒu8”…”�”}”(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.drm_dp_read_downstream_info”†”asbuh1hhjâ¤ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"¥h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjâ¤ubjÓ )�”}”(hŒdpcd”h]”hŒdpcd”…”�”}”(hj0¥h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjâ¤ubj9)�”}”(hjMh]”hŒ[”…”�”}”(hj>¥h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjâ¤ubh)�”}”(hhh]”jÓ )�”}”(hŒDP_RECEIVER_CAP_SIZE”h]”hŒDP_RECEIVER_CAP_SIZE”…”�”}”(hjN¥h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjK¥ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jP¥Œmodname”NŒ classname”Njé jì )�”}”jï ]”j®¤Œc.drm_dp_read_downstream_info”†”asbuh1hhjâ¤ubj9)�”}”(hj=Mh]”hŒ]”…”�”}”(hjl¥h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjâ¤ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjl¤ubjä)�”}”(hŒ,u8 downstream_ports[DP_MAX_DOWNSTREAM_PORTS]”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(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.drm_dp_read_downstream_info”†”asbuh1hhj€¥ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥¥h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj€¥ubjÓ )�”}”(hŒdownstream_ports”h]”hŒdownstream_ports”…”�”}”(hj³¥h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj€¥ubj9)�”}”(hjMh]”hŒ[”…”�”}”(hjÁ¥h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj€¥ubh)�”}”(hhh]”jÓ )�”}”(hŒDP_MAX_DOWNSTREAM_PORTS”h]”hŒDP_MAX_DOWNSTREAM_PORTS”…”�”}”(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.drm_dp_read_downstream_info”†”asbuh1hhj€¥ubj9)�”}”(hj=Mh]”hŒ]”…”�”}”(hjï¥h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj€¥ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjl¤ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj3¤h²hh³jE¤h´Mîubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj/¤h²hh³jE¤h´Mîubah}”(h]”j*¤ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jE¤h´Mîhj,¤h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ+read DPCD downstream port info if available”h]”hŒ+read DPCD downstream port info if available”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mîhj¦h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj,¤h²hh³jE¤h´Mîubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j0¦j$ j0¦j% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hXÛ**Parameters** ``struct drm_dp_aux *aux`` DisplayPort AUX channel ``const u8 dpcd[DP_RECEIVER_CAP_SIZE]`` A cached copy of the port's DPCD ``u8 downstream_ports[DP_MAX_DOWNSTREAM_PORTS]`` buffer to store the downstream port info in **Description** See also: drm_dp_downstream_max_clock() drm_dp_downstream_max_bpc() **Return** 0 if either the downstream port info was read successfully or there was no downstream info to read, or a negative error code otherwise.”•h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj:¦h]”hŒ Parameters”…”�”}”(hj<¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj8¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mòhj4¦ubjw )�”}”(hhh]”(j| )�”}”(hŒ3``struct drm_dp_aux *aux`` DisplayPort AUX channel ”h]”(j‚ )�”}”(hŒ``struct drm_dp_aux *aux``”h]”jˆ )�”}”(hjY¦h]”hŒstruct drm_dp_aux *aux”…”�”}”(hj[¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjW¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MïhjS¦ubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort AUX channel”h]”hŒDisplayPort AUX channel”…”�”}”(hjr¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jn¦h´Mïhjo¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjS¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jn¦h´MïhjP¦ubj| )�”}”(hŒI``const u8 dpcd[DP_RECEIVER_CAP_SIZE]`` A cached copy of the port's DPCD ”h]”(j‚ )�”}”(hŒ'``const u8 dpcd[DP_RECEIVER_CAP_SIZE]``”h]”jˆ )�”}”(hj’¦h]”hŒ#const u8 dpcd[DP_RECEIVER_CAP_SIZE]”…”�”}”(hj”¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj�¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MðhjŒ¦ubjž )�”}”(hhh]”hÎ)�”}”(hŒ A cached copy of the port's DPCD”h]”hŒ"A cached copy of the port’s DPCD”…”�”}”(hj«¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j§¦h´Mðhj¨¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjŒ¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j§¦h´MðhjP¦ubj| )�”}”(hŒ]``u8 downstream_ports[DP_MAX_DOWNSTREAM_PORTS]`` buffer to store the downstream port info in ”h]”(j‚ )�”}”(hŒ0``u8 downstream_ports[DP_MAX_DOWNSTREAM_PORTS]``”h]”jˆ )�”}”(hj˦h]”hŒ,u8 downstream_ports[DP_MAX_DOWNSTREAM_PORTS]”…”�”}”(hjͦh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjɦubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MñhjŦubjž )�”}”(hhh]”hÎ)�”}”(hŒ+buffer to store the downstream port info in”h]”hŒ+buffer to store the downstream port info in”…”�”}”(hjä¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jà¦h´Mñhjá¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjŦubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jà¦h´MñhjP¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj4¦ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj§h]”hŒ Description”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj§ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Móhj4¦ubhÎ)�”}”(hŒCSee also: drm_dp_downstream_max_clock() drm_dp_downstream_max_bpc()”h]”hŒCSee also: drm_dp_downstream_max_clock() drm_dp_downstream_max_bpc()”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mòhj4¦ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj-§h]”hŒReturn”…”�”}”(hj/§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj+§ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Möhj4¦ubhÎ)�”}”(hŒ‡0 if either the downstream port info was read successfully or there was no downstream info to read, or a negative error code otherwise.”h]”hŒ‡0 if either the downstream port info was read successfully or there was no downstream info to read, or a negative error code otherwise.”…”�”}”(hjC§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M÷hj4¦ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ+drm_dp_downstream_max_dotclock (C function)”Œ c.drm_dp_downstream_max_dotclock”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ^int drm_dp_downstream_max_dotclock (const u8 dpcd[DP_RECEIVER_CAP_SIZE], const u8 port_cap[4])”h]”j¤ )�”}”(hŒ]int drm_dp_downstream_max_dotclock(const u8 dpcd[DP_RECEIVER_CAP_SIZE], const u8 port_cap[4])”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjr§h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjn§h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�§h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjn§h²hh³j€§h´MubjÍ )�”}”(hŒdrm_dp_downstream_max_dotclock”h]”jÓ )�”}”(hŒdrm_dp_downstream_max_dotclock”h]”hŒdrm_dp_downstream_max_dotclock”…”�”}”(hj“§h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj�§ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjn§h²hh³j€§h´MubjÞ)�”}”(hŒ;(const u8 dpcd[DP_RECEIVER_CAP_SIZE], const u8 port_cap[4])”h]”(jä)�”}”(hŒ#const u8 dpcd[DP_RECEIVER_CAP_SIZE]”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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Œu8”h]”hŒu8”…”�”}”(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%)�”}”jj•§sbŒ c.drm_dp_downstream_max_dotclock”†”asbuh1hhj«§ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjí§h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj«§ubjÓ )�”}”(hŒdpcd”h]”hŒdpcd”…”�”}”(hjû§h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj«§ubj9)�”}”(hjMh]”hŒ[”…”�”}”(hj ¨h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj«§ubh)�”}”(hhh]”jÓ )�”}”(hŒDP_RECEIVER_CAP_SIZE”h]”hŒDP_RECEIVER_CAP_SIZE”…”�”}”(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.drm_dp_downstream_max_dotclock”†”asbuh1hhj«§ubj9)�”}”(hj=Mh]”hŒ]”…”�”}”(hj7¨h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj«§ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj§§ubjä)�”}”(hŒconst u8 port_cap[4]”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hjO¨h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjK¨ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\¨h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjK¨ubh)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(hjm¨h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjj¨ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jo¨Œmodname”NŒ classname”Njé jì )�”}”jï ]”jé§Œ c.drm_dp_downstream_max_dotclock”†”asbuh1hhjK¨ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹¨h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjK¨ubjÓ )�”}”(hŒport_cap”h]”hŒport_cap”…”�”}”(hj™¨h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjK¨ubj9)�”}”(hjMh]”hŒ[”…”�”}”(hj§¨h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjK¨ubjš)�”}”(hjšh]”hŒ4”…”�”}”(hj´¨h²hh³Nh´Nubah}”(h]”h ]”jšah"]”h$]”h&]”uh1jšhjK¨ubj9)�”}”(hj=Mh]”hŒ]”…”�”}”(hjÁ¨h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjK¨ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj§§ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjn§h²hh³j€§h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjj§h²hh³j€§h´Mubah}”(h]”je§ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j€§h´Mhjg§h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ,extract downstream facing port max dot clock”h]”hŒ,extract downstream facing port max dot clock”…”�”}”(hjê¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mhjç¨h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjg§h²hh³j€§h´Mubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j©j$ j©j% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hŒé**Parameters** ``const u8 dpcd[DP_RECEIVER_CAP_SIZE]`` DisplayPort configuration data ``const u8 port_cap[4]`` port capabilities **Return** Downstream facing port max dot clock in kHz on success, or 0 if max clock not defined”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj ©h]”hŒ Parameters”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj ©ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M!hj©ubjw )�”}”(hhh]”(j| )�”}”(hŒG``const u8 dpcd[DP_RECEIVER_CAP_SIZE]`` DisplayPort configuration data ”h]”(j‚ )�”}”(hŒ'``const u8 dpcd[DP_RECEIVER_CAP_SIZE]``”h]”jˆ )�”}”(hj+©h]”hŒ#const u8 dpcd[DP_RECEIVER_CAP_SIZE]”…”�”}”(hj-©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj)©ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mhj%©ubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort configuration data”h]”hŒDisplayPort configuration data”…”�”}”(hjD©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j@©h´MhjA©ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj%©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j@©h´Mhj"©ubj| )�”}”(hŒ+``const u8 port_cap[4]`` port capabilities ”h]”(j‚ )�”}”(hŒ``const u8 port_cap[4]``”h]”jˆ )�”}”(hjd©h]”hŒconst u8 port_cap[4]”…”�”}”(hjf©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjb©ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mhj^©ubjž )�”}”(hhh]”hÎ)�”}”(hŒport capabilities”h]”hŒport capabilities”…”�”}”(hj}©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jy©h´Mhjz©ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj^©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jy©h´Mhj"©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj©ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjŸ©h]”hŒReturn”…”�”}”(hj¡©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj�©ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M!hj©ubhÎ)�”}”(hŒUDownstream facing port max dot clock in kHz on success, or 0 if max clock not defined”h]”hŒUDownstream facing port max dot clock in kHz on success, or 0 if max clock not defined”…”�”}”(hjµ©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M!hj©ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ-drm_dp_downstream_max_tmds_clock (C function)”Œ"c.drm_dp_downstream_max_tmds_clock”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ�int drm_dp_downstream_max_tmds_clock (const u8 dpcd[DP_RECEIVER_CAP_SIZE], const u8 port_cap[4], const struct drm_edid *drm_edid)”h]”j¤ )�”}”(hŒ€int drm_dp_downstream_max_tmds_clock(const u8 dpcd[DP_RECEIVER_CAP_SIZE], const u8 port_cap[4], const struct drm_edid *drm_edid)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjä©h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjà©h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M9ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjó©h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjà©h²hh³jò©h´M9ubjÍ )�”}”(hŒ drm_dp_downstream_max_tmds_clock”h]”jÓ )�”}”(hŒ drm_dp_downstream_max_tmds_clock”h]”hŒ drm_dp_downstream_max_tmds_clock”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjªubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjà©h²hh³jò©h´M9ubjÞ)�”}”(hŒ\(const u8 dpcd[DP_RECEIVER_CAP_SIZE], const u8 port_cap[4], const struct drm_edid *drm_edid)”h]”(jä)�”}”(hŒ#const u8 dpcd[DP_RECEIVER_CAP_SIZE]”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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Œu8”h]”hŒu8”…”�”}”(hj?ªh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj<ªubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jAªŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjªsbŒ"c.drm_dp_downstream_max_tmds_clock”†”asbuh1hhjªubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_ªh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjªubjÓ )�”}”(hŒdpcd”h]”hŒdpcd”…”�”}”(hjmªh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjªubj9)�”}”(hjMh]”hŒ[”…”�”}”(hj{ªh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjªubh)�”}”(hhh]”jÓ )�”}”(hŒDP_RECEIVER_CAP_SIZE”h]”hŒDP_RECEIVER_CAP_SIZE”…”�”}”(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.drm_dp_downstream_max_tmds_clock”†”asbuh1hhjªubj9)�”}”(hj=Mh]”hŒ]”…”�”}”(hj©ªh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjªubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjªubjä)�”}”(hŒconst u8 port_cap[4]”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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Œu8”h]”hŒu8”…”�”}”(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.drm_dp_downstream_max_tmds_clock”†”asbuh1hhj½ªubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýªh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj½ªubjÓ )�”}”(hŒport_cap”h]”hŒport_cap”…”�”}”(hj «h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj½ªubj9)�”}”(hjMh]”hŒ[”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj½ªubjš)�”}”(hjšh]”hŒ4”…”�”}”(hj&«h²hh³Nh´Nubah}”(h]”h ]”jšah"]”h$]”h&]”uh1jšhj½ªubj9)�”}”(hj=Mh]”hŒ]”…”�”}”(hj3«h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj½ªubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjªubjä)�”}”(hŒconst struct drm_edid *drm_edid”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hjK«h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjG«ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjX«h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjG«ubjª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjf«h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjG«ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjs«h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjG«ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_edid”h]”hŒdrm_edid”…”�”}”(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.drm_dp_downstream_max_tmds_clock”†”asbuh1hhjG«ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢«h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjG«ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj°«h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjG«ubjÓ )�”}”(hŒdrm_edid”h]”hŒdrm_edid”…”�”}”(hj½«h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjG«ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjªubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjà©h²hh³jò©h´M9ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjÜ©h²hh³jò©h´M9ubah}”(h]”jשah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jò©h´M9hjÙ©h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ-extract downstream facing port max TMDS clock”h]”hŒ-extract downstream facing port max TMDS clock”…”�”}”(hjç«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M9hjä«h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÙ©h²hh³jò©h´M9ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jÿ«j$ jÿ«j% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hX$**Parameters** ``const u8 dpcd[DP_RECEIVER_CAP_SIZE]`` DisplayPort configuration data ``const u8 port_cap[4]`` port capabilities ``const struct drm_edid *drm_edid`` EDID **Return** HDMI/DVI downstream facing port max TMDS clock in kHz on success, or 0 if max TMDS clock not defined”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj ¬h]”hŒ Parameters”…”�”}”(hj ¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M=hj¬ubjw )�”}”(hhh]”(j| )�”}”(hŒG``const u8 dpcd[DP_RECEIVER_CAP_SIZE]`` DisplayPort configuration data ”h]”(j‚ )�”}”(hŒ'``const u8 dpcd[DP_RECEIVER_CAP_SIZE]``”h]”jˆ )�”}”(hj(¬h]”hŒ#const u8 dpcd[DP_RECEIVER_CAP_SIZE]”…”�”}”(hj*¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj&¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M:hj"¬ubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort configuration data”h]”hŒDisplayPort configuration data”…”�”}”(hjA¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j=¬h´M:hj>¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj"¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j=¬h´M:hj¬ubj| )�”}”(hŒ+``const u8 port_cap[4]`` port capabilities ”h]”(j‚ )�”}”(hŒ``const u8 port_cap[4]``”h]”jˆ )�”}”(hja¬h]”hŒconst u8 port_cap[4]”…”�”}”(hjc¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj_¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M;hj[¬ubjž )�”}”(hhh]”hÎ)�”}”(hŒport capabilities”h]”hŒport capabilities”…”�”}”(hjz¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jv¬h´M;hjw¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj[¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jv¬h´M;hj¬ubj| )�”}”(hŒ)``const struct drm_edid *drm_edid`` EDID ”h]”(j‚ )�”}”(hŒ#``const struct drm_edid *drm_edid``”h]”jˆ )�”}”(hjš¬h]”hŒconst struct drm_edid *drm_edid”…”�”}”(hjœ¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj˜¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M<hj”¬ubjž )�”}”(hhh]”hÎ)�”}”(hŒEDID”h]”hŒEDID”…”�”}”(hj³¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¯¬h´M<hj°¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj”¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¯¬h´M<hj¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj¬ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjÕ¬h]”hŒReturn”…”�”}”(hj׬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÓ¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M>hj¬ubhÎ)�”}”(hŒdHDMI/DVI downstream facing port max TMDS clock in kHz on success, or 0 if max TMDS clock not defined”h]”hŒdHDMI/DVI downstream facing port max TMDS clock in kHz on success, or 0 if max TMDS clock not defined”…”�”}”(hjë¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M>hj¬ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ-drm_dp_downstream_min_tmds_clock (C function)”Œ"c.drm_dp_downstream_min_tmds_clock”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ�int drm_dp_downstream_min_tmds_clock (const u8 dpcd[DP_RECEIVER_CAP_SIZE], const u8 port_cap[4], const struct drm_edid *drm_edid)”h]”j¤ )�”}”(hŒ€int drm_dp_downstream_min_tmds_clock(const u8 dpcd[DP_RECEIVER_CAP_SIZE], const u8 port_cap[4], const struct drm_edid *drm_edid)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj­h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mzubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)­h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj­h²hh³j(­h´MzubjÍ )�”}”(hŒ drm_dp_downstream_min_tmds_clock”h]”jÓ )�”}”(hŒ drm_dp_downstream_min_tmds_clock”h]”hŒ drm_dp_downstream_min_tmds_clock”…”�”}”(hj;­h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj7­ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj­h²hh³j(­h´MzubjÞ)�”}”(hŒ\(const u8 dpcd[DP_RECEIVER_CAP_SIZE], const u8 port_cap[4], const struct drm_edid *drm_edid)”h]”(jä)�”}”(hŒ#const u8 dpcd[DP_RECEIVER_CAP_SIZE]”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hjW­h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjS­ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjd­h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjS­ubh)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(hju­h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjr­ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jw­Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj=­sbŒ"c.drm_dp_downstream_min_tmds_clock”†”asbuh1hhjS­ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•­h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjS­ubjÓ )�”}”(hŒdpcd”h]”hŒdpcd”…”�”}”(hj£­h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjS­ubj9)�”}”(hjMh]”hŒ[”…”�”}”(hj±­h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjS­ubh)�”}”(hhh]”jÓ )�”}”(hŒDP_RECEIVER_CAP_SIZE”h]”hŒDP_RECEIVER_CAP_SIZE”…”�”}”(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.drm_dp_downstream_min_tmds_clock”†”asbuh1hhjS­ubj9)�”}”(hj=Mh]”hŒ]”…”�”}”(hjß­h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjS­ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjO­ubjä)�”}”(hŒconst u8 port_cap[4]”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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Œu8”h]”hŒu8”…”�”}”(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.drm_dp_downstream_min_tmds_clock”†”asbuh1hhjó­ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3®h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjó­ubjÓ )�”}”(hŒport_cap”h]”hŒport_cap”…”�”}”(hjA®h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjó­ubj9)�”}”(hjMh]”hŒ[”…”�”}”(hjO®h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjó­ubjš)�”}”(hjšh]”hŒ4”…”�”}”(hj\®h²hh³Nh´Nubah}”(h]”h ]”jšah"]”h$]”h&]”uh1jšhjó­ubj9)�”}”(hj=Mh]”hŒ]”…”�”}”(hji®h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjó­ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjO­ubjä)�”}”(hŒconst struct drm_edid *drm_edid”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(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Œdrm_edid”h]”hŒdrm_edid”…”�”}”(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.drm_dp_downstream_min_tmds_clock”†”asbuh1hhj}®ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØ®h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj}®ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjæ®h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj}®ubjÓ )�”}”(hŒdrm_edid”h]”hŒdrm_edid”…”�”}”(hjó®h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj}®ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjO­ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj­h²hh³j(­h´Mzubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj­h²hh³j(­h´Mzubah}”(h]”j ­ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j(­h´Mzhj­h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ-extract downstream facing port min TMDS clock”h]”hŒ-extract downstream facing port min TMDS clock”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mzhj¯h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj­h²hh³j(­h´Mzubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j5¯j$ j5¯j% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hX$**Parameters** ``const u8 dpcd[DP_RECEIVER_CAP_SIZE]`` DisplayPort configuration data ``const u8 port_cap[4]`` port capabilities ``const struct drm_edid *drm_edid`` EDID **Return** HDMI/DVI downstream facing port min TMDS clock in kHz on success, or 0 if max TMDS clock not defined”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj?¯h]”hŒ Parameters”…”�”}”(hjA¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj=¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M~hj9¯ubjw )�”}”(hhh]”(j| )�”}”(hŒG``const u8 dpcd[DP_RECEIVER_CAP_SIZE]`` DisplayPort configuration data ”h]”(j‚ )�”}”(hŒ'``const u8 dpcd[DP_RECEIVER_CAP_SIZE]``”h]”jˆ )�”}”(hj^¯h]”hŒ#const u8 dpcd[DP_RECEIVER_CAP_SIZE]”…”�”}”(hj`¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj\¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M{hjX¯ubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort configuration data”h]”hŒDisplayPort configuration data”…”�”}”(hjw¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³js¯h´M{hjt¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjX¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³js¯h´M{hjU¯ubj| )�”}”(hŒ+``const u8 port_cap[4]`` port capabilities ”h]”(j‚ )�”}”(hŒ``const u8 port_cap[4]``”h]”jˆ )�”}”(hj—¯h]”hŒconst u8 port_cap[4]”…”�”}”(hj™¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj•¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M|hj‘¯ubjž )�”}”(hhh]”hÎ)�”}”(hŒport capabilities”h]”hŒport capabilities”…”�”}”(hj°¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¬¯h´M|hj­¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj‘¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¬¯h´M|hjU¯ubj| )�”}”(hŒ)``const struct drm_edid *drm_edid`` EDID ”h]”(j‚ )�”}”(hŒ#``const struct drm_edid *drm_edid``”h]”jˆ )�”}”(hjЯh]”hŒconst struct drm_edid *drm_edid”…”�”}”(hjÒ¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjίubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M}hjʯubjž )�”}”(hhh]”hÎ)�”}”(hŒEDID”h]”hŒEDID”…”�”}”(hjé¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jå¯h´M}hjæ¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjʯubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jå¯h´M}hjU¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj9¯ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj °h]”hŒReturn”…”�”}”(hj °h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj °ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mhj9¯ubhÎ)�”}”(hŒdHDMI/DVI downstream facing port min TMDS clock in kHz on success, or 0 if max TMDS clock not defined”h]”hŒdHDMI/DVI downstream facing port min TMDS clock in kHz on success, or 0 if max TMDS clock not defined”…”�”}”(hj!°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mhj9¯ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ&drm_dp_downstream_max_bpc (C function)”Œc.drm_dp_downstream_max_bpc”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒzint drm_dp_downstream_max_bpc (const u8 dpcd[DP_RECEIVER_CAP_SIZE], const u8 port_cap[4], const struct drm_edid *drm_edid)”h]”j¤ )�”}”(hŒyint drm_dp_downstream_max_bpc(const u8 dpcd[DP_RECEIVER_CAP_SIZE], const u8 port_cap[4], const struct drm_edid *drm_edid)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjP°h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjL°h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M¥ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_°h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjL°h²hh³j^°h´M¥ubjÍ )�”}”(hŒdrm_dp_downstream_max_bpc”h]”jÓ )�”}”(hŒdrm_dp_downstream_max_bpc”h]”hŒdrm_dp_downstream_max_bpc”…”�”}”(hjq°h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjm°ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjL°h²hh³j^°h´M¥ubjÞ)�”}”(hŒ\(const u8 dpcd[DP_RECEIVER_CAP_SIZE], const u8 port_cap[4], const struct drm_edid *drm_edid)”h]”(jä)�”}”(hŒ#const u8 dpcd[DP_RECEIVER_CAP_SIZE]”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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Œu8”h]”hŒu8”…”�”}”(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%)�”}”jjs°sbŒc.drm_dp_downstream_max_bpc”†”asbuh1hhj‰°ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˰h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj‰°ubjÓ )�”}”(hŒdpcd”h]”hŒdpcd”…”�”}”(hjÙ°h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj‰°ubj9)�”}”(hjMh]”hŒ[”…”�”}”(hjç°h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‰°ubh)�”}”(hhh]”jÓ )�”}”(hŒDP_RECEIVER_CAP_SIZE”h]”hŒDP_RECEIVER_CAP_SIZE”…”�”}”(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.drm_dp_downstream_max_bpc”†”asbuh1hhj‰°ubj9)�”}”(hj=Mh]”hŒ]”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‰°ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj…°ubjä)�”}”(hŒconst u8 port_cap[4]”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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Œu8”h]”hŒu8”…”�”}”(hjK±h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjH±ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jM±Œmodname”NŒ classname”Njé jì )�”}”jï ]”jǰŒc.drm_dp_downstream_max_bpc”†”asbuh1hhj)±ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hji±h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj)±ubjÓ )�”}”(hŒport_cap”h]”hŒport_cap”…”�”}”(hjw±h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj)±ubj9)�”}”(hjMh]”hŒ[”…”�”}”(hj…±h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj)±ubjš)�”}”(hjšh]”hŒ4”…”�”}”(hj’±h²hh³Nh´Nubah}”(h]”h ]”jšah"]”h$]”h&]”uh1jšhj)±ubj9)�”}”(hj=Mh]”hŒ]”…”�”}”(hjŸ±h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj)±ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj…°ubjä)�”}”(hŒconst struct drm_edid *drm_edid”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(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Œdrm_edid”h]”hŒdrm_edid”…”�”}”(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.drm_dp_downstream_max_bpc”†”asbuh1hhj³±ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj³±ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj³±ubjÓ )�”}”(hŒdrm_edid”h]”hŒdrm_edid”…”�”}”(hj)²h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj³±ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj…°ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjL°h²hh³j^°h´M¥ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjH°h²hh³j^°h´M¥ubah}”(h]”jC°ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j^°h´M¥hjE°h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ5extract downstream facing port max bits per component”h]”hŒ5extract downstream facing port max bits per component”…”�”}”(hjS²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M¥hjP²h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjE°h²hh³j^°h´M¥ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jk²j$ jk²j% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hX**Parameters** ``const u8 dpcd[DP_RECEIVER_CAP_SIZE]`` DisplayPort configuration data ``const u8 port_cap[4]`` downstream facing port capabilities ``const struct drm_edid *drm_edid`` EDID **Return** Max bpc on success or 0 if max bpc not defined”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hju²h]”hŒ Parameters”…”�”}”(hjw²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjs²ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M©hjo²ubjw )�”}”(hhh]”(j| )�”}”(hŒG``const u8 dpcd[DP_RECEIVER_CAP_SIZE]`` DisplayPort configuration data ”h]”(j‚ )�”}”(hŒ'``const u8 dpcd[DP_RECEIVER_CAP_SIZE]``”h]”jˆ )�”}”(hj”²h]”hŒ#const u8 dpcd[DP_RECEIVER_CAP_SIZE]”…”�”}”(hj–²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj’²ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M§hj޲ubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort configuration data”h]”hŒDisplayPort configuration data”…”�”}”(hj­²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j©²h´M§hjª²ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj޲ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j©²h´M§hj‹²ubj| )�”}”(hŒ=``const u8 port_cap[4]`` downstream facing port capabilities ”h]”(j‚ )�”}”(hŒ``const u8 port_cap[4]``”h]”jˆ )�”}”(hjͲh]”hŒconst u8 port_cap[4]”…”�”}”(hjϲh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj˲ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M¨hjDzubjž )�”}”(hhh]”hÎ)�”}”(hŒ#downstream facing port capabilities”h]”hŒ#downstream facing port capabilities”…”�”}”(hjæ²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jâ²h´M¨hjã²ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjDzubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jâ²h´M¨hj‹²ubj| )�”}”(hŒ)``const struct drm_edid *drm_edid`` EDID ”h]”(j‚ )�”}”(hŒ#``const struct drm_edid *drm_edid``”h]”jˆ )�”}”(hj³h]”hŒconst struct drm_edid *drm_edid”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj³ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M©hj³ubjž )�”}”(hhh]”hÎ)�”}”(hŒEDID”h]”hŒEDID”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j³h´M©hj³ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj³ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j³h´M©hj‹²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjo²ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjA³h]”hŒReturn”…”�”}”(hjC³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj?³ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M«hjo²ubhÎ)�”}”(hŒ.Max bpc on success or 0 if max bpc not defined”h]”hŒ.Max bpc on success or 0 if max bpc not defined”…”�”}”(hjW³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M«hjo²ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ.drm_dp_downstream_420_passthrough (C function)”Œ#c.drm_dp_downstream_420_passthrough”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒbbool drm_dp_downstream_420_passthrough (const u8 dpcd[DP_RECEIVER_CAP_SIZE], const u8 port_cap[4])”h]”j¤ )�”}”(hŒabool drm_dp_downstream_420_passthrough(const u8 dpcd[DP_RECEIVER_CAP_SIZE], const u8 port_cap[4])”h]”(j¦)�”}”(hj£Ih]”hŒbool”…”�”}”(hj†³h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj‚³h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.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Œ!drm_dp_downstream_420_passthrough”h]”jÓ )�”}”(hŒ!drm_dp_downstream_420_passthrough”h]”hŒ!drm_dp_downstream_420_passthrough”…”�”}”(hj¦³h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¢³ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj‚³h²hh³j“³h´MÞubjÞ)�”}”(hŒ;(const u8 dpcd[DP_RECEIVER_CAP_SIZE], const u8 port_cap[4])”h]”(jä)�”}”(hŒ#const u8 dpcd[DP_RECEIVER_CAP_SIZE]”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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Œu8”h]”hŒu8”…”�”}”(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%)�”}”jj¨³sbŒ#c.drm_dp_downstream_420_passthrough”†”asbuh1hhj¾³ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¾³ubjÓ )�”}”(hŒdpcd”h]”hŒdpcd”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¾³ubj9)�”}”(hjMh]”hŒ[”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¾³ubh)�”}”(hhh]”jÓ )�”}”(hŒDP_RECEIVER_CAP_SIZE”h]”hŒDP_RECEIVER_CAP_SIZE”…”�”}”(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.drm_dp_downstream_420_passthrough”†”asbuh1hhj¾³ubj9)�”}”(hj=Mh]”hŒ]”…”�”}”(hjJ´h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¾³ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjº³ubjä)�”}”(hŒconst u8 port_cap[4]”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hjb´h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj^´ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjo´h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj^´ubh)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(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.drm_dp_downstream_420_passthrough”†”asbuh1hhj^´ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjž´h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj^´ubjÓ )�”}”(hŒport_cap”h]”hŒport_cap”…”�”}”(hj¬´h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj^´ubj9)�”}”(hjMh]”hŒ[”…”�”}”(hjº´h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj^´ubjš)�”}”(hjšh]”hŒ4”…”�”}”(hjÇ´h²hh³Nh´Nubah}”(h]”h ]”jšah"]”h$]”h&]”uh1jšhj^´ubj9)�”}”(hj=Mh]”hŒ]”…”�”}”(hjÔ´h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj^´ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjº³ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj‚³h²hh³j“³h´MÞubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj~³h²hh³j“³h´MÞubah}”(h]”jy³ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j“³h´MÞhj{³h²hubj )�”}”(hhh]”hÎ)�”}”(hŒDdetermine downstream facing port YCbCr 4:2:0 pass-through capability”h]”hŒDdetermine downstream facing port YCbCr 4:2:0 pass-through capability”…”�”}”(hjý´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.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²hhjÎ9h³Nh´Nubj) )�”}”(hŒå**Parameters** ``const u8 dpcd[DP_RECEIVER_CAP_SIZE]`` DisplayPort configuration data ``const u8 port_cap[4]`` downstream facing port capabilities **Return** whether the downstream facing port can pass through YCbCr 4:2:0”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjµh]”hŒ Parameters”…”�”}”(hj!µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjµubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mâhjµubjw )�”}”(hhh]”(j| )�”}”(hŒG``const u8 dpcd[DP_RECEIVER_CAP_SIZE]`` DisplayPort configuration data ”h]”(j‚ )�”}”(hŒ'``const u8 dpcd[DP_RECEIVER_CAP_SIZE]``”h]”jˆ )�”}”(hj>µh]”hŒ#const u8 dpcd[DP_RECEIVER_CAP_SIZE]”…”�”}”(hj@µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj<µubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Màhj8µubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort configuration data”h]”hŒDisplayPort configuration data”…”�”}”(hjWµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jSµh´MàhjTµubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj8µubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jSµh´Màhj5µubj| )�”}”(hŒ=``const u8 port_cap[4]`` downstream facing port capabilities ”h]”(j‚ )�”}”(hŒ``const u8 port_cap[4]``”h]”jˆ )�”}”(hjwµh]”hŒconst u8 port_cap[4]”…”�”}”(hjyµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjuµubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Máhjqµubjž )�”}”(hhh]”hÎ)�”}”(hŒ#downstream facing port capabilities”h]”hŒ#downstream facing port capabilities”…”�”}”(hj�µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jŒµh´Máhj�µubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjqµubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jŒµh´Máhj5µubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjµubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj²µh]”hŒReturn”…”�”}”(hj´µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj°µubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MãhjµubhÎ)�”}”(hŒ?whether the downstream facing port can pass through YCbCr 4:2:0”h]”hŒ?whether the downstream facing port can pass through YCbCr 4:2:0”…”�”}”(hjȵh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mãhjµubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ4drm_dp_downstream_444_to_420_conversion (C function)”Œ)c.drm_dp_downstream_444_to_420_conversion”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒhbool drm_dp_downstream_444_to_420_conversion (const u8 dpcd[DP_RECEIVER_CAP_SIZE], const u8 port_cap[4])”h]”j¤ )�”}”(hŒgbool drm_dp_downstream_444_to_420_conversion(const u8 dpcd[DP_RECEIVER_CAP_SIZE], const u8 port_cap[4])”h]”(j¦)�”}”(hj£Ih]”hŒbool”…”�”}”(hj÷µh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjóµh²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.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Œ'drm_dp_downstream_444_to_420_conversion”h]”jÓ )�”}”(hŒ'drm_dp_downstream_444_to_420_conversion”h]”hŒ'drm_dp_downstream_444_to_420_conversion”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¶ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjóµh²hh³j¶h´MýubjÞ)�”}”(hŒ;(const u8 dpcd[DP_RECEIVER_CAP_SIZE], const u8 port_cap[4])”h]”(jä)�”}”(hŒ#const u8 dpcd[DP_RECEIVER_CAP_SIZE]”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hj3¶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Œu8”h]”hŒu8”…”�”}”(hjQ¶h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjN¶ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jS¶Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj¶sbŒ)c.drm_dp_downstream_444_to_420_conversion”†”asbuh1hhj/¶ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjq¶h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj/¶ubjÓ )�”}”(hŒdpcd”h]”hŒdpcd”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj/¶ubj9)�”}”(hjMh]”hŒ[”…”�”}”(hj�¶h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj/¶ubh)�”}”(hhh]”jÓ )�”}”(hŒDP_RECEIVER_CAP_SIZE”h]”hŒDP_RECEIVER_CAP_SIZE”…”�”}”(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ï ]”jm¶Œ)c.drm_dp_downstream_444_to_420_conversion”†”asbuh1hhj/¶ubj9)�”}”(hj=Mh]”hŒ]”…”�”}”(hj»¶h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj/¶ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj+¶ubjä)�”}”(hŒconst u8 port_cap[4]”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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Œu8”h]”hŒu8”…”�”}”(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ï ]”jm¶Œ)c.drm_dp_downstream_444_to_420_conversion”†”asbuh1hhj϶ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj϶ubjÓ )�”}”(hŒport_cap”h]”hŒport_cap”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj϶ubj9)�”}”(hjMh]”hŒ[”…”�”}”(hj+·h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj϶ubjš)�”}”(hjšh]”hŒ4”…”�”}”(hj8·h²hh³Nh´Nubah}”(h]”h ]”jšah"]”h$]”h&]”uh1jšhj϶ubj9)�”}”(hj=Mh]”hŒ]”…”�”}”(hjE·h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj϶ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj+¶ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjóµh²hh³j¶h´Mýubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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ŒIdetermine downstream facing port YCbCr 4:4:4->4:2:0 conversion capability”h]”hŒIdetermine downstream facing port YCbCr 4:4:4->4:2:0 conversion capability”…”�”}”(hjn·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mýhjk·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²hhjÎ9h³Nh´Nubj) )�”}”(hŒé**Parameters** ``const u8 dpcd[DP_RECEIVER_CAP_SIZE]`` DisplayPort configuration data ``const u8 port_cap[4]`` downstream facing port capabilities **Return** whether the downstream facing port can convert YCbCr 4:4:4 to 4:2:0”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj�·h]”hŒ Parameters”…”�”}”(hj’·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjŽ·ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MhjŠ·ubjw )�”}”(hhh]”(j| )�”}”(hŒG``const u8 dpcd[DP_RECEIVER_CAP_SIZE]`` DisplayPort configuration data ”h]”(j‚ )�”}”(hŒ'``const u8 dpcd[DP_RECEIVER_CAP_SIZE]``”h]”jˆ )�”}”(hj¯·h]”hŒ#const u8 dpcd[DP_RECEIVER_CAP_SIZE]”…”�”}”(hj±·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj­·ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mÿhj©·ubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort configuration data”h]”hŒDisplayPort configuration data”…”�”}”(hjÈ·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÄ·h´MÿhjÅ·ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj©·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÄ·h´Mÿhj¦·ubj| )�”}”(hŒ=``const u8 port_cap[4]`` downstream facing port capabilities ”h]”(j‚ )�”}”(hŒ``const u8 port_cap[4]``”h]”jˆ )�”}”(hjè·h]”hŒconst u8 port_cap[4]”…”�”}”(hjê·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjæ·ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mhjâ·ubjž )�”}”(hhh]”hÎ)�”}”(hŒ#downstream facing port capabilities”h]”hŒ#downstream facing port capabilities”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jý·h´Mhjþ·ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjâ·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jý·h´Mhj¦·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjŠ·ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj#¸h]”hŒReturn”…”�”}”(hj%¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj!¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MhjŠ·ubhÎ)�”}”(hŒCwhether the downstream facing port can convert YCbCr 4:4:4 to 4:2:0”h]”hŒCwhether the downstream facing port can convert YCbCr 4:4:4 to 4:2:0”…”�”}”(hj9¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MhjŠ·ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ6drm_dp_downstream_rgb_to_ycbcr_conversion (C function)”Œ+c.drm_dp_downstream_rgb_to_ycbcr_conversion”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒxbool drm_dp_downstream_rgb_to_ycbcr_conversion (const u8 dpcd[DP_RECEIVER_CAP_SIZE], const u8 port_cap[4], u8 color_spc)”h]”j¤ )�”}”(hŒwbool drm_dp_downstream_rgb_to_ycbcr_conversion(const u8 dpcd[DP_RECEIVER_CAP_SIZE], const u8 port_cap[4], u8 color_spc)”h]”(j¦)�”}”(hj£Ih]”hŒbool”…”�”}”(hjh¸h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjd¸h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjv¸h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjd¸h²hh³ju¸h´MubjÍ )�”}”(hŒ)drm_dp_downstream_rgb_to_ycbcr_conversion”h]”jÓ )�”}”(hŒ)drm_dp_downstream_rgb_to_ycbcr_conversion”h]”hŒ)drm_dp_downstream_rgb_to_ycbcr_conversion”…”�”}”(hjˆ¸h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj„¸ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjd¸h²hh³ju¸h´MubjÞ)�”}”(hŒI(const u8 dpcd[DP_RECEIVER_CAP_SIZE], const u8 port_cap[4], u8 color_spc)”h]”(jä)�”}”(hŒ#const u8 dpcd[DP_RECEIVER_CAP_SIZE]”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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Œu8”h]”hŒu8”…”�”}”(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%)�”}”jjЏsbŒ+c.drm_dp_downstream_rgb_to_ycbcr_conversion”†”asbuh1hhj ¸ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâ¸h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj ¸ubjÓ )�”}”(hŒdpcd”h]”hŒdpcd”…”�”}”(hjð¸h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj ¸ubj9)�”}”(hjMh]”hŒ[”…”�”}”(hjþ¸h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ¸ubh)�”}”(hhh]”jÓ )�”}”(hŒDP_RECEIVER_CAP_SIZE”h]”hŒDP_RECEIVER_CAP_SIZE”…”�”}”(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.drm_dp_downstream_rgb_to_ycbcr_conversion”†”asbuh1hhj ¸ubj9)�”}”(hj=Mh]”hŒ]”…”�”}”(hj,¹h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ¸ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjœ¸ubjä)�”}”(hŒconst u8 port_cap[4]”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hjD¹h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj@¹ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQ¹h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj@¹ubh)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(hjb¹h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj_¹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jd¹Œmodname”NŒ classname”Njé jì )�”}”jï ]”jÞ¸Œ+c.drm_dp_downstream_rgb_to_ycbcr_conversion”†”asbuh1hhj@¹ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€¹h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj@¹ubjÓ )�”}”(hŒport_cap”h]”hŒport_cap”…”�”}”(hj޹h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj@¹ubj9)�”}”(hjMh]”hŒ[”…”�”}”(hjœ¹h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj@¹ubjš)�”}”(hjšh]”hŒ4”…”�”}”(hj©¹h²hh³Nh´Nubah}”(h]”h ]”jšah"]”h$]”h&]”uh1jšhj@¹ubj9)�”}”(hj=Mh]”hŒ]”…”�”}”(hj¶¹h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj@¹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjœ¸ubjä)�”}”(hŒ u8 color_spc”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(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.drm_dp_downstream_rgb_to_ycbcr_conversion”†”asbuh1hhjʹubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjï¹h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjʹubjÓ )�”}”(hŒ color_spc”h]”hŒ color_spc”…”�”}”(hjý¹h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjʹubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjœ¸ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjd¸h²hh³ju¸h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj`¸h²hh³ju¸h´Mubah}”(h]”j[¸ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³ju¸h´Mhj]¸h²hubj )�”}”(hhh]”hÎ)�”}”(hŒAdetermine downstream facing port RGB->YCbCr conversion capability”h]”hŒAdetermine downstream facing port RGB->YCbCr conversion capability”…”�”}”(hj'ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mhj$ºh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj]¸h²hh³ju¸h´Mubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j?ºj$ j?ºj% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hX9**Parameters** ``const u8 dpcd[DP_RECEIVER_CAP_SIZE]`` DisplayPort configuration data ``const u8 port_cap[4]`` downstream facing port capabilities ``u8 color_spc`` Colorspace for which conversion cap is sought **Return** whether the downstream facing port can convert RGB->YCbCr for a given colorspace.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjIºh]”hŒ Parameters”…”�”}”(hjKºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjGºubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MhjCºubjw )�”}”(hhh]”(j| )�”}”(hŒG``const u8 dpcd[DP_RECEIVER_CAP_SIZE]`` DisplayPort configuration data ”h]”(j‚ )�”}”(hŒ'``const u8 dpcd[DP_RECEIVER_CAP_SIZE]``”h]”jˆ )�”}”(hjhºh]”hŒ#const u8 dpcd[DP_RECEIVER_CAP_SIZE]”…”�”}”(hjjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjfºubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mhjbºubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort configuration data”h]”hŒDisplayPort configuration data”…”�”}”(hj�ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j}ºh´Mhj~ºubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjbºubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j}ºh´Mhj_ºubj| )�”}”(hŒ=``const u8 port_cap[4]`` downstream facing port capabilities ”h]”(j‚ )�”}”(hŒ``const u8 port_cap[4]``”h]”jˆ )�”}”(hj¡ºh]”hŒconst u8 port_cap[4]”…”�”}”(hj£ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjŸºubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mhj›ºubjž )�”}”(hhh]”hÎ)�”}”(hŒ#downstream facing port capabilities”h]”hŒ#downstream facing port capabilities”…”�”}”(hjººh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¶ºh´Mhj·ºubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj›ºubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¶ºh´Mhj_ºubj| )�”}”(hŒ?``u8 color_spc`` Colorspace for which conversion cap is sought ”h]”(j‚ )�”}”(hŒ``u8 color_spc``”h]”jˆ )�”}”(hjÚºh]”hŒ u8 color_spc”…”�”}”(hjܺh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjغubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MhjÔºubjž )�”}”(hhh]”hÎ)�”}”(hŒ-Colorspace for which conversion cap is sought”h]”hŒ-Colorspace for which conversion cap is sought”…”�”}”(hjóºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jïºh´Mhjðºubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÔºubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jïºh´Mhj_ºubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjCºubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj»h]”hŒReturn”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj»ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M hjCºubhÎ)�”}”(hŒQwhether the downstream facing port can convert RGB->YCbCr for a given colorspace.”h]”hŒQwhether the downstream facing port can convert RGB->YCbCr for a given colorspace.”…”�”}”(hj+»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M hjCºubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ#drm_dp_downstream_mode (C function)”Œc.drm_dp_downstream_mode”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ„struct drm_display_mode * drm_dp_downstream_mode (struct drm_device *dev, const u8 dpcd[DP_RECEIVER_CAP_SIZE], const u8 port_cap[4])”h]”j¤ )�”}”(hŒ‚struct drm_display_mode *drm_dp_downstream_mode(struct drm_device *dev, const u8 dpcd[DP_RECEIVER_CAP_SIZE], const u8 port_cap[4])”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjZ»h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjV»h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M:ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh»h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjV»h²hh³jg»h´M:ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_display_mode”h]”hŒdrm_display_mode”…”�”}”(hjy»h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjv»ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j{»Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jŒdrm_dp_downstream_mode”sbŒc.drm_dp_downstream_mode”†”asbuh1hhjV»h²hh³jg»h´M:ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjš»h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjV»h²hh³jg»h´M:ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj¨»h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjV»h²hh³jg»h´M:ubjÍ )�”}”(hŒdrm_dp_downstream_mode”h]”jÓ )�”}”(hj—»h]”hŒdrm_dp_downstream_mode”…”�”}”(hj¹»h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjµ»ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjV»h²hh³jg»h´M:ubjÞ)�”}”(hŒS(struct drm_device *dev, const u8 dpcd[DP_RECEIVER_CAP_SIZE], const u8 port_cap[4])”h]”(jä)�”}”(hŒstruct drm_device *dev”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Œ drm_device”h]”hŒ drm_device”…”�”}”(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.drm_dp_downstream_mode”†”asbuh1hhjлubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjлubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjлubjÓ )�”}”(hŒdev”h]”hŒdev”…”�”}”(hj+¼h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjлubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÌ»ubjä)�”}”(hŒ#const u8 dpcd[DP_RECEIVER_CAP_SIZE]”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hjD¼h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj@¼ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQ¼h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj@¼ubh)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(hjb¼h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj_¼ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jd¼Œmodname”NŒ classname”Njé jì )�”}”jï ]”j•»Œc.drm_dp_downstream_mode”†”asbuh1hhj@¼ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€¼h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj@¼ubjÓ )�”}”(hŒdpcd”h]”hŒdpcd”…”�”}”(hj޼h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj@¼ubj9)�”}”(hjMh]”hŒ[”…”�”}”(hjœ¼h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj@¼ubh)�”}”(hhh]”jÓ )�”}”(hŒDP_RECEIVER_CAP_SIZE”h]”hŒDP_RECEIVER_CAP_SIZE”…”�”}”(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.drm_dp_downstream_mode”†”asbu•×h1hhj@¼ubj9)�”}”(hj=Mh]”hŒ]”…”�”}”(hjʼh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj@¼ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÌ»ubjä)�”}”(hŒconst u8 port_cap[4]”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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Œu8”h]”hŒu8”…”�”}”(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.drm_dp_downstream_mode”†”asbuh1hhjÞ¼ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÞ¼ubjÓ )�”}”(hŒport_cap”h]”hŒport_cap”…”�”}”(hj,½h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÞ¼ubj9)�”}”(hjMh]”hŒ[”…”�”}”(hj:½h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÞ¼ubjš)�”}”(hjšh]”hŒ4”…”�”}”(hjG½h²hh³Nh´Nubah}”(h]”h ]”jšah"]”h$]”h&]”uh1jšhjÞ¼ubj9)�”}”(hj=Mh]”hŒ]”…”�”}”(hjT½h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÞ¼ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÌ»ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjV»h²hh³jg»h´M:ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjR»h²hh³jg»h´M:ubah}”(h]”jM»ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jg»h´M:hjO»h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ(return a mode for downstream facing port”h]”hŒ(return a mode for downstream facing port”…”�”}”(hj}½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M:hjz½h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjO»h²hh³jg»h´M:ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j•½j$ j•½j% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hXF**Parameters** ``struct drm_device *dev`` DRM device ``const u8 dpcd[DP_RECEIVER_CAP_SIZE]`` DisplayPort configuration data ``const u8 port_cap[4]`` port capabilities **Description** Provides a suitable mode for downstream facing ports without EDID. **Return** A new drm_display_mode on success or NULL on failure”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjŸ½h]”hŒ Parameters”…”�”}”(hj¡½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj�½ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M>hj™½ubjw )�”}”(hhh]”(j| )�”}”(hŒ&``struct drm_device *dev`` DRM device ”h]”(j‚ )�”}”(hŒ``struct drm_device *dev``”h]”jˆ )�”}”(hj¾½h]”hŒstruct drm_device *dev”…”�”}”(hjÀ½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¼½ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M;hj¸½ubjž )�”}”(hhh]”hÎ)�”}”(hŒ DRM device”h]”hŒ DRM device”…”�”}”(hj×½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÓ½h´M;hjÔ½ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¸½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÓ½h´M;hjµ½ubj| )�”}”(hŒG``const u8 dpcd[DP_RECEIVER_CAP_SIZE]`` DisplayPort configuration data ”h]”(j‚ )�”}”(hŒ'``const u8 dpcd[DP_RECEIVER_CAP_SIZE]``”h]”jˆ )�”}”(hj÷½h]”hŒ#const u8 dpcd[DP_RECEIVER_CAP_SIZE]”…”�”}”(hjù½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjõ½ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M<hjñ½ubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort configuration data”h]”hŒDisplayPort configuration data”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j ¾h´M<hj ¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjñ½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j ¾h´M<hjµ½ubj| )�”}”(hŒ+``const u8 port_cap[4]`` port capabilities ”h]”(j‚ )�”}”(hŒ``const u8 port_cap[4]``”h]”jˆ )�”}”(hj0¾h]”hŒconst u8 port_cap[4]”…”�”}”(hj2¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj.¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M=hj*¾ubjž )�”}”(hhh]”hÎ)�”}”(hŒport capabilities”h]”hŒport capabilities”…”�”}”(hjI¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jE¾h´M=hjF¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj*¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jE¾h´M=hjµ½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj™½ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjk¾h]”hŒ Description”…”�”}”(hjm¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hji¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M?hj™½ubhÎ)�”}”(hŒBProvides a suitable mode for downstream facing ports without EDID.”h]”hŒBProvides a suitable mode for downstream facing ports without EDID.”…”�”}”(hj�¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M>hj™½ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj’¾h]”hŒReturn”…”�”}”(hj”¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj�¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M@hj™½ubhÎ)�”}”(hŒ4A new drm_display_mode on success or NULL on failure”h]”hŒ4A new drm_display_mode on success or NULL on failure”…”�”}”(hj¨¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MAhj™½ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ!drm_dp_downstream_id (C function)”Œc.drm_dp_downstream_id”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ=int drm_dp_downstream_id (struct drm_dp_aux *aux, char id[6])”h]”j¤ )�”}”(hŒÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M*hjVÍubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjOÎh]”hŒReturn”…”�”}”(hjQÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjMÎubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M,hjVÍubhÎ)�”}”(hŒb``True`` if the (e)DP connector has a valid sink count that should be probed, ``false`` otherwise.”h]”(jˆ )�”}”(hŒ``True``”h]”hŒTrue”…”�”}”(hjiÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjeÎubhŒF if the (e)DP connector has a valid sink count that should be probed, ”…”�”}”(hjeÎh²hh³Nh´Nubjˆ )�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hj{Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjeÎubhŒ otherwise.”…”�”}”(hjeÎh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M-hjVÍubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ#drm_dp_read_sink_count (C function)”Œc.drm_dp_read_sink_count”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ3int drm_dp_read_sink_count (struct drm_dp_aux *aux)”h]”j¤ )�”}”(hŒ2int drm_dp_read_sink_count(struct drm_dp_aux *aux)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj´Îh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj°Îh²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.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Œdrm_dp_read_sink_count”h]”jÓ )�”}”(hŒdrm_dp_read_sink_count”h]”hŒdrm_dp_read_sink_count”…”�”}”(hjÕÎh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÑÎubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj°Îh²hh³jÂÎh´M=ubjÞ)�”}”(hŒ(struct drm_dp_aux *aux)”h]”jä)�”}”(hŒstruct drm_dp_aux *aux”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Œ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(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%)�”}”jj×ÎsbŒc.drm_dp_read_sink_count”†”asbuh1hhjíÎubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/Ïh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjíÎubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj=Ïh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjíÎubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hjJÏh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjíÎubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjéÎubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj°Îh²hh³jÂÎh´M=ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ(Retrieve the sink count for a given sink”h]”hŒ(Retrieve the sink count for a given sink”…”�”}”(hjtÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M=hjqÏ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²hhjÎ9h³Nh´Nubj) )�”}”(hŒÜ**Parameters** ``struct drm_dp_aux *aux`` The DP AUX channel to use **Description** See also: drm_dp_read_sink_count_cap() **Return** The current sink count reported by **aux**, or a negative error code otherwise.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj–Ïh]”hŒ Parameters”…”�”}”(hj˜Ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj”Ïubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MAhj�Ïubjw )�”}”(hhh]”j| )�”}”(hŒ5``struct drm_dp_aux *aux`` The DP AUX channel to use ”h]”(j‚ )�”}”(hŒ``struct drm_dp_aux *aux``”h]”jˆ )�”}”(hjµÏh]”hŒstruct drm_dp_aux *aux”…”�”}”(hj·Ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj³Ïubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M>hj¯Ïubjž )�”}”(hhh]”hÎ)�”}”(hŒThe DP AUX channel to use”h]”hŒThe DP AUX channel to use”…”�”}”(hjÎÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÊÏh´M>hjËÏubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¯Ïubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÊÏh´M>hj¬Ïubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj�ÏubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjðÏh]”hŒ Description”…”�”}”(hjòÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjîÏubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M@hj�ÏubhÎ)�”}”(hŒ&See also: drm_dp_read_sink_count_cap()”h]”hŒ&See also: drm_dp_read_sink_count_cap()”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M?hj�ÏubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjÐh]”hŒReturn”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÐubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MAhj�ÏubhÎ)�”}”(hŒOThe current sink count reported by **aux**, or a negative error code otherwise.”h]”(hŒ#The current sink count reported by ”…”�”}”(hj-Ðh²hh³Nh´Nubj3 )�”}”(hŒ**aux**”h]”hŒaux”…”�”}”(hj5Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj-ÐubhŒ%, or a negative error code otherwise.”…”�”}”(hj-Ðh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MBhj�Ïubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ#drm_dp_remote_aux_init (C function)”Œc.drm_dp_remote_aux_init”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ4void drm_dp_remote_aux_init (struct drm_dp_aux *aux)”h]”j¤ )�”}”(hŒ3void drm_dp_remote_aux_init(struct drm_dp_aux *aux)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjnÐh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjjÐh²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}Ðh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjjÐh²hh³j|Ðh´M ubjÍ )�”}”(hŒdrm_dp_remote_aux_init”h]”jÓ )�”}”(hŒdrm_dp_remote_aux_init”h]”hŒdrm_dp_remote_aux_init”…”�”}”(hj�Ðh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj‹Ðubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjjÐh²hh³j|Ðh´M ubjÞ)�”}”(hŒ(struct drm_dp_aux *aux)”h]”jä)�”}”(hŒstruct drm_dp_aux *aux”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Œ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(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%)�”}”jj‘ÐsbŒc.drm_dp_remote_aux_init”†”asbuh1hhj§Ðubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjéÐh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj§Ðubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj÷Ðh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj§ÐubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj§Ðubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj£Ðubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjjÐh²hh³j|Ðh´M ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjfÐh²hh³j|Ðh´M ubah}”(h]”jaÐah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j|Ðh´M hjcÐh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ)minimally initialise a remote aux channel”h]”hŒ)minimally initialise a remote aux channel”…”�”}”(hj.Ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M hj+Ñh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjcÐh²hh³j|Ðh´M ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jFÑj$ jFÑj% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hŒ¥**Parameters** ``struct drm_dp_aux *aux`` DisplayPort AUX channel **Description** Used for remote aux channel in general. Merely initialize the crc work struct.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjPÑh]”hŒ Parameters”…”�”}”(hjRÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjNÑubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M hjJÑubjw )�”}”(hhh]”j| )�”}”(hŒ3``struct drm_dp_aux *aux`` DisplayPort AUX channel ”h]”(j‚ )�”}”(hŒ``struct drm_dp_aux *aux``”h]”jˆ )�”}”(hjoÑh]”hŒstruct drm_dp_aux *aux”…”�”}”(hjqÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjmÑubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M hjiÑubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort AUX channel”h]”hŒDisplayPort AUX channel”…”�”}”(hjˆÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j„Ñh´M hj…Ñubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjiÑubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j„Ñh´M hjfÑubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjJÑubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjªÑh]”hŒ Description”…”�”}”(hj¬Ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¨Ñubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M hjJÑubhÎ)�”}”(hŒNUsed for remote aux channel in general. Merely initialize the crc work struct.”h]”hŒNUsed for remote aux channel in general. Merely initialize the crc work struct.”…”�”}”(hjÀÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M hjJÑubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_dp_aux_init (C function)”Œc.drm_dp_aux_init”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ-void drm_dp_aux_init (struct drm_dp_aux *aux)”h]”j¤ )�”}”(hŒ,void drm_dp_aux_init(struct drm_dp_aux *aux)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjïÑh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjëÑh²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.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Œdrm_dp_aux_init”h]”jÓ )�”}”(hŒdrm_dp_aux_init”h]”hŒdrm_dp_aux_init”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj Òubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjëÑh²hh³jýÑh´M% ubjÞ)�”}”(hŒ(struct drm_dp_aux *aux)”h]”jä)�”}”(hŒstruct drm_dp_aux *aux”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj,Òh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj(Òubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9Òh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj(Òubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(hjJÒh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjGÒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jLÒŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjÒsbŒc.drm_dp_aux_init”†”asbuh1hhj(Òubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjjÒh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj(Òubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjxÒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj(ÒubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hj…Òh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj(Òubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj$Òubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjëÑh²hh³jýÑh´M% ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ#minimally initialise an aux channel”h]”hŒ#minimally initialise an aux channel”…”�”}”(hj¯Òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.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²hhjÎ9h³Nh´Nubj) )�”}”(hXK**Parameters** ``struct drm_dp_aux *aux`` DisplayPort AUX channel **Description** If you need to use the drm_dp_aux's i2c adapter prior to registering it with the outside world, call drm_dp_aux_init() first. For drivers which are grandparents to their AUX adapters (e.g. the AUX adapter is parented by a :c:type:`drm_connector`), you must still call drm_dp_aux_register() once the connector has been registered to allow userspace access to the auxiliary DP channel. Likewise, for such drivers you should also assign :c:type:`drm_dp_aux.drm_dev ` as early as possible so that the :c:type:`drm_device` that corresponds to the AUX adapter may be mentioned in debugging output from the DRM DP helpers. For devices which use a separate platform device for their AUX adapters, this may be called as early as required by the driver.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjÑÒh]”hŒ Parameters”…”�”}”(hjÓÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÏÒubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M) hjËÒubjw )�”}”(hhh]”j| )�”}”(hŒ3``struct drm_dp_aux *aux`` DisplayPort AUX channel ”h]”(j‚ )�”}”(hŒ``struct drm_dp_aux *aux``”h]”jˆ )�”}”(hjðÒh]”hŒstruct drm_dp_aux *aux”…”�”}”(hjòÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjîÒubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M& hjêÒubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort AUX channel”h]”hŒDisplayPort AUX channel”…”�”}”(hj Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÓh´M& hjÓubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjêÒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÓh´M& hjçÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjËÒubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj+Óh]”hŒ Description”…”�”}”(hj-Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj)Óubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M( hjËÒubhÎ)�”}”(hXsIf you need to use the drm_dp_aux's i2c adapter prior to registering it with the outside world, call drm_dp_aux_init() first. For drivers which are grandparents to their AUX adapters (e.g. the AUX adapter is parented by a :c:type:`drm_connector`), you must still call drm_dp_aux_register() once the connector has been registered to allow userspace access to the auxiliary DP channel. Likewise, for such drivers you should also assign :c:type:`drm_dp_aux.drm_dev ` as early as possible so that the :c:type:`drm_device` that corresponds to the AUX adapter may be mentioned in debugging output from the DRM DP helpers.”•h]”(hŒàIf you need to use the drm_dp_aux’s i2c adapter prior to registering it with the outside world, call drm_dp_aux_init() first. For drivers which are grandparents to their AUX adapters (e.g. the AUX adapter is parented by a ”…”�”}”(hjAÓh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_connector`”h]”jˆ )�”}”(hjKÓh]”hŒ drm_connector”…”�”}”(hjMÓh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjIÓubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œ drm_connector”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M' hjAÓubhŒ½), you must still call drm_dp_aux_register() once the connector has been registered to allow userspace access to the auxiliary DP channel. Likewise, for such drivers you should also assign ”…”�”}”(hjAÓh²hh³Nh´Nubh)�”}”(hŒ):c:type:`drm_dp_aux.drm_dev `”h]”jˆ )�”}”(hjoÓh]”hŒdrm_dp_aux.drm_dev”…”�”}”(hjqÓh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjmÓubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_dp_aux”uh1hh³jhÓh´M' hjAÓubhŒ" as early as possible so that the ”…”�”}”(hjAÓh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_device`”h]”jˆ )�”}”(hj’Óh]”hŒ drm_device”…”�”}”(hj”Óh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj�Óubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œ drm_device”uh1hh³jhÓh´M' hjAÓubhŒb that corresponds to the AUX adapter may be mentioned in debugging output from the DRM DP helpers.”…”�”}”(hjAÓh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jhÓh´M' hjËÒubhÎ)�”}”(hŒFor devices which use a separate platform device for their AUX adapters, this may be called as early as required by the driver.”h]”hŒFor devices which use a separate platform device for their AUX adapters, this may be called as early as required by the driver.”…”�”}”(hj¹Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M0 hjËÒubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ drm_dp_aux_register (C function)”Œc.drm_dp_aux_register”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ0int drm_dp_aux_register (struct drm_dp_aux *aux)”h]”j¤ )�”}”(hŒ/int drm_dp_aux_register(struct drm_dp_aux *aux)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjèÓh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjäÓh²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MD ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷Óh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjäÓh²hh³jöÓh´MD ubjÍ )�”}”(hŒdrm_dp_aux_register”h]”jÓ )�”}”(hŒdrm_dp_aux_register”h]”hŒdrm_dp_aux_register”…”�”}”(hj Ôh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÔubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjäÓh²hh³jöÓh´MD ubjÞ)�”}”(hŒ(struct drm_dp_aux *aux)”h]”jä)�”}”(hŒstruct drm_dp_aux *aux”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj%Ôh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj!Ôubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2Ôh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj!Ôubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(hjCÔh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj@Ôubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jEÔŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj ÔsbŒc.drm_dp_aux_register”†”asbuh1hhj!Ôubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjcÔh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj!Ôubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjqÔh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj!ÔubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hj~Ôh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj!Ôubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÔubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjäÓh²hh³jöÓh´MD ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjàÓh²hh³jöÓh´MD ubah}”(h]”jÛÓah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jöÓh´MD hjÝÓh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ#initialise and register aux channel”h]”hŒ#initialise and register aux channel”…”�”}”(hj¨Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MD hj¥Ôh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÝÓh²hh³jöÓh´MD ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jÀÔj$ jÀÔj% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hXÌ**Parameters** ``struct drm_dp_aux *aux`` DisplayPort AUX channel **Description** Automatically calls drm_dp_aux_init() if this hasn't been done yet. This should only be called once the parent of **aux**, :c:type:`drm_dp_aux.dev `, is initialized. For devices which are grandparents of their AUX channels, :c:type:`drm_dp_aux.dev ` will typically be the :c:type:`drm_connector` :c:type:`device` which corresponds to **aux**. For these devices, it's advised to call drm_dp_aux_register() in :c:type:`drm_connector_funcs.late_register `, and likewise to call drm_dp_aux_unregister() in :c:type:`drm_connector_funcs.early_unregister `. Functions which don't follow this will likely Oops when ``CONFIG_DRM_DISPLAY_DP_AUX_CHARDEV`` is enabled. For devices where the AUX channel is a device that exists independently of the :c:type:`drm_device` that uses it, such as SoCs and bridge devices, it is recommended to call drm_dp_aux_register() after a :c:type:`drm_device` has been assigned to :c:type:`drm_dp_aux.drm_dev `, and likewise to call drm_dp_aux_unregister() once the :c:type:`drm_device` should no longer be associated with the AUX channel (e.g. on bridge detach). Drivers which need to use the aux channel before either of the two points mentioned above need to call drm_dp_aux_init() in order to use the AUX channel before registration. Returns 0 on success or a negative error code on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjÊÔh]”hŒ Parameters”…”�”}”(hjÌÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÈÔubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MH hjÄÔubjw )�”}”(hhh]”j| )�”}”(hŒ3``struct drm_dp_aux *aux`` DisplayPort AUX channel ”h]”(j‚ )�”}”(hŒ``struct drm_dp_aux *aux``”h]”jˆ )�”}”(hjéÔh]”hŒstruct drm_dp_aux *aux”…”�”}”(hjëÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjçÔubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´ME hjãÔubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort AUX channel”h]”hŒDisplayPort AUX channel”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jþÔh´ME hjÿÔubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjãÔubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jþÔh´ME hjàÔubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÄÔubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj$Õh]”hŒ Description”…”�”}”(hj&Õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj"Õubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MG hjÄÔubhÎ)�”}”(hXÒAutomatically calls drm_dp_aux_init() if this hasn't been done yet. This should only be called once the parent of **aux**, :c:type:`drm_dp_aux.dev `, is initialized. For devices which are grandparents of their AUX channels, :c:type:`drm_dp_aux.dev ` will typically be the :c:type:`drm_connector` :c:type:`device` which corresponds to **aux**. For these devices, it's advised to call drm_dp_aux_register() in :c:type:`drm_connector_funcs.late_register `, and likewise to call drm_dp_aux_unregister() in :c:type:`drm_connector_funcs.early_unregister `. Functions which don't follow this will likely Oops when ``CONFIG_DRM_DISPLAY_DP_AUX_CHARDEV`` is enabled.”h]”(hŒtAutomatically calls drm_dp_aux_init() if this hasn’t been done yet. This should only be called once the parent of ”…”�”}”(hj:Õh²hh³Nh´Nubj3 )�”}”(hŒ**aux**”h]”hŒaux”…”�”}”(hjBÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj:ÕubhŒ, ”…”�”}”(hj:Õh²hh³Nh´Nubh)�”}”(hŒ%:c:type:`drm_dp_aux.dev `”h]”jˆ )�”}”(hjVÕh]”hŒdrm_dp_aux.dev”…”�”}”(hjXÕh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjTÕubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_dp_aux”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MF hj:ÕubhŒL, is initialized. For devices which are grandparents of their AUX channels, ”…”�”}”(hj:Õh²hh³Nh´Nubh)�”}”(hŒ%:c:type:`drm_dp_aux.dev `”h]”jˆ )�”}”(hjzÕh]”hŒdrm_dp_aux.dev”…”�”}”(hj|Õh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjxÕubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_dp_aux”uh1hh³jsÕh´MF hj:ÕubhŒ will typically be the ”…”�”}”(hj:Õh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_connector`”h]”jˆ )�”}”(hj�Õh]”hŒ drm_connector”…”�”}”(hjŸÕh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj›Õubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œ drm_connector”uh1hh³jsÕh´MF hj:ÕubhŒ ”…”�”}”(hj:Õh²hh³Nh´Nubh)�”}”(hŒ:c:type:`device`”h]”jˆ )�”}”(hjÀÕh]”hŒdevice”…”�”}”(hjÂÕh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj¾Õubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdevice”uh1hh³jsÕh´MF hj:ÕubhŒ which corresponds to ”…”�”}”(hj:Õh²hh³Nh´Nubj3 )�”}”(hŒ**aux**”h]”hŒaux”…”�”}”(hjáÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj:ÕubhŒE. For these devices, it’s advised to call drm_dp_aux_register() in ”…”�”}”(hj:Õh²hh³Nh´Nubh)�”}”(hŒA:c:type:`drm_connector_funcs.late_register `”h]”jˆ )�”}”(hjõÕh]”hŒ!drm_connector_funcs.late_register”…”�”}”(hj÷Õh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjóÕubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_connector_funcs”uh1hh³jsÕh´MF hj:ÕubhŒ2, and likewise to call drm_dp_aux_unregister() in ”…”�”}”(hj:Õh²hh³Nh´Nubh)�”}”(hŒD:c:type:`drm_connector_funcs.early_unregister `”h]”jˆ )�”}”(hjÖh]”hŒ$drm_connector_funcs.early_unregister”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÖubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_connector_funcs”uh1hh³jsÕh´MF hj:ÕubhŒ<. Functions which don’t follow this will likely Oops when ”…”�”}”(hj:Õh²hh³Nh´Nubjˆ )�”}”(hŒ%``CONFIG_DRM_DISPLAY_DP_AUX_CHARDEV``”h]”hŒ!CONFIG_DRM_DISPLAY_DP_AUX_CHARDEV”…”�”}”(hj9Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj:ÕubhŒ is enabled.”…”�”}”(hj:Õh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jsÕh´MF hjÄÔubhÎ)�”}”(hX·For devices where the AUX channel is a device that exists independently of the :c:type:`drm_device` that uses it, such as SoCs and bridge devices, it is recommended to call drm_dp_aux_register() after a :c:type:`drm_device` has been assigned to :c:type:`drm_dp_aux.drm_dev `, and likewise to call drm_dp_aux_unregister() once the :c:type:`drm_device` should no longer be associated with the AUX channel (e.g. on bridge detach).”h]”(hŒOFor devices where the AUX channel is a device that exists independently of the ”…”�”}”(hjQÖh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_device`”h]”jˆ )�”}”(hj[Öh]”hŒ drm_device”…”�”}”(hj]Öh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjYÖubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œ drm_device”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MP hjQÖubhŒh that uses it, such as SoCs and bridge devices, it is recommended to call drm_dp_aux_register() after a ”…”�”}”(hjQÖh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_device`”h]”jˆ )�”}”(hjÖh]”hŒ drm_device”…”�”}”(hj�Öh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj}Öubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œ drm_device”uh1hh³jxÖh´MP hjQÖubhŒ has been assigned to ”…”�”}”(hjQÖh²hh³Nh´Nubh)�”}”(hŒ):c:type:`drm_dp_aux.drm_dev `”h]”jˆ )�”}”(hj¢Öh]”hŒdrm_dp_aux.drm_dev”…”�”}”(hj¤Öh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj Öubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_dp_aux”uh1hh³jxÖh´MP hjQÖubhŒ8, and likewise to call drm_dp_aux_unregister() once the ”…”�”}”(hjQÖh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_device`”h]”jˆ )�”}”(hjÅÖh]”hŒ drm_device”…”�”}”(hjÇÖh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÃÖubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œ drm_device”uh1hh³jxÖh´MP hjQÖubhŒM should no longer be associated with the AUX channel (e.g. on bridge detach).”…”�”}”(hjQÖh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jxÖh´MP hjÄÔubhÎ)�”}”(hŒ­Drivers which need to use the aux channel before either of the two points mentioned above need to call drm_dp_aux_init() in order to use the AUX channel before registration.”h]”hŒ­Drivers which need to use the aux channel before either of the two points mentioned above need to call drm_dp_aux_init() in order to use the AUX channel before registration.”…”�”}”(hjìÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MW hjÄÔubhÎ)�”}”(hŒ9Returns 0 on success or a negative error code on failure.”h]”hŒ9Returns 0 on success or a negative error code on failure.”…”�”}”(hjûÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M[ hjÄÔubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ"drm_dp_aux_unregister (C function)”Œc.drm_dp_aux_unregister”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ3void drm_dp_aux_unregister (struct drm_dp_aux *aux)”h]”j¤ )�”}”(hŒ2void drm_dp_aux_unregister(struct drm_dp_aux *aux)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj*×h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj&×h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M| ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9×h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj&×h²hh³j8×h´M| ubjÍ )�”}”(hŒdrm_dp_aux_unregister”h]”jÓ )�”}”(hŒdrm_dp_aux_unregister”h]”hŒdrm_dp_aux_unregister”…”�”}”(hjK×h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjG×ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj&×h²hh³j8×h´M| ubjÞ)�”}”(hŒ(struct drm_dp_aux *aux)”h]”jä)�”}”(hŒstruct drm_dp_aux *aux”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjg×h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjc×ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjt×h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjc×ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(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%)�”}”jjM×sbŒc.drm_dp_aux_unregister”†”asbuh1hhjc×ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥×h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjc×ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj³×h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjc×ubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hjÀ×h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjc×ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj_×ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj&×h²hh³j8×h´M| ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj"×h²hh³j8×h´M| ubah}”(h]”j×ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j8×h´M| hj×h²hubj )�”}”(hhh]”hÎ)�”}”(hŒunregister an AUX adapter”h]”hŒunregister an AUX adapter”…”�”}”(hjê×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M| hjç×h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj×h²hh³j8×h´M| ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jØj$ jØj% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hŒD**Parameters** ``struct drm_dp_aux *aux`` DisplayPort AUX channel”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj Øh]”hŒ Parameters”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj Øubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M€ hjØubjw )�”}”(hhh]”j| )�”}”(hŒ2``struct drm_dp_aux *aux`` DisplayPort AUX channel”h]”(j‚ )�”}”(hŒ``struct drm_dp_aux *aux``”h]”jˆ )�”}”(hj+Øh]”hŒstruct drm_dp_aux *aux”…”�”}”(hj-Øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj)Øubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M‚ hj%Øubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort AUX channel”h]”hŒDisplayPort AUX channel”…”�”}”(hjDØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M} hjAØubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj%Øubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j@Øh´M‚ hj"Øubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjØubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ"drm_dp_psr_setup_time (C function)”Œc.drm_dp_psr_setup_time”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒGint drm_dp_psr_setup_time (const u8 psr_cap[EDP_PSR_RECEIVER_CAP_SIZE])”h]”j¤ )�”}”(hŒFint drm_dp_psr_setup_time(const u8 psr_cap[EDP_PSR_RECEIVER_CAP_SIZE])”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj…Øh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj�Øh²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.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Œdrm_dp_psr_setup_time”h]”jÓ )�”}”(hŒdrm_dp_psr_setup_time”h]”hŒdrm_dp_psr_setup_time”…”�”}”(hj¦Øh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¢Øubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj�Øh²hh³j“Øh´M‰ ubjÞ)�”}”(hŒ-(const u8 psr_cap[EDP_PSR_RECEIVER_CAP_SIZE])”h]”jä)�”}”(hŒ+const u8 psr_cap[EDP_PSR_RECEIVER_CAP_SIZE]”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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Œu8”h]”hŒu8”…”�”}”(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%)�”}”jj¨ØsbŒc.drm_dp_psr_setup_time”†”asbuh1hhj¾Øubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¾ØubjÓ )�”}”(hŒpsr_cap”h]”hŒpsr_cap”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¾Øubj9)�”}”(hjMh]”hŒ[”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¾Øubh)�”}”(hhh]”jÓ )�”}”(hŒEDP_PSR_RECEIVER_CAP_SIZE”h]”hŒEDP_PSR_RECEIVER_CAP_SIZE”…”�”}”(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.drm_dp_psr_setup_time”†”asbuh1hhj¾Øubj9)�”}”(hj=Mh]”hŒ]”…”�”}”(hjJÙh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¾Øubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjºØubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj�Øh²hh³j“Øh´M‰ ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj}Øh²hh³j“Øh´M‰ ubah}”(h]”jxØah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j“Øh´M‰ hjzØh²hubj )�”}”(hhh]”hÎ)�”}”(hŒPSR setup in time usec”h]”hŒPSR setup in time usec”…”�”}”(hjsÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M‰ hjpÙh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjzØh²hh³j“Øh´M‰ ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j‹Ùj$ j‹Ùj% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hŒ¸**Parameters** ``const u8 psr_cap[EDP_PSR_RECEIVER_CAP_SIZE]`` PSR capabilities from DPCD **Return** PSR setup time for the panel in microseconds, negative error code on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj•Ùh]”hŒ Parameters”…”�”}”(hj—Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj“Ùubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M� hj�Ùubjw )�”}”(hhh]”j| )�”}”(hŒK``const u8 psr_cap[EDP_PSR_RECEIVER_CAP_SIZE]`` PSR capabilities from DPCD ”h]”(j‚ )�”}”(hŒ/``const u8 psr_cap[EDP_PSR_RECEIVER_CAP_SIZE]``”h]”jˆ )�”}”(hj´Ùh]”hŒ+const u8 psr_cap[EDP_PSR_RECEIVER_CAP_SIZE]”…”�”}”(hj¶Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj²Ùubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MŠ hj®Ùubjž )�”}”(hhh]”hÎ)�”}”(hŒPSR capabilities from DPCD”h]”hŒPSR capabilities from DPCD”…”�”}”(hjÍÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÉÙh´MŠ hjÊÙubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj®Ùubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÉÙh´MŠ hj«Ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj�ÙubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjïÙh]”hŒReturn”…”�”}”(hjñÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjíÙubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MŒ hj�ÙubhÎ)�”}”(hŒNPSR setup time for the panel in microseconds, negative error code on failure.”h]”hŒNPSR setup time for the panel in microseconds, negative error code on failure.”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MŒ hj�Ùubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_dp_start_crc (C function)”Œc.drm_dp_start_crc”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒDint drm_dp_start_crc (struct drm_dp_aux *aux, struct drm_crtc *crtc)”h]”j¤ )�”}”(hŒCint drm_dp_start_crc(struct drm_dp_aux *aux, struct drm_crtc *crtc)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj4Úh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj0Úh²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M¨ ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCÚh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj0Úh²hh³jBÚh´M¨ ubjÍ )�”}”(hŒdrm_dp_start_crc”h]”jÓ )�”}”(hŒdrm_dp_start_crc”h]”hŒdrm_dp_start_crc”…”�”}”(hjUÚh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjQÚubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj0Úh²hh³jBÚh´M¨ ubjÞ)�”}”(hŒ/(struct drm_dp_aux *aux, struct drm_crtc *crtc)”h]”(jä)�”}”(hŒstruct drm_dp_aux *aux”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjqÚh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjmÚubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~Úh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjmÚubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(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%)�”}”jjWÚsbŒc.drm_dp_start_crc”†”asbuh1hhjmÚubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯Úh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjmÚubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj½Úh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjmÚubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hjÊÚh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjmÚubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjiÚubjä)�”}”(hŒstruct drm_crtc *crtc”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Œdrm_crtc”h]”hŒdrm_crtc”…”�”}”(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.drm_dp_start_crc”†”asbuh1hhjßÚubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjßÚubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj-Ûh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjßÚubjÓ )�”}”(hŒcrtc”h]”hŒcrtc”…”�”}”(hj:Ûh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjßÚubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjiÚubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj0Úh²hh³jBÚh´M¨ ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj,Úh²hh³jBÚh´M¨ ubah}”(h]”j'Úah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jBÚh´M¨ hj)Úh²hubj )�”}”(hhh]”hÎ)�”}”(hŒstart capture of frame CRCs”h]”hŒstart capture of frame CRCs”…”�”}”(hjdÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M¨ hjaÛh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj)Úh²hh³jBÚh´M¨ ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j|Ûj$ j|Ûj% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hŒæ**Parameters** ``struct drm_dp_aux *aux`` DisplayPort AUX channel ``struct drm_crtc *crtc`` CRTC displaying the frames whose CRCs are to be captured **Description** Returns 0 on success or a negative error code on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj†Ûh]”hŒ Parameters”…”�”}”(hjˆÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj„Ûubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M¬ hj€Ûubjw )�”}”(hhh]”(j| )�”}”(hŒ3``struct drm_dp_aux *aux`` DisplayPort AUX channel ”h]”(j‚ )�”}”(hŒ``struct drm_dp_aux *aux``”h]”jˆ )�”}”(hj¥Ûh]”hŒstruct drm_dp_aux *aux”…”�”}”(hj§Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj£Ûubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M© hjŸÛubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort AUX channel”h]”hŒDisplayPort AUX channel”…”�”}”(hj¾Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jºÛh´M© hj»Ûubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjŸÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jºÛh´M© hjœÛubj| )�”}”(hŒS``struct drm_crtc *crtc`` CRTC displaying the frames whose CRCs are to be captured ”h]”(j‚ )�”}”(hŒ``struct drm_crtc *crtc``”h]”jˆ )�”}”(hjÞÛh]”hŒstruct drm_crtc *crtc”…”�”}”(hjàÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÜÛubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mª hjØÛubjž )�”}”(hhh]”hÎ)�”}”(hŒ8CRTC displaying the frames whose CRCs are to be captured”h]”hŒ8CRTC displaying the frames whose CRCs are to be captured”…”�”}”(hj÷Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jóÛh´Mª hjôÛubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjØÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jóÛh´Mª hjœÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj€ÛubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjÜh]”hŒ Description”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÜubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M¬ hj€ÛubhÎ)�”}”(hŒ9Returns 0 on success or a negative error code on failure.”h]”hŒ9Returns 0 on success or a negative error code on failure.”…”�”}”(hj/Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M« hj€Ûubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_dp_stop_crc (C function)”Œc.drm_dp_stop_crc”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ,int drm_dp_stop_crc (struct drm_dp_aux *aux)”h]”j¤ )�”}”(hŒ+int drm_dp_stop_crc(struct drm_dp_aux *aux)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj^Üh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjZÜh²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MÄ ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjmÜh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjZÜh²hh³jlÜh´MÄ ubjÍ )�”}”(hŒdrm_dp_stop_crc”h]”jÓ )�”}”(hŒdrm_dp_stop_crc”h]”hŒdrm_dp_stop_crc”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj{Üubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjZÜh²hh³jlÜh´MÄ ubjÞ)�”}”(hŒ(struct drm_dp_aux *aux)”h]”jä)�”}”(hŒstruct drm_dp_aux *aux”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Œ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(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%)�”}”jj�ÜsbŒc.drm_dp_stop_crc”†”asbuh1hhj—Üubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙÜh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj—Üubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjçÜh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj—ÜubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hjôÜh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj—Üubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj“Üubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjZÜh²hh³jlÜh´MÄ ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjVÜh²hh³jlÜh´MÄ ubah}”(h]”jQÜah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jlÜh´MÄ hjSÜh²hubj )�”}”(hhh]”hÎ)�”}”(hŒstop capture of frame CRCs”h]”hŒstop capture of frame CRCs”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MÄ hjÝh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjSÜh²hh³jlÜh´MÄ ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j6Ýj$ j6Ýj% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hŒ�**Parameters** ``struct drm_dp_aux *aux`` DisplayPort AUX channel **Description** Returns 0 on success or a negative error code on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj@Ýh]”hŒ Parameters”…”�”}”(hjBÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj>Ýubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MÈ hj:Ýubjw )�”}”(hhh]”j| )�”}”(hŒ3``struct drm_dp_aux *aux`` DisplayPort AUX channel ”h]”(j‚ )�”}”(hŒ``struct drm_dp_aux *aux``”h]”jˆ )�”}”(hj_Ýh]”hŒstruct drm_dp_aux *aux”…”�”}”(hjaÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj]Ýubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MÅ hjYÝubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort AUX channel”h]”hŒDisplayPort AUX channel”…”�”}”(hjxÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jtÝh´MÅ hjuÝubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjYÝubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jtÝh´MÅ hjVÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj:ÝubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjšÝh]”hŒ Description”…”�”}”(hjœÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj˜Ýubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MÇ hj:ÝubhÎ)�”}”(hŒ9Returns 0 on success or a negative error code on failure.”h]”hŒ9Returns 0 on success or a negative error code on failure.”…”�”}”(hj°Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MÆ hj:Ýubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_dp_read_desc (C function)”Œc.drm_dp_read_desc”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒWint drm_dp_read_desc (struct drm_dp_aux *aux, struct drm_dp_desc *desc, bool is_branch)”h]”j¤ )�”}”(hŒVint drm_dp_read_desc(struct drm_dp_aux *aux, struct drm_dp_desc *desc, bool is_branch)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjßÝh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjÛÝh²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MA ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîÝh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÛÝh²hh³jíÝh´MA ubjÍ )�”}”(hŒdrm_dp_read_desc”h]”jÓ )�”}”(hŒdrm_dp_read_desc”h]”hŒdrm_dp_read_desc”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjüÝubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÛÝh²hh³jíÝh´MA ubjÞ)�”}”(hŒB(struct drm_dp_aux *aux, struct drm_dp_desc *desc, bool is_branch)”h]”(jä)�”}”(hŒstruct drm_dp_aux *aux”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Œ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(hj:Þh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj7Þubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j<ÞŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjÞsbŒc.drm_dp_read_desc”†”asbuh1hhjÞubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZÞh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÞubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjhÞh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÞubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hjuÞh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÞubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÞubjä)�”}”(hŒstruct drm_dp_desc *desc”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Œ drm_dp_desc”h]”hŒ drm_dp_desc”…”�”}”(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ï ]”jVÞŒc.drm_dp_read_desc”†”asbuh1hhjŠÞubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊÞh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjŠÞubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjØÞh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŠÞubjÓ )�”}”(hŒdesc”h]”hŒdesc”…”�”}”(hjåÞh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjŠÞubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÞubjä)�”}”(hŒbool is_branch”h]”(j¦)�”}”(hj£Ih]”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Œ is_branch”h]”hŒ is_branch”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjúÞubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÞubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjÛÝh²hh³jíÝh´MA ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj×Ýh²hh³jíÝh´MA ubah}”(h]”jÒÝah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jíÝh´MA hjÔÝh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ%read sink/branch descriptor from DPCD”h]”hŒ%read sink/branch descriptor from DPCD”…”�”}”(hjCßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MA hj@ßh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÔÝh²hh³jíÝh´MA ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j[ßj$ j[ßj% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hXv**Parameters** ``struct drm_dp_aux *aux`` DisplayPort AUX channel ``struct drm_dp_desc *desc`` Device descriptor to fill from DPCD ``bool is_branch`` true for branch devices, false for sink devices **Description** Read DPCD 0x400 (sink) or 0x500 (branch) into **desc**. Also debug log the identification. Returns 0 on success or a negative error code on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjeßh]”hŒ Parameters”…”�”}”(hjgßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjcßubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´ME hj_ßubjw )�”}”(hhh]”(j| )�”}”(hŒ3``struct drm_dp_aux *aux`` DisplayPort AUX channel ”h]”(j‚ )�”}”(hŒ``struct drm_dp_aux *aux``”h]”jˆ )�”}”(hj„ßh]”hŒstruct drm_dp_aux *aux”…”�”}”(hj†ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj‚ßubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MB hj~ßubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort AUX channel”h]”hŒDisplayPort AUX channel”…”�”}”(hj�ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j™ßh´MB hjšßubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj~ßubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j™ßh´MB hj{ßubj| )�”}”(hŒA``struct drm_dp_desc *desc`` Device descriptor to fill from DPCD ”h]”(j‚ )�”}”(hŒ``struct drm_dp_desc *desc``”h]”jˆ )�”}”(hj½ßh]”hŒstruct drm_dp_desc *desc”…”�”}”(hj¿ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj»ßubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MC hj·ßubjž )�”}”(hhh]”hÎ)�”}”(hŒ#Device descriptor to fill from DPCD”h]”hŒ#Device descriptor to fill from DPCD”…”�”}”(hjÖßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÒßh´MC hjÓßubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj·ßubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÒßh´MC hj{ßubj| )�”}”(hŒC``bool is_branch`` true for branch devices, false for sink devices ”h]”(j‚ )�”}”(hŒ``bool is_branch``”h]”jˆ )�”}”(hjößh]”hŒbool is_branch”…”�”}”(hjøßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjôßubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MD hjðßubjž )�”}”(hhh]”hÎ)�”}”(hŒ/true for branch devices, false for sink devices”h]”hŒ/true for branch devices, false for sink devices”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j àh´MD hj àubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjðßubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j àh´MD hj{ßubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj_ßubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj1àh]”hŒ Description”…”�”}”(hj3àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj/àubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MF hj_ßubhÎ)�”}”(hŒZRead DPCD 0x400 (sink) or 0x500 (branch) into **desc**. Also debug log the identification.”h]”(hŒ.Read DPCD 0x400 (sink) or 0x500 (branch) into ”…”�”}”(hjGàh²hh³Nh´Nubj3 )�”}”(hŒ**desc**”h]”hŒdesc”…”�”}”(hjOàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjGàubhŒ$. Also debug log the identification.”…”�”}”(hjGàh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´ME hj_ßubhÎ)�”}”(hŒ9Returns 0 on success or a negative error code on failure.”h]”hŒ9Returns 0 on success or a negative error code on failure.”…”�”}”(hjhàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MH hj_ßubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ#drm_dp_dump_lttpr_desc (C function)”Œc.drm_dp_dump_lttpr_desc”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒKint drm_dp_dump_lttpr_desc (struct drm_dp_aux *aux, enum drm_dp_phy dp_phy)”h]”j¤ )�”}”(hŒJint drm_dp_dump_lttpr_desc(struct drm_dp_aux *aux, enum drm_dp_phy dp_phy)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj—àh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj“àh²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.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Œdrm_dp_dump_lttpr_desc”h]”jÓ )�”}”(hŒdrm_dp_dump_lttpr_desc”h]”hŒdrm_dp_dump_lttpr_desc”…”�”}”(hj¸àh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj´àubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj“àh²hh³j¥àh´M_ ubjÞ)�”}”(hŒ0(struct drm_dp_aux *aux, enum drm_dp_phy dp_phy)”h]”(jä)�”}”(hŒstruct drm_dp_aux *aux”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Œ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(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%)�”}”jjºàsbŒc.drm_dp_dump_lttpr_desc”†”asbuh1hhjÐàubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÐàubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj áh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÐàubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hj-áh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÐàubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÌàubjä)�”}”(hŒenum drm_dp_phy dp_phy”h]”(jª )�”}”(hjÂ7h]”hŒenum”…”�”}”(hjFáh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjBáubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSáh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjBáubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_dp_phy”h]”hŒ drm_dp_phy”…”�”}”(hjdáh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjaáubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jfáŒmodname”NŒ classname”Njé jì )�”}”jï ]”jáŒc.drm_dp_dump_lttpr_desc”†”asbuh1hhjBáubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚áh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjBáubjÓ )�”}”(hŒdp_phy”h]”hŒdp_phy”…”�”}”(hj�áh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjBáubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÌàubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj“àh²hh³j¥àh´M_ ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ2read and dump the DPCD descriptor for an LTTPR PHY”h]”hŒ2read and dump the DPCD descriptor for an LTTPR PHY”…”�”}”(hjºáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.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²hhjÎ9h³Nh´Nubj) )�”}”(hX)**Parameters** ``struct drm_dp_aux *aux`` DisplayPort AUX channel ``enum drm_dp_phy dp_phy`` LTTPR PHY instance **Description** Read the DPCD LTTPR PHY descriptor for **dp_phy** and print a debug message with its details to dmesg. Returns 0 on success or a negative error code on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjÜáh]”hŒ Parameters”…”�”}”(hjÞáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÚáubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mc hjÖáubjw )�”}”(hhh]”(j| )�”}”(hŒ3``struct drm_dp_aux *aux`` DisplayPort AUX channel ”h]”(j‚ )�”}”(hŒ``struct drm_dp_aux *aux``”h]”jˆ )�”}”(hjûáh]”hŒstruct drm_dp_aux *aux”…”�”}”(hjýáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjùáubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M` hjõáubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort AUX channel”h]”hŒDisplayPort AUX channel”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jâh´M` hjâubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjõáubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jâh´M` hjòáubj| )�”}”(hŒ.``enum drm_dp_phy dp_phy`` LTTPR PHY instance ”h]”(j‚ )�”}”(hŒ``enum drm_dp_phy dp_phy``”h]”jˆ )�”}”(hj4âh]”hŒenum drm_dp_phy dp_phy”…”�”}”(hj6âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj2âubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Ma hj.âubjž )�”}”(hhh]”hÎ)�”}”(hŒLTTPR PHY instance”h]”hŒLTTPR PHY instance”…”�”}”(hjMâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jIâh´Ma hjJâubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj.âubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jIâh´Ma hjòáubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÖáubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjoâh]”hŒ Description”…”�”}”(hjqâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjmâubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mc hjÖáubhÎ)�”}”(hŒfRead the DPCD LTTPR PHY descriptor for **dp_phy** and print a debug message with its details to dmesg.”h]”(hŒ'Read the DPCD LTTPR PHY descriptor for ”…”�”}”(hj…âh²hh³Nh´Nubj3 )�”}”(hŒ **dp_phy**”h]”hŒdp_phy”…”�”}”(hj�âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj…âubhŒ5 and print a debug message with its details to dmesg.”…”�”}”(hj…âh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mb hjÖáubhÎ)�”}”(hŒ9Returns 0 on success or a negative error code on failure.”h]”hŒ9Returns 0 on success or a negative error code on failure.”…”�”}”(hj¦âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Me hjÖáubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ%drm_dp_dsc_sink_bpp_incr (C function)”Œc.drm_dp_dsc_sink_bpp_incr”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒIu8 drm_dp_dsc_sink_bpp_incr (const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE])”h]”j¤ )�”}”(hŒHu8 drm_dp_dsc_sink_bpp_incr(const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE])”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(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Œdrm_dp_dsc_sink_bpp_incr”sbŒc.drm_dp_dsc_sink_bpp_incr”†”asbuh1hhjÑâh²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.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Œdrm_dp_dsc_sink_bpp_incr”h]”jÓ )�”}”(hjöâh]”hŒdrm_dp_dsc_sink_bpp_incr”…”�”}”(hj ãh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjãubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÑâh²hh³jùâh´M{ ubjÞ)�”}”(hŒ-(const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE])”h]”jä)�”}”(hŒ+const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE]”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hj'ãh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj#ãubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4ãh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj#ãubh)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(hjEãh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjBãubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jGãŒmodname”NŒ classname”Njé jì )�”}”jï ]”jôâŒc.drm_dp_dsc_sink_bpp_incr”†”asbuh1hhj#ãubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjcãh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj#ãubjÓ )�”}”(hŒdsc_dpcd”h]”hŒdsc_dpcd”…”�”}”(hjqãh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj#ãubj9)�”}”(hjMh]”hŒ[”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj#ãubh)�”}”(hhh]”jÓ )�”}”(hŒDP_DSC_RECEIVER_CAP_SIZE”h]”hŒDP_DSC_RECEIVER_CAP_SIZE”…”�”}”(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.drm_dp_dsc_sink_bpp_incr”†”asbuh1hhj#ãubj9)�”}”(hj=Mh]”hŒ]”…”�”}”(hj­ãh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj#ãubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjãubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjÑâh²hh³jùâh´M{ ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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ŒGet bits per pixel increment”h]”hŒGet bits per pixel increment”…”�”}”(hjÖãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.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²hhjÎ9h³Nh´Nubj) )�”}”(hŒ¢**Parameters** ``const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE]`` DSC capabilities from DPCD **Description** Returns the bpp precision supported by the DP sink.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjøãh]”hŒ Parameters”…”�”}”(hjúãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjöãubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M hjòãubjw )�”}”(hhh]”j| )�”}”(hŒK``const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE]`` DSC capabilities from DPCD ”h]”(j‚ )�”}”(hŒ/``const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE]``”h]”jˆ )�”}”(hjäh]”hŒ+const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE]”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjäubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M| hjäubjž )�”}”(hhh]”hÎ)�”}”(hŒDSC capabilities from DPCD”h]”hŒDSC capabilities from DPCD”…”�”}”(hj0äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j,äh´M| hj-äubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjäubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j,äh´M| hjäubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjòãubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjRäh]”hŒ Description”…”�”}”(hjTäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjPäubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M~ hjòãubhÎ)�”}”(hŒ3Returns the bpp precision supported by the DP sink.”h]”hŒ3Returns the bpp precision supported by the DP sink.”…”�”}”(hjhäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M} hjòãubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ+drm_dp_dsc_slice_count_to_mask (C function)”Œ c.drm_dp_dsc_slice_count_to_mask”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ4u32 drm_dp_dsc_slice_count_to_mask (int slice_count)”h]”j¤ )�”}”(hŒ3u32 drm_dp_dsc_slice_count_to_mask(int slice_count)”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%)�”}”jŒdrm_dp_dsc_slice_count_to_mask”sbŒ c.drm_dp_dsc_slice_count_to_mask”†”asbuh1hhj“äh²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.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Œdrm_dp_dsc_slice_count_to_mask”h]”jÓ )�”}”(hj¸äh]”hŒdrm_dp_dsc_slice_count_to_mask”…”�”}”(hjÎäh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÊäubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj“äh²hh³j»äh´M– ubjÞ)�”}”(hŒ(int slice_count)”h]”jä)�”}”(hŒint slice_count”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(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Œ slice_count”h]”hŒ slice_count”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjåäubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjáäubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj“äh²hh³j»äh´M– ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ+Convert a slice count to a slice count mask”h]”hŒ+Convert a slice count to a slice count mask”…”�”}”(hj/åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.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# jGåj$ jGåj% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hŒ‘**Parameters** ``int slice_count`` slice count **Description** Convert **slice_count** to a slice count mask. Returns the slice count mask.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjQåh]”hŒ Parameters”…”�”}”(hjSåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjOåubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mš hjKåubjw )�”}”(hhh]”j| )�”}”(hŒ ``int slice_count`` slice count ”h]”(j‚ )�”}”(hŒ``int slice_count``”h]”jˆ )�”}”(hjpåh]”hŒint slice_count”…”�”}”(hjråh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjnåubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M— hjjåubjž )�”}”(hhh]”hÎ)�”}”(hŒ slice count”h]”hŒ slice count”…”�”}”(hj‰åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j…åh´M— hj†åubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjjåubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j…åh´M— hjgåubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjKåubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj«åh]”hŒ Description”…”�”}”(hj­åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj©åubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M™ hjKåubhÎ)�”}”(hŒ.Convert **slice_count** to a slice count mask.”h]”(hŒConvert ”…”�”}”(hjÁåh²hh³Nh´Nubj3 )�”}”(hŒ**slice_count**”h]”hŒ slice_count”…”�”}”(hjÉåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÁåubhŒ to a slice count mask.”…”�”}”(hjÁåh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M˜ hjKåubhÎ)�”}”(hŒReturns the slice count mask.”h]”hŒReturns the slice count mask.”…”�”}”(hjâåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mš hjKåubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ-drm_dp_dsc_sink_slice_count_mask (C function)”Œ"c.drm_dp_dsc_sink_slice_count_mask”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ_u32 drm_dp_dsc_sink_slice_count_mask (const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE], bool is_edp)”h]”j¤ )�”}”(hŒ^u32 drm_dp_dsc_sink_slice_count_mask(const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE], bool is_edp)”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%)�”}”jŒ drm_dp_dsc_sink_slice_count_mask”sbŒ"c.drm_dp_dsc_sink_slice_count_mask”†”asbuh1hhj æh²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M¤ ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6æh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj æh²hh³j5æh´M¤ ubjÍ )�”}”(hŒ drm_dp_dsc_sink_slice_count_mask”h]”jÓ )�”}”(hj2æh]”hŒ drm_dp_dsc_sink_slice_count_mask”…”�”}”(hjHæh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjDæubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj æh²hh³j5æh´M¤ ubjÞ)�”}”(hŒ:(const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE], bool is_edp)”h]”(jä)�”}”(hŒ+const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE]”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hjcæh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj_æubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjpæh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj_æubh)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(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ï ]”j0æŒ"c.drm_dp_dsc_sink_slice_count_mask”†”asbuh1hhj_æubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸæh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj_æubjÓ )�”}”(hŒdsc_dpcd”h]”hŒdsc_dpcd”…”�”}”(hj­æh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj_æubj9)�”}”(hjMh]”hŒ[”…”�”}”(hj»æh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj_æubh)�”}”(hhh]”jÓ )�”}”(hŒDP_DSC_RECEIVER_CAP_SIZE”h]”hŒDP_DSC_RECEIVER_CAP_SIZE”…”�”}”(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ï ]”j0æŒ"c.drm_dp_dsc_sink_slice_count_mask”†”asbuh1hhj_æubj9)�”}”(hj=Mh]”hŒ]”…”�”}”(hjéæh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj_æubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj[æubjä)�”}”(hŒ bool is_edp”h]”(j¦)�”}”(hj£Ih]”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Œis_edp”h]”hŒis_edp”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjýæubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj[æubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj æh²hh³j5æh´M¤ ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj æh²hh³j5æh´M¤ ubah}”(h]”jæah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j5æh´M¤ hjæh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ+Get the mask of valid DSC sink slice counts”h]”hŒ+Get the mask of valid DSC sink slice counts”…”�”}”(hjFçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M¤ hjCçh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjæh²hh³j5æh´M¤ ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j^çj$ j^çj% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hXš**Parameters** ``const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE]`` the sink's DSC DPCD capabilities ``bool is_edp`` ``true`` for an eDP sink **Description** Get the mask of supported slice counts from the sink's DSC DPCD register. **Return** Mask of slice counts supported by the DSC sink: - > 0: bit#0,1,3,5..,23 set if the sink supports 1,2,4,6..,24 slices - 0: if the sink doesn't support any slices”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjhçh]”hŒ Parameters”…”�”}”(hjjçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjfçubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M¨ hjbçubjw )�”}”(hhh]”(j| )�”}”(hŒQ``const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE]`` the sink's DSC DPCD capabilities ”h]”(j‚ )�”}”(hŒ/``const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE]``”h]”jˆ )�”}”(hj‡çh]”hŒ+const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE]”…”�”}”(hj‰çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj…çubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M¥ hj�çubjž )�”}”(hhh]”hÎ)�”}”(hŒ the sink's DSC DPCD capabilities”h]”hŒ"the sink’s DSC DPCD capabilities”…”�”}”(hj çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jœçh´M¥ hj�çubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj�çubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jœçh´M¥ hj~çubj| )�”}”(hŒ)``bool is_edp`` ``true`` for an eDP sink ”h]”(j‚ )�”}”(hŒ``bool is_edp``”h]”jˆ )�”}”(hjÀçh]”hŒ bool is_edp”…”�”}”(hjÂçh²hh³Nh´Nubah•}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¾çubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M¦ hjºçubjž )�”}”(hhh]”hÎ)�”}”(hŒ``true`` for an eDP sink”h]”(jˆ )�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hjÝçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÙçubhŒ for an eDP sink”…”�”}”(hjÙçh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÕçh´M¦ hjÖçubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjºçubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÕçh´M¦ hj~çubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjbçubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj èh]”hŒ Description”…”�”}”(hj èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjèubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M¨ hjbçubhÎ)�”}”(hŒIGet the mask of supported slice counts from the sink's DSC DPCD register.”h]”hŒKGet the mask of supported slice counts from the sink’s DSC DPCD register.”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M§ hjbçubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj0èh]”hŒReturn”…”�”}”(hj2èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj.èubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M© hjbçubhÎ)�”}”(hŒ¢Mask of slice counts supported by the DSC sink: - > 0: bit#0,1,3,5..,23 set if the sink supports 1,2,4,6..,24 slices - 0: if the sink doesn't support any slices”h]”hŒ¤Mask of slice counts supported by the DSC sink: - > 0: bit#0,1,3,5..,23 set if the sink supports 1,2,4,6..,24 slices - 0: if the sink doesn’t support any slices”…”�”}”(hjFèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mª hjbçubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ,drm_dp_dsc_sink_max_slice_count (C function)”Œ!c.drm_dp_dsc_sink_max_slice_count”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ]u8 drm_dp_dsc_sink_max_slice_count (const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE], bool is_edp)”h]”j¤ )�”}”(hŒ\u8 drm_dp_dsc_sink_max_slice_count(const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE], bool is_edp)”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(hjxèh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjuèubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jzèŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jŒdrm_dp_dsc_sink_max_slice_count”sbŒ!c.drm_dp_dsc_sink_max_slice_count”†”asbuh1hhjqèh²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M× ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjšèh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjqèh²hh³j™èh´M× ubjÍ )�”}”(hŒdrm_dp_dsc_sink_max_slice_count”h]”jÓ )�”}”(hj–èh]”hŒdrm_dp_dsc_sink_max_slice_count”…”�”}”(hj¬èh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¨èubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjqèh²hh³j™èh´M× ubjÞ)�”}”(hŒ:(const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE], bool is_edp)”h]”(jä)�”}”(hŒ+const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE]”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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Œu8”h]”hŒu8”…”�”}”(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.drm_dp_dsc_sink_max_slice_count”†”asbuh1hhjÃèubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÃèubjÓ )�”}”(hŒdsc_dpcd”h]”hŒdsc_dpcd”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÃèubj9)�”}”(hjMh]”hŒ[”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÃèubh)�”}”(hhh]”jÓ )�”}”(hŒDP_DSC_RECEIVER_CAP_SIZE”h]”hŒDP_DSC_RECEIVER_CAP_SIZE”…”�”}”(hj/éh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj,éubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j1éŒmodname”NŒ classname”Njé jì )�”}”jï ]”j”èŒ!c.drm_dp_dsc_sink_max_slice_count”†”asbuh1hhjÃèubj9)�”}”(hj=Mh]”hŒ]”…”�”}”(hjMéh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÃèubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¿èubjä)�”}”(hŒ bool is_edp”h]”(j¦)�”}”(hj£Ih]”hŒbool”…”�”}”(hjeéh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjaéubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjréh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjaéubjÓ )�”}”(hŒis_edp”h]”hŒis_edp”…”�”}”(hj€éh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjaéubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¿èubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjqèh²hh³j™èh´M× ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjmèh²hh³j™èh´M× ubah}”(h]”jhèah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j™èh´M× hjjèh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ2Get the max slice count supported by the DSC sink.”h]”hŒ2Get the max slice count supported by the DSC sink.”…”�”}”(hjªéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M× hj§éh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjjèh²hh³j™èh´M× ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jÂéj$ jÂéj% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hX¡**Parameters** ``const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE]`` DSC capabilities from DPCD ``bool is_edp`` true if its eDP, false for DP **Description** Read the slice capabilities DPCD register from DSC sink to get the maximum slice count supported. This is used to populate the DSC parameters in the :c:type:`struct drm_dsc_config ` by the driver. Driver creates an infoframe using these parameters to populate :c:type:`struct drm_dsc_pps_infoframe `. These are sent to the sink using DSC infoframe using the helper function drm_dsc_pps_infoframe_pack() **Return** Maximum slice count supported by DSC sink or 0 its invalid”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjÌéh]”hŒ Parameters”…”�”}”(hjÎéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÊéubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MÛ hjÆéubjw )�”}”(hhh]”(j| )�”}”(hŒK``const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE]`` DSC capabilities from DPCD ”h]”(j‚ )�”}”(hŒ/``const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE]``”h]”jˆ )�”}”(hjëéh]”hŒ+const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE]”…”�”}”(hjíéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjééubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MÙ hjåéubjž )�”}”(hhh]”hÎ)�”}”(hŒDSC capabilities from DPCD”h]”hŒDSC capabilities from DPCD”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jêh´MÙ hjêubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjåéubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jêh´MÙ hjâéubj| )�”}”(hŒ.``bool is_edp`` true if its eDP, false for DP ”h]”(j‚ )�”}”(hŒ``bool is_edp``”h]”jˆ )�”}”(hj$êh]”hŒ bool is_edp”…”�”}”(hj&êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj"êubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MÚ hjêubjž )�”}”(hhh]”hÎ)�”}”(hŒtrue if its eDP, false for DP”h]”hŒtrue if its eDP, false for DP”…”�”}”(hj=êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j9êh´MÚ hj:êubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjêubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j9êh´MÚ hjâéubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÆéubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj_êh]”hŒ Description”…”�”}”(hjaêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj]êubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MÜ hjÆéubhÎ)�”}”(hX¹Read the slice capabilities DPCD register from DSC sink to get the maximum slice count supported. This is used to populate the DSC parameters in the :c:type:`struct drm_dsc_config ` by the driver. Driver creates an infoframe using these parameters to populate :c:type:`struct drm_dsc_pps_infoframe `. These are sent to the sink using DSC infoframe using the helper function drm_dsc_pps_infoframe_pack()”h]”(hŒ•Read the slice capabilities DPCD register from DSC sink to get the maximum slice count supported. This is used to populate the DSC parameters in the ”…”�”}”(hjuêh²hh³Nh´Nubh)�”}”(hŒ0:c:type:`struct drm_dsc_config `”h]”jˆ )�”}”(hjêh]”hŒstruct drm_dsc_config”…”�”}”(hj�êh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj}êubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dsc_config”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MÛ hjuêubhŒO by the driver. Driver creates an infoframe using these parameters to populate ”…”�”}”(hjuêh²hh³Nh´Nubh)�”}”(hŒ>:c:type:`struct drm_dsc_pps_infoframe `”h]”jˆ )�”}”(hj£êh]”hŒstruct drm_dsc_pps_infoframe”…”�”}”(hj¥êh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj¡êubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dsc_pps_infoframe”uh1hh³jœêh´MÛ hjuêubhŒg. These are sent to the sink using DSC infoframe using the helper function drm_dsc_pps_infoframe_pack()”…”�”}”(hjuêh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jœêh´MÛ hjÆéubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjÌêh]”hŒReturn”…”�”}”(hjÎêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÊêubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mâ hjÆéubhÎ)�”}”(hŒ:Maximum slice count supported by DSC sink or 0 its invalid”h]”hŒ:Maximum slice count supported by DSC sink or 0 its invalid”…”�”}”(hjâêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mã hjÆéubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ+drm_dp_dsc_sink_line_buf_depth (C function)”Œ c.drm_dp_dsc_sink_line_buf_depth”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒOu8 drm_dp_dsc_sink_line_buf_depth (const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE])”h]”j¤ )�”}”(hŒNu8 drm_dp_dsc_sink_line_buf_depth(const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE])”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(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Œdrm_dp_dsc_sink_line_buf_depth”sbŒ c.drm_dp_dsc_sink_line_buf_depth”†”asbuh1hhj ëh²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mî ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6ëh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj ëh²hh³j5ëh´Mî ubjÍ )�”}”(hŒdrm_dp_dsc_sink_line_buf_depth”h]”jÓ )�”}”(hj2ëh]”hŒdrm_dp_dsc_sink_line_buf_depth”…”�”}”(hjHëh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjDëubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj ëh²hh³j5ëh´Mî ubjÞ)�”}”(hŒ-(const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE])”h]”jä)�”}”(hŒ+const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE]”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hjcëh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj_ëubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjpëh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj_ëubh)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(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ï ]”j0ëŒ c.drm_dp_dsc_sink_line_buf_depth”†”asbuh1hhj_ëubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸëh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj_ëubjÓ )�”}”(hŒdsc_dpcd”h]”hŒdsc_dpcd”…”�”}”(hj­ëh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj_ëubj9)�”}”(hjMh]”hŒ[”…”�”}”(hj»ëh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj_ëubh)�”}”(hhh]”jÓ )�”}”(hŒDP_DSC_RECEIVER_CAP_SIZE”h]”hŒDP_DSC_RECEIVER_CAP_SIZE”…”�”}”(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ï ]”j0ëŒ c.drm_dp_dsc_sink_line_buf_depth”†”asbuh1hhj_ëubj9)�”}”(hj=Mh]”hŒ]”…”�”}”(hjéëh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj_ëubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj[ëubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj ëh²hh³j5ëh´Mî ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj ëh²hh³j5ëh´Mî ubah}”(h]”jëah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j5ëh´Mî hjëh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ!Get the line buffer depth in bits”h]”hŒ!Get the line buffer depth in bits”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mî hjìh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjëh²hh³j5ëh´Mî ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j*ìj$ j*ìj% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hX®**Parameters** ``const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE]`` DSC capabilities from DPCD **Description** Read the DSC DPCD register to parse the line buffer depth in bits which is number of bits of precision within the decoder line buffer supported by the DSC sink. This is used to populate the DSC parameters in the :c:type:`struct drm_dsc_config ` by the driver. Driver creates an infoframe using these parameters to populate :c:type:`struct drm_dsc_pps_infoframe `. These are sent to the sink using DSC infoframe using the helper function drm_dsc_pps_infoframe_pack() **Return** Line buffer depth supported by DSC panel or 0 its invalid”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj4ìh]”hŒ Parameters”…”�”}”(hj6ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj2ìubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mò hj.ìubjw )�”}”(hhh]”j| )�”}”(hŒK``const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE]`` DSC capabilities from DPCD ”h]”(j‚ )�”}”(hŒ/``const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE]``”h]”jˆ )�”}”(hjSìh]”hŒ+const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE]”…”�”}”(hjUìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjQìubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mï hjMìubjž )�”}”(hhh]”hÎ)�”}”(hŒDSC capabilities from DPCD”h]”hŒDSC capabilities from DPCD”…”�”}”(hjlìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jhìh´Mï hjiìubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjMìubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jhìh´Mï hjJìubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj.ìubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjŽìh]”hŒ Description”…”�”}”(hj�ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjŒìubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mñ hj.ìubhÎ)�”}”(hXøRead the DSC DPCD register to parse the line buffer depth in bits which is number of bits of precision within the decoder line buffer supported by the DSC sink. This is used to populate the DSC parameters in the :c:type:`struct drm_dsc_config ` by the driver. Driver creates an infoframe using these parameters to populate :c:type:`struct drm_dsc_pps_infoframe `. These are sent to the sink using DSC infoframe using the helper function drm_dsc_pps_infoframe_pack()”h]”(hŒÔRead the DSC DPCD register to parse the line buffer depth in bits which is number of bits of precision within the decoder line buffer supported by the DSC sink. This is used to populate the DSC parameters in the ”…”�”}”(hj¤ìh²hh³Nh´Nubh)�”}”(hŒ0:c:type:`struct drm_dsc_config `”h]”jˆ )�”}”(hj®ìh]”hŒstruct drm_dsc_config”…”�”}”(hj°ìh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj¬ìubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dsc_config”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mð hj¤ìubhŒO by the driver. Driver creates an infoframe using these parameters to populate ”…”�”}”(hj¤ìh²hh³Nh´Nubh)�”}”(hŒ>:c:type:`struct drm_dsc_pps_infoframe `”h]”jˆ )�”}”(hjÒìh]”hŒstruct drm_dsc_pps_infoframe”…”�”}”(hjÔìh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÐìubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dsc_pps_infoframe”uh1hh³jËìh´Mð hj¤ìubhŒg. These are sent to the sink using DSC infoframe using the helper function drm_dsc_pps_infoframe_pack()”…”�”}”(hj¤ìh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jËìh´Mð hj.ìubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjûìh]”hŒReturn”…”�”}”(hjýìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjùìubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mø hj.ìubhÎ)�”}”(hŒ9Line buffer depth supported by DSC panel or 0 its invalid”h]”hŒ9Line buffer depth supported by DSC panel or 0 its invalid”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mù hj.ìubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ1drm_dp_dsc_sink_supported_input_bpcs (C function)”Œ&c.drm_dp_dsc_sink_supported_input_bpcs”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒeint drm_dp_dsc_sink_supported_input_bpcs (const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE], u8 dsc_bpc[3])”h]”j¤ )�”}”(hŒdint drm_dp_dsc_sink_supported_input_bpcs(const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE], u8 dsc_bpc[3])”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj@íh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj<íh²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjOíh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj<íh²hh³jNíh´M ubjÍ )�”}”(hŒ$drm_dp_dsc_sink_supported_input_bpcs”h]”jÓ )�”}”(hŒ$drm_dp_dsc_sink_supported_input_bpcs”h]”hŒ$drm_dp_dsc_sink_supported_input_bpcs”…”�”}”(hjaíh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj]íubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj<íh²hh³jNíh´M ubjÞ)�”}”(hŒ<(const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE], u8 dsc_bpc[3])”h]”(jä)�”}”(hŒ+const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE]”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hj}íh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjyíubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠíh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjyíubh)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(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%)�”}”jjcísbŒ&c.drm_dp_dsc_sink_supported_input_bpcs”†”asbuh1hhjyíubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»íh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjyíubjÓ )�”}”(hŒdsc_dpcd”h]”hŒdsc_dpcd”…”�”}”(hjÉíh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjyíubj9)�”}”(hjMh]”hŒ[”…”�”}”(hj×íh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjyíubh)�”}”(hhh]”jÓ )�”}”(hŒDP_DSC_RECEIVER_CAP_SIZE”h]”hŒDP_DSC_RECEIVER_CAP_SIZE”…”�”}”(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.drm_dp_dsc_sink_supported_input_bpcs”†”asbuh1hhjyíubj9)�”}”(hj=Mh]”hŒ]”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjyíubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjuíubjä)�”}”(hŒ u8 dsc_bpc[3]”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(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.drm_dp_dsc_sink_supported_input_bpcs”†”asbuh1hhjîubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>îh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjîubjÓ )�”}”(hŒdsc_bpc”h]”hŒdsc_bpc”…”�”}”(hjLîh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjîubj9)�”}”(hjMh]”hŒ[”…”�”}”(hjZîh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjîubjš)�”}”(hŒ3”h]”hŒ3”…”�”}”(hjgîh²hh³Nh´Nubah}”(h]”h ]”jšah"]”h$]”h&]”uh1jšhjîubj9)�”}”(hj=Mh]”hŒ]”…”�”}”(hjuîh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjîubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjuíubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj<íh²hh³jNíh´M ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj8íh²hh³jNíh´M ubah}”(h]”j3íah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jNíh´M hj5íh²hubj )�”}”(hhh]”hÎ)�”}”(hŒFGet all the input bits per component values supported by the DSC sink.”h]”hŒFGet all the input bits per component values supported by the DSC sink.”…”�”}”(hjžîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M hj›îh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj5íh²hh³jNíh´M ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j¶îj$ j¶îj% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hX³**Parameters** ``const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE]`` DSC capabilities from DPCD ``u8 dsc_bpc[3]`` An array to be filled by this helper with supported input bpcs. **Description** Read the DSC DPCD from the sink device to parse the supported bits per component values. This is used to populate the DSC parameters in the :c:type:`struct drm_dsc_config ` by the driver. Driver creates an infoframe using these parameters to populate :c:type:`struct drm_dsc_pps_infoframe `. These are sent to the sink using DSC infoframe using the helper function drm_dsc_pps_infoframe_pack() **Return** Number of input BPC values parsed from the DPCD”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjÀîh]”hŒ Parameters”…”�”}”(hjÂîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¾îubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M hjºîubjw )�”}”(hhh]”(j| )�”}”(hŒK``const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE]`` DSC capabilities from DPCD ”h]”(j‚ )�”}”(hŒ/``const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE]``”h]”jˆ )�”}”(hjßîh]”hŒ+const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE]”…”�”}”(hjáîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÝîubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M hjÙîubjž )�”}”(hhh]”hÎ)�”}”(hŒDSC capabilities from DPCD”h]”hŒDSC capabilities from DPCD”…”�”}”(hjøîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jôîh´M hjõîubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÙîubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jôîh´M hjÖîubj| )�”}”(hŒR``u8 dsc_bpc[3]`` An array to be filled by this helper with supported input bpcs. ”h]”(j‚ )�”}”(hŒ``u8 dsc_bpc[3]``”h]”jˆ )�”}”(hjïh]”hŒ u8 dsc_bpc[3]”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjïubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M hjïubjž )�”}”(hhh]”hÎ)�”}”(hŒ?An array to be filled by this helper with supported input bpcs.”h]”hŒ?An array to be filled by this helper with supported input bpcs.”…”�”}”(hj1ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M hj.ïubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjïubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j-ïh´M hjÖîubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjºîubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjTïh]”hŒ Description”…”�”}”(hjVïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjRïubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M hjºîubhÎ)�”}”(hX°Read the DSC DPCD from the sink device to parse the supported bits per component values. This is used to populate the DSC parameters in the :c:type:`struct drm_dsc_config ` by the driver. Driver creates an infoframe using these parameters to populate :c:type:`struct drm_dsc_pps_infoframe `. These are sent to the sink using DSC infoframe using the helper function drm_dsc_pps_infoframe_pack()”h]”(hŒŒRead the DSC DPCD from the sink device to parse the supported bits per component values. This is used to populate the DSC parameters in the ”…”�”}”(hjjïh²hh³Nh´Nubh)�”}”(hŒ0:c:type:`struct drm_dsc_config `”h]”jˆ )�”}”(hjtïh]”hŒstruct drm_dsc_config”…”�”}”(hjvïh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjrïubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dsc_config”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M hjjïubhŒO by the driver. Driver creates an infoframe using these parameters to populate ”…”�”}”(hjjïh²hh³Nh´Nubh)�”}”(hŒ>:c:type:`struct drm_dsc_pps_infoframe `”h]”jˆ )�”}”(hj˜ïh]”hŒstruct drm_dsc_pps_infoframe”…”�”}”(hjšïh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj–ïubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dsc_pps_infoframe”uh1hh³j‘ïh´M hjjïubhŒg. These are sent to the sink using DSC infoframe using the helper function drm_dsc_pps_infoframe_pack()”…”�”}”(hjjïh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j‘ïh´M hjºîubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjÁïh]”hŒReturn”…”�”}”(hjÃïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¿ïubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M& hjºîubhÎ)�”}”(hŒ/Number of input BPC values parsed from the DPCD”h]”hŒ/Number of input BPC values parsed from the DPCD”…”�”}”(hj×ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M' hjºîubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ1drm_dp_dsc_sink_max_slice_throughput (C function)”Œ&c.drm_dp_dsc_sink_max_slice_throughput”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒint drm_dp_dsc_sink_max_slice_throughput (const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE], int peak_pixel_rate, bool is_rgb_yuv444)”h]”j¤ )�”}”(hŒ~int drm_dp_dsc_sink_max_slice_throughput(const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE], int peak_pixel_rate, bool is_rgb_yuv444)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjðh²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MN ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjðh²hh³jðh´MN ubjÍ )�”}”(hŒ$drm_dp_dsc_sink_max_slice_throughput”h]”jÓ )�”}”(hŒ$drm_dp_dsc_sink_max_slice_throughput”h]”hŒ$drm_dp_dsc_sink_max_slice_throughput”…”�”}”(hj'ðh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj#ðubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjðh²hh³jðh´MN ubjÞ)�”}”(hŒV(const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE], int peak_pixel_rate, bool is_rgb_yuv444)”h]”(jä)�”}”(hŒ+const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE]”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hjCðh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj?ðubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPðh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj?ðubh)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(hjaðh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj^ðubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jcðŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj)ðsbŒ&c.drm_dp_dsc_sink_max_slice_throughput”†”asbuh1hhj?ðubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�ðh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj?ðubjÓ )�”}”(hŒdsc_dpcd”h]”hŒdsc_dpcd”…”�”}”(hj�ðh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj?ðubj9)�”}”(hjMh]”hŒ[”…”�”}”(hj�ðh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj?ðubh)�”}”(hhh]”jÓ )�”}”(hŒDP_DSC_RECEIVER_CAP_SIZE”h]”hŒDP_DSC_RECEIVER_CAP_SIZE”…”�”}”(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.drm_dp_dsc_sink_max_slice_throughput”†”asbuh1hhj?ðubj9)�”}”(hj=Mh]”hŒ]”…”�”}”(hjËðh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj?ðubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj;ðubjä)�”}”(hŒint peak_pixel_rate”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(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Œpeak_pixel_rate”h]”hŒpeak_pixel_rate”…”�”}”(hjÿðh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjßðubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj;ðubjä)�”}”(hŒbool is_rgb_yuv444”h]”(j¦)�”}”(hj£Ih]”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Œ is_rgb_yuv444”h]”hŒ is_rgb_yuv444”…”�”}”(hj3ñh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjñubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj;ðubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjðh²hh³jðh´MN ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjþïh²hh³jðh´MN ubah}”(h]”jùïah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jðh´MN hjûïh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ3Get a DSC sink's maximum pixel throughput per slice”h]”hŒ5Get a DSC sink’s maximum pixel throughput per slice”…”�”}”(hj]ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MN hjZñh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjûïh²hh³jðh´MN ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# juñj$ juñj% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hXý**Parameters** ``const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE]`` DSC sink's capabilities from DPCD ``int peak_pixel_rate`` Cumulative peak pixel rate in kHz ``bool is_rgb_yuv444`` The mode is either RGB or YUV444 **Description** Return the DSC sink device's maximum pixel throughput per slice, based on the device's **dsc_dpcd** capabilities, the **peak_pixel_rate** of the transferred stream(s) and whether the output format **is_rgb_yuv444** or yuv422/yuv420. Note that **peak_pixel_rate** is the total pixel rate transferred to the same DSC/display sink. For instance to calculate a tile's slice count of an MST multi-tiled display sink (not considering here the required rounding/alignment of slice count):: @peak_pixel_rate = tile_pixel_rate * tile_count total_slice_count = @peak_pixel_rate / drm_dp_dsc_sink_max_slice_throughput(@peak_pixel_rate) tile_slice_count = total_slice_count / tile_count **Return** The maximum pixel throughput per slice supported by the DSC sink device in kPixels/sec.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjñh]”hŒ Parameters”…”�”}”(hj�ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj}ñubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MR hjyñubjw )�”}”(hhh]”(j| )�”}”(hŒR``const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE]`` DSC sink's capabilities from DPCD ”h]”(j‚ )�”}”(hŒ/``const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE]``”h]”jˆ )�”}”(hjžñh]”hŒ+const u8 dsc_dpcd[DP_DSC_RECEIVER_CAP_SIZE]”…”�”}”(hj ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjœñubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MO hj˜ñubjž )�”}”(hhh]”hÎ)�”}”(hŒ!DSC sink's capabilities from DPCD”h]”hŒ#DSC sink’s capabilities from DPCD”…”�”}”(hj·ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j³ñh´MO hj´ñubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj˜ñubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j³ñh´MO hj•ñubj| )�”}”(hŒ:``int peak_pixel_rate`` Cumulative peak pixel rate in kHz ”h]”(j‚ )�”}”(hŒ``int peak_pixel_rate``”h]”jˆ )�”}”(hj×ñh]”hŒint peak_pixel_rate”…”�”}”(hjÙñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÕñubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MP hjÑñubjž )�”}”(hhh]”hÎ)�”}”(hŒ!Cumulative peak pixel rate in kHz”h]”hŒ!Cumulative peak pixel rate in kHz”…”�”}”(hjðñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jìñh´MP hjíñubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÑñubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jìñh´MP hj•ñubj| )�”}”(hŒ8``bool is_rgb_yuv444`` The mode is either RGB or YUV444 ”h]”(j‚ )�”}”(hŒ``bool is_rgb_yuv444``”h]”jˆ )�”}”(hjòh]”hŒbool is_rgb_yuv444”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjòubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MQ hj òubjž )�”}”(hhh]”hÎ)�”}”(hŒ The mode is either RGB or YUV444”h]”hŒ The mode is either RGB or YUV444”…”�”}”(hj)òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j%òh´MQ hj&òubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj òubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j%òh´MQ hj•ñubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjyñubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjKòh]”hŒ Description”…”�”}”(hjMòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjIòubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MS hjyñubhÎ)�”}”(hŒèReturn the DSC sink device's maximum pixel throughput per slice, based on the device's **dsc_dpcd** capabilities, the **peak_pixel_rate** of the transferred stream(s) and whether the output format **is_rgb_yuv444** or yuv422/yuv420.”h]”(hŒ[Return the DSC sink device’s maximum pixel throughput per slice, based on the device’s ”…”�”}”(hjaòh²hh³Nh´Nubj3 )�”}”(hŒ **dsc_dpcd**”h]”hŒdsc_dpcd”…”�”}”(hjiòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjaòubhŒ capabilities, the ”…”�”}”(hjaòh²hh³Nh´Nubj3 )�”}”(hŒ**peak_pixel_rate**”h]”hŒpeak_pixel_rate”…”�”}”(hj{òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjaòubhŒ< of the transferred stream(s) and whether the output format ”…”�”}”(hjaòh²hh³Nh´Nubj3 )�”}”(hŒ**is_rgb_yuv444**”h]”hŒ is_rgb_yuv444”…”�”}”(hj�òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjaòubhŒ or yuv422/yuv420.”…”�”}”(hjaòh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MR hjyñubhÎ)�”}”(hŒùNote that **peak_pixel_rate** is the total pixel rate transferred to the same DSC/display sink. For instance to calculate a tile's slice count of an MST multi-tiled display sink (not considering here the required rounding/alignment of slice count)::”h]”(hŒ Note that ”…”�”}”(hj¦òh²hh³Nh´Nubj3 )�”}”(hŒ**peak_pixel_rate**”h]”hŒpeak_pixel_rate”…”�”}”(hj®òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¦òubhŒÝ is the total pixel rate transferred to the same DSC/display sink. For instance to calculate a tile’s slice count of an MST multi-tiled display sink (not considering here the required rounding/alignment of slice count):”…”�”}”(hj¦òh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MV hjyñubjN )�”}”(hŒ¿@peak_pixel_rate = tile_pixel_rate * tile_count total_slice_count = @peak_pixel_rate / drm_dp_dsc_sink_max_slice_throughput(@peak_pixel_rate) tile_slice_count = total_slice_count / tile_count”h]”hŒ¿@peak_pixel_rate = tile_pixel_rate * tile_count total_slice_count = @peak_pixel_rate / drm_dp_dsc_sink_max_slice_throughput(@peak_pixel_rate) tile_slice_count = total_slice_count / tile_count”…”�”}”hjÇòsbah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jM h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M[ hjyñubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjØòh]”hŒReturn”…”�”}”(hjÚòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÖòubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M_ hjyñubhÎ)�”}”(hŒWThe maximum pixel throughput per slice supported by the DSC sink device in kPixels/sec.”h]”hŒWThe maximum pixel throughput per slice supported by the DSC sink device in kPixels/sec.”…”�”}”(hjîòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M` hjyñubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ5drm_dp_dsc_branch_max_overall_throughput (C function)”Œ*c.drm_dp_dsc_branch_max_overall_throughput”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒsint drm_dp_dsc_branch_max_overall_throughput (const u8 dsc_branch_dpcd[DP_DSC_BRANCH_CAP_SIZE], bool is_rgb_yuv444)”h]”j¤ )�”}”(hŒrint drm_dp_dsc_branch_max_overall_throughput(const u8 dsc_branch_dpcd[DP_DSC_BRANCH_CAP_SIZE], bool is_rgb_yuv444)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjóh²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.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Œ(drm_dp_dsc_branch_max_overall_throughput”h]”jÓ )�”}”(hŒ(drm_dp_dsc_branch_max_overall_throughput”h]”hŒ(drm_dp_dsc_branch_max_overall_throughput”…”�”}”(hj>óh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj:óubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjóh²hh³j+óh´M’ ubjÞ)�”}”(hŒF(const u8 dsc_branch_dpcd[DP_DSC_BRANCH_CAP_SIZE], bool is_rgb_yuv444)”h]”(jä)�”}”(hŒ0const u8 dsc_branch_dpcd[DP_DSC_BRANCH_CAP_SIZE]”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hjZóh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjVóubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjgóh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjVóubh)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(hjxóh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjuóubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jzóŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj@ósbŒ*c.drm_dp_dsc_branch_max_overall_throughput”†”asbuh1hhjVóubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜óh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjVóubjÓ )�”}”(hŒdsc_branch_dpcd”h]”hŒdsc_branch_dpcd”…”�”}”(hj¦óh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjVóubj9)�”}”(hjMh]”hŒ[”…”�”}”(hj´óh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjVóubh)�”}”(hhh]”jÓ )�”}”(hŒDP_DSC_BRANCH_CAP_SIZE”h]”hŒDP_DSC_BRANCH_CAP_SIZE”…”�”}”(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.drm_dp_dsc_branch_max_overall_throughput”†”asbuh1hhjVóubj9)�”}”(hj=Mh]”hŒ]”…”�”}”(hjâóh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjVóubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjRóubjä)�”}”(hŒbool is_rgb_yuv444”h]”(j¦)�”}”(hj£Ih]”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Œ is_rgb_yuv444”h]”hŒ is_rgb_yuv444”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjöóubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjRóubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjóh²hh³j+óh´M’ ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ0Branch device's max overall DSC pixel throughput”h]”hŒ2Branch device’s max overall DSC pixel throughput”…”�”}”(hj?ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.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# jWôj$ jWôj% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hXõ**Parameters** ``const u8 dsc_branch_dpcd[DP_DSC_BRANCH_CAP_SIZE]`` DSC branch capabilities from DPCD ``bool is_rgb_yuv444`` The mode is either RGB or YUV444 **Description** Return the branch device's maximum overall DSC pixel throughput, based on the device's DPCD DSC branch capabilities, and whether the output format **is_rgb_yuv444** or yuv422/yuv420. **Return** - 0: The maximum overall throughput capability is not indicated by the device separately and it must be determined from the per-slice max throughput (see **drm_dp_dsc_branch_slice_max_throughput\(\)**) and the maximum slice count supported by the device. - > 0: The maximum overall DSC pixel throughput supported by the branch device in kPixels/sec.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjaôh]”hŒ Parameters”…”�”}”(hjcôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj_ôubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M– hj[ôubjw )�”}”(hhh]”(j| )�”}”(hŒW``const u8 dsc_branch_dpcd[DP_DSC_BRANCH_CAP_SIZE]`` DSC branch capabilities from DPCD ”h]”(j‚ )�”}”(hŒ4``const u8 dsc_branch_dpcd[DP_DSC_BRANCH_CAP_SIZE]``”h]”jˆ )�”}”(hj€ôh]”hŒ0const u8 dsc_branch_dpcd[DP_DSC_BRANCH_CAP_SIZE]”…”�”}”(hj‚ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj~ôubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M“ hjzôubjž )�”}”(hhh]”hÎ)�”}”(hŒ!DSC branch capabilities from DPCD”h]”hŒ!DSC branch capabilities from DPCD”…”�”}”(hj™ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j•ôh´M“ hj–ôubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjzôubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j•ôh´M“ hjwôubj| )�”}”(hŒ8``bool is_rgb_yuv444`` The mode is either RGB or YUV444 ”h]”(j‚ )�”}”(hŒ``bool is_rgb_yuv444``”h]”jˆ )�”}”(hj¹ôh]”hŒbool is_rgb_yuv444”…”�”}”(hj»ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj·ôubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M” hj³ôubjž )�”}”(hhh]”hÎ)�”}”(hŒ The mode is either RGB or YUV444”h]”hŒ The mode is either RGB or YUV444”…”�”}”(hjÒôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÎôh´M” hjÏôubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj³ôubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÎôh´M” hjwôubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj[ôubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjôôh]”hŒ Description”…”�”}”(hjöôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjòôubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M– hj[ôubhÎ)�”}”(hŒ¶Return the branch device's maximum overall DSC pixel throughput, based on the device's DPCD DSC branch capabilities, and whether the output format **is_rgb_yuv444** or yuv422/yuv420.”h]”(hŒ—Return the branch device’s maximum overall DSC pixel throughput, based on the device’s DPCD DSC branch capabilities, and whether the output format ”…”�”}”(hj õh²hh³Nh´Nubj3 )�”}”(hŒ**is_rgb_yuv444**”h]”hŒ is_rgb_yuv444”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj õubhŒ or yuv422/yuv420.”…”�”}”(hj õh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M• hj[ôubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj-õh]”hŒReturn”…”�”}”(hj/õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj+õubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M™ hj[ôubhú)�”}”(hhh]”(hÿ)�”}”(hX 0: The maximum overall throughput capability is not indicated by the device separately and it must be determined from the per-slice max throughput (see **drm_dp_dsc_branch_slice_max_throughput\(\)**) and the maximum slice count supported by the device.”h]”jw )�”}”(hhh]”j| )�”}”(hŒþ0: The maximum overall throughput capability is not indicated by the device separately and it must be determined from the per-slice max throughput (see **drm_dp_dsc_branch_slice_max_throughput\(\)**) and the maximum slice count supported by the device.”h]”(j‚ )�”}”(hŒB0: The maximum overall throughput capability is not indicated by”h]”hŒB0: The maximum overall throughput capability is not indicated by”…”�”}”(hjQõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mœ hjMõubjž )�”}”(hhh]”hÎ)�”}”(hŒ»the device separately and it must be determined from the per-slice max throughput (see **drm_dp_dsc_branch_slice_max_throughput\(\)**) and the maximum slice count supported by the device.”h]”(hŒWthe device separately and it must be determined from the per-slice max throughput (see ”…”�”}”(hjcõh²hh³Nh´Nubj3 )�”}”(hŒ.**drm_dp_dsc_branch_slice_max_throughput\(\)**”h]”hŒ*drm_dp_dsc_branch_slice_max_throughput()”…”�”}”(hjkõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjcõubhŒ6) and the maximum slice count supported by the device.”…”�”}”(hjcõh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M› hj`õubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjMõubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j_õh´Mœ hjJõubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjFõubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjCõubhÿ)�”}”(hŒa> 0: The maximum overall DSC pixel throughput supported by the branch device in kPixels/sec.”h]”jw )�”}”(hhh]”j| )�”}”(hŒ\> 0: The maximum overall DSC pixel throughput supported by the branch device in kPixels/sec.”h]”(j‚ )�”}”(hŒE> 0: The maximum overall DSC pixel throughput supported by the branch”h]”hŒE> 0: The maximum overall DSC pixel throughput supported by the branch”…”�”}”(hj§õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mž hj£õubjž )�”}”(hhh]”hÎ)�”}”(hŒdevice in kPixels/sec.”h]”hŒdevice in kPixels/sec.”…”�”}”(hj¹õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MŸ hj¶õubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj£õubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jµõh´Mž hj õubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjœõubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjCõubeh}”(h]”h ]”h"]”h$]”h&]”jNjÅ<uh1hùh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mš hj[ôubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ-drm_dp_dsc_branch_max_line_width (C function)”Œ"c.drm_dp_dsc_branch_max_line_width”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒWint drm_dp_dsc_branch_max_line_width (const u8 dsc_branch_dpcd[DP_DSC_BRANCH_CAP_SIZE])”h]”j¤ )�”}”(hŒVint drm_dp_dsc_branch_max_line_width(const u8 dsc_branch_dpcd[DP_DSC_BRANCH_CAP_SIZE])”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjöh²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.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Œ drm_dp_dsc_branch_max_line_width”h]”jÓ )�”}”(hŒ drm_dp_dsc_branch_max_line_width”h]”hŒ drm_dp_dsc_branch_max_line_width”…”�”}”(hj(öh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj$öubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjöh²hh³jöh´Mº ubjÞ)�”}”(hŒ2(const u8 dsc_branch_dpcd[DP_DSC_BRANCH_CAP_SIZE])”h]”jä)�”}”(hŒ0const u8 dsc_branch_dpcd[DP_DSC_BRANCH_CAP_SIZE]”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hjDöh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj@öubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQöh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj@öubh)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(hjböh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj_öubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jdöŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj*ösbŒ"c.drm_dp_dsc_branch_max_line_width”†”asbuh1hhj@öubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚öh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj@öubjÓ )�”}”(hŒdsc_branch_dpcd”h]”hŒdsc_branch_dpcd”…”�”}”(hj�öh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj@öubj9)�”}”(hjMh]”hŒ[”…”�”}”(hjžöh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj@öubh)�”}”(hhh]”jÓ )�”}”(hŒDP_DSC_BRANCH_CAP_SIZE”h]”hŒDP_DSC_BRANCH_CAP_SIZE”…”�”}”(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.drm_dp_dsc_branch_max_line_width”†”asbuh1hhj@öubj9)�”}”(hj=Mh]”hŒ]”…”�”}”(hjÌöh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj@öubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj<öubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjöh²hh³jöh´Mº ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ"Branch device's max DSC line width”h]”hŒ$Branch device’s max DSC line width”…”�”}”(hjõöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.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²hhjÎ9h³Nh´Nubj) )�”}”(hXL**Parameters** ``const u8 dsc_branch_dpcd[DP_DSC_BRANCH_CAP_SIZE]`` DSC branch capabilities from DPCD **Description** Return the branch device's maximum overall DSC line width, based on the device's **dsc_branch_dpcd** capabilities. **Return** - 0: The maximum line width is not indicated by the device separately and it must be determined from the maximum slice count and slice-width supported by the device. - ``-EINVAL``: The device indicates an invalid maximum line width (< 5120 pixels). - >= 5120: The maximum line width in pixels.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj÷h]”hŒ Parameters”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M¾ hj÷ubjw )�”}”(hhh]”j| )�”}”(hŒW``const u8 dsc_branch_dpcd[DP_DSC_BRANCH_CAP_SIZE]`` DSC branch capabilities from DPCD ”h]”(j‚ )�”}”(hŒ4``const u8 dsc_branch_dpcd[DP_DSC_BRANCH_CAP_SIZE]``”h]”jˆ )�”}”(hj6÷h]”hŒ0const u8 dsc_branch_dpcd[DP_DSC_BRANCH_CAP_SIZE]”…”�”}”(hj8÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj4÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M» hj0÷ubjž )�”}”(hhh]”hÎ)�”}”(hŒ!DSC branch capabilities from DPCD”h]”hŒ!DSC branch capabilities from DPCD”…”�”}”(hjO÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jK÷h´M» hjL÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj0÷ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jK÷h´M» hj-÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj÷ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjq÷h]”hŒ Description”…”�”}”(hjs÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjo÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M½ hj÷ubhÎ)�”}”(hŒrReturn the branch device's maximum overall DSC line width, based on the device's **dsc_branch_dpcd** capabilities.”h]”(hŒUReturn the branch device’s maximum overall DSC line width, based on the device’s ”…”�”}”(hj‡÷h²hh³Nh´Nubj3 )�”}”(hŒ**dsc_branch_dpcd**”h]”hŒdsc_branch_dpcd”…”�”}”(hj�÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj‡÷ubhŒ capabilities.”…”�”}”(hj‡÷h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M¼ hj÷ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjª÷h]”hŒReturn”…”�”}”(hj¬÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¨÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M¿ hj÷ubhú)�”}”(hhh]”(hÿ)�”}”(hŒ¾0: The maximum line width is not indicated by the device separately and it must be determined from the maximum slice count and slice-width supported by the device.”h]”jw )�”}”(hhh]”j| )�”}”(hŒª0: The maximum line width is not indicated by the device separately and it must be determined from the maximum slice count and slice-width supported by the device.”h]”(j‚ )�”}”(hŒ?0: The maximum line width is not indicated by the device”h]”hŒ?0: The maximum line width is not indicated by the device”…”�”}”(hjÎ÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MÁ hjÊ÷ubjž )�”}”(hhh]”hÎ)�”}”(hŒjseparately and it must be determined from the maximum slice count and slice-width supported by the device.”h]”hŒjseparately and it must be determined from the maximum slice count and slice-width supported by the device.”…”�”}”(hjà÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÜ÷h´MÁ hjÝ÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÊ÷ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÜ÷h´MÁ hjÇ÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÃ÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjÀ÷ubhÿ)�”}”(hŒZ``-EINVAL``: The device indicates an invalid maximum line width (< 5120 pixels).”h]”jw )�”}”(hhh]”j| )�”}”(hŒP``-EINVAL``: The device indicates an invalid maximum line width (< 5120 pixels).”h]”(j‚ )�”}”(hŒ?``-EINVAL``: The device indicates an invalid maximum line width”h]”(jˆ )�”}”(hŒ ``-EINVAL``”h]”hŒ-EINVAL”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjøubhŒ4: The device indicates an invalid maximum line width”…”�”}”(hjøh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mà hj øubjž )�”}”(hhh]”hÎ)�”}”(hŒ(< 5120 pixels).”h]”hŒ(< 5120 pixels).”…”�”}”(hj1øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MÄ hj.øubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj øubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j-øh´Mà hj øubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjøubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjÀ÷ubhÿ)�”}”(hŒ+>= 5120: The maximum line width in pixels.”h]”hÎ)�”}”(hjZøh]”hŒ+>= 5120: The maximum line width in pixels.”…”�”}”(hj\øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MÅ hjXøubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjÀ÷ubeh}”(h]”h ]”h"]”h$]”h&]”jNjÅ<uh1hùh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MÀ hj÷ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ*drm_dp_read_lttpr_common_caps (C function)”Œc.drm_dp_read_lttpr_common_caps”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ‚int drm_dp_read_lttpr_common_caps (struct drm_dp_aux *aux, const u8 dpcd[DP_RECEIVER_CAP_SIZE], u8 caps[DP_LTTPR_COMMON_CAP_SIZE])”h]”j¤ )�”}”(hŒ�int drm_dp_read_lttpr_common_caps(struct drm_dp_aux *aux, const u8 dpcd[DP_RECEIVER_CAP_SIZE], u8 caps[DP_LTTPR_COMMON_CAP_SIZE])”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj—øh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj“øh²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.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Œdrm_dp_read_lttpr_common_caps”h]”jÓ )�”}”(hŒdrm_dp_read_lttpr_common_caps”h]”hŒdrm_dp_read_lttpr_common_caps”…”�”}”(hj¸øh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj´øubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj“øh²hh³j¥øh´Mð ubjÞ)�”}”(hŒ`(struct drm_dp_aux *aux, const u8 dpcd[DP_RECEIVER_CAP_SIZE], u8 caps[DP_LTTPR_COMMON_CAP_SIZE])”h]”(jä)�”}”(hŒstruct drm_dp_aux *aux”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Œ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(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%)�”}”jjºøsbŒc.drm_dp_read_lttpr_common_caps”†”asbuh1hhjÐøubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÐøubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj ùh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÐøubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hj-ùh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÐøubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÌøubjä)�”}”(hŒ#const u8 dpcd[DP_RECEIVER_CAP_SIZE]”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hjFùh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjBùubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSùh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjBùubh)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(hjdùh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjaùubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jfùŒmodname”NŒ classname”Njé jì )�”}”jï ]”jùŒc.drm_dp_read_lttpr_common_caps”†”asbuh1hhjBùubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚ùh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjBùubjÓ )�”}”(hŒdpcd”h]”hŒdpcd”…”�”}”(hj�ùh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjBùubj9)�”}”(hjMh]”hŒ[”…”�”}”(hjžùh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjBùubh)�”}”(hhh]”jÓ )�”}”(hŒDP_RECEIVER_CAP_SIZE”h]”hŒDP_RECEIVER_CAP_SIZE”…”�”}”(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.drm_dp_read_lttpr_common_caps”†”asbuh1hhjBùubj9)�”}”(hj=Mh]”hŒ]”…”�”}”(hjÌùh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjBùubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÌøubjä)�”}”(hŒ!u8 caps[DP_LTTPR_COMMON_CAP_SIZE]”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(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.drm_dp_read_lttpr_common_caps”†”asbuh1hhjàùubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjàùubjÓ )�”}”(hŒcaps”h]”hŒcaps”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjàùubj9)�”}”(hjMh]”hŒ[”…”�”}”(hj!úh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjàùubh)�”}”(hhh]”jÓ )�”}”(hŒDP_LTTPR_COMMON_CAP_SIZE”h]”hŒDP_LTTPR_COMMON_CAP_SIZE”…”�”}”(hj1úh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj.úubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j3úŒmodname”NŒ classname”Njé jì )�”}”jï ]”jùŒc.drm_dp_read_lttpr_common_caps”†”asbuh1hhjàùubj9)�”}”(hj=Mh]”hŒ]”…”�”}”(hjOúh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjàùubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÌøubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj“øh²hh³j¥øh´Mð ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1•j£ 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Œ"read the LTTPR common capabilities”h]”hŒ"read the LTTPR common capabilities”…”�”}”(hjxúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mð hjuú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²hhjÎ9h³Nh´Nubj) )�”}”(hXT**Parameters** ``struct drm_dp_aux *aux`` DisplayPort AUX channel ``const u8 dpcd[DP_RECEIVER_CAP_SIZE]`` DisplayPort configuration data ``u8 caps[DP_LTTPR_COMMON_CAP_SIZE]`` buffer to return the capability info in **Description** Read capabilities common to all LTTPRs. Returns 0 on success or a negative error code on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjšúh]”hŒ Parameters”…”�”}”(hjœúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj˜úubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mô hj”úubjw )�”}”(hhh]”(j| )�”}”(hŒ3``struct drm_dp_aux *aux`` DisplayPort AUX channel ”h]”(j‚ )�”}”(hŒ``struct drm_dp_aux *aux``”h]”jˆ )�”}”(hj¹úh]”hŒstruct drm_dp_aux *aux”…”�”}”(hj»úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj·úubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mñ hj³úubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort AUX channel”h]”hŒDisplayPort AUX channel”…”�”}”(hjÒúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÎúh´Mñ hjÏúubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj³úubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÎúh´Mñ hj°úubj| )�”}”(hŒG``const u8 dpcd[DP_RECEIVER_CAP_SIZE]`` DisplayPort configuration data ”h]”(j‚ )�”}”(hŒ'``const u8 dpcd[DP_RECEIVER_CAP_SIZE]``”h]”jˆ )�”}”(hjòúh]”hŒ#const u8 dpcd[DP_RECEIVER_CAP_SIZE]”…”�”}”(hjôúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjðúubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mò hjìúubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort configuration data”h]”hŒDisplayPort configuration data”…”�”}”(hj ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jûh´Mò hjûubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjìúubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jûh´Mò hj°úubj| )�”}”(hŒN``u8 caps[DP_LTTPR_COMMON_CAP_SIZE]`` buffer to return the capability info in ”h]”(j‚ )�”}”(hŒ%``u8 caps[DP_LTTPR_COMMON_CAP_SIZE]``”h]”jˆ )�”}”(hj+ûh]”hŒ!u8 caps[DP_LTTPR_COMMON_CAP_SIZE]”…”�”}”(hj-ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj)ûubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mó hj%ûubjž )�”}”(hhh]”hÎ)�”}”(hŒ'buffer to return the capability info in”h]”hŒ'buffer to return the capability info in”…”�”}”(hjDûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j@ûh´Mó hjAûubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj%ûubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j@ûh´Mó hj°úubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj”úubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjfûh]”hŒ Description”…”�”}”(hjhûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjdûubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mõ hj”úubhÎ)�”}”(hŒ'Read capabilities common to all LTTPRs.”h]”hŒ'Read capabilities common to all LTTPRs.”…”�”}”(hj|ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mô hj”úubhÎ)�”}”(hŒ9Returns 0 on success or a negative error code on failure.”h]”hŒ9Returns 0 on success or a negative error code on failure.”…”�”}”(hj‹ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mö hj”úubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ'drm_dp_read_lttpr_phy_caps (C function)”Œc.drm_dp_read_lttpr_phy_caps”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ”int drm_dp_read_lttpr_phy_caps (struct drm_dp_aux *aux, const u8 dpcd[DP_RECEIVER_CAP_SIZE], enum drm_dp_phy dp_phy, u8 caps[DP_LTTPR_PHY_CAP_SIZE])”h]”j¤ )�”}”(hŒ“int drm_dp_read_lttpr_phy_caps(struct drm_dp_aux *aux, const u8 dpcd[DP_RECEIVER_CAP_SIZE], enum drm_dp_phy dp_phy, u8 caps[DP_LTTPR_PHY_CAP_SIZE])”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjºûh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj¶ûh²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.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Œdrm_dp_read_lttpr_phy_caps”h]”jÓ )�”}”(hŒdrm_dp_read_lttpr_phy_caps”h]”hŒdrm_dp_read_lttpr_phy_caps”…”�”}”(hjÛûh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj×ûubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj¶ûh²hh³jÈûh´M ubjÞ)�”}”(hŒu(struct drm_dp_aux *aux, const u8 dpcd[DP_RECEIVER_CAP_SIZE], enum drm_dp_phy dp_phy, u8 caps[DP_LTTPR_PHY_CAP_SIZE])”h]”(jä)�”}”(hŒstruct drm_dp_aux *aux”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Œ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(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%)�”}”jjÝûsbŒc.drm_dp_read_lttpr_phy_caps”†”asbuh1hhjóûubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5üh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjóûubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjCüh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjóûubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hjPüh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjóûubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjïûubjä)�”}”(hŒ#const u8 dpcd[DP_RECEIVER_CAP_SIZE]”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hjiüh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjeüubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvüh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjeüubh)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(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ï ]”j1üŒc.drm_dp_read_lttpr_phy_caps”†”asbuh1hhjeüubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥üh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjeüubjÓ )�”}”(hŒdpcd”h]”hŒdpcd”…”�”}”(hj³üh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjeüubj9)�”}”(hjMh]”hŒ[”…”�”}”(hjÁüh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjeüubh)�”}”(hhh]”jÓ )�”}”(hŒDP_RECEIVER_CAP_SIZE”h]”hŒDP_RECEIVER_CAP_SIZE”…”�”}”(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ï ]”j1üŒc.drm_dp_read_lttpr_phy_caps”†”asbuh1hhjeüubj9)�”}”(hj=Mh]”hŒ]”…”�”}”(hjïüh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjeüubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjïûubjä)�”}”(hŒenum drm_dp_phy dp_phy”h]”(jª )�”}”(hjÂ7h]”hŒenum”…”�”}”(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Œ drm_dp_phy”h]”hŒ drm_dp_phy”…”�”}”(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ï ]”j1üŒc.drm_dp_read_lttpr_phy_caps”†”asbuh1hhjýubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCýh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjýubjÓ )�”}”(hŒdp_phy”h]”hŒdp_phy”…”�”}”(hjQýh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjýubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjïûubjä)�”}”(hŒu8 caps[DP_LTTPR_PHY_CAP_SIZE]”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(hjmýh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjjýubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”joýŒmodname”NŒ classname”Njé jì )�”}”jï ]”j1üŒc.drm_dp_read_lttpr_phy_caps”†”asbuh1hhjfýubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹ýh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjfýubjÓ )�”}”(hŒcaps”h]”hŒcaps”…”�”}”(hj™ýh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjfýubj9)�”}”(hjMh]”hŒ[”…”�”}”(hj§ýh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjfýubh)�”}”(hhh]”jÓ )�”}”(hŒDP_LTTPR_PHY_CAP_SIZE”h]”hŒDP_LTTPR_PHY_CAP_SIZE”…”�”}”(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ï ]”j1üŒc.drm_dp_read_lttpr_phy_caps”†”asbuh1hhjfýubj9)�”}”(hj=Mh]”hŒ]”…”�”}”(hjÕýh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjfýubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjïûubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj¶ûh²hh³jÈûh´M ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ+read the capabilities for a given LTTPR PHY”h]”hŒ+read the capabilities for a given LTTPR PHY”…”�”}”(hjþýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.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²hhjÎ9h³Nh´Nubj) )�”}”(hX�**Parameters** ``struct drm_dp_aux *aux`` DisplayPort AUX channel ``const u8 dpcd[DP_RECEIVER_CAP_SIZE]`` DisplayPort configuration data ``enum drm_dp_phy dp_phy`` LTTPR PHY to read the capabilities for ``u8 caps[DP_LTTPR_PHY_CAP_SIZE]`` buffer to return the capability info in **Description** Read the capabilities for the given LTTPR PHY. Returns 0 on success or a negative error code on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj þh]”hŒ Parameters”…”�”}”(hj"þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjþubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M hjþubjw )�”}”(hhh]”(j| )�”}”(hŒ3``struct drm_dp_aux *aux`` DisplayPort AUX channel ”h]”(j‚ )�”}”(hŒ``struct drm_dp_aux *aux``”h]”jˆ )�”}”(hj?þh]”hŒstruct drm_dp_aux *aux”…”�”}”(hjAþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj=þubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M hj9þubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort AUX channel”h]”hŒDisplayPort AUX channel”…”�”}”(hjXþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jTþh´M hjUþubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj9þubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jTþh´M hj6þubj| )�”}”(hŒG``const u8 dpcd[DP_RECEIVER_CAP_SIZE]`` DisplayPort configuration data ”h]”(j‚ )�”}”(hŒ'``const u8 dpcd[DP_RECEIVER_CAP_SIZE]``”h]”jˆ )�”}”(hjxþh]”hŒ#const u8 dpcd[DP_RECEIVER_CAP_SIZE]”…”�”}”(hjzþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjvþubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M hjrþubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort configuration data”h]”hŒDisplayPort configuration data”…”�”}”(hj‘þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j�þh´M hjŽþubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjrþubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j�þh´M hj6þubj| )�”}”(hŒB``enum drm_dp_phy dp_phy`` LTTPR PHY to read the capabilities for ”h]”(j‚ )�”}”(hŒ``enum drm_dp_phy dp_phy``”h]”jˆ )�”}”(hj±þh]”hŒenum drm_dp_phy dp_phy”…”�”}”(hj³þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¯þubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M hj«þubjž )�”}”(hhh]”hÎ)�”}”(hŒ<TPR PHY to read the capabilities for”h]”hŒ<TPR PHY to read the capabilities for”…”�”}”(hjÊþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÆþh´M hjÇþubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj«þubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÆþh´M hj6þubj| )�”}”(hŒK``u8 caps[DP_LTTPR_PHY_CAP_SIZE]`` buffer to return the capability info in ”h]”(j‚ )�”}”(hŒ"``u8 caps[DP_LTTPR_PHY_CAP_SIZE]``”h]”jˆ )�”}”(hjêþh]”hŒu8 caps[DP_LTTPR_PHY_CAP_SIZE]”…”�”}”(hjìþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjèþubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M hjäþubjž )�”}”(hhh]”hÎ)�”}”(hŒ'buffer to return the capability info in”h]”hŒ'buffer to return the capability info in”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÿþh´M hjÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjäþubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÿþh´M hj6þubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjþubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj%ÿh]”hŒ Description”…”�”}”(hj'ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj#ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M hjþubhÎ)�”}”(hŒ.Read the capabilities for the given LTTPR PHY.”h]”hŒ.Read the capabilities for the given LTTPR PHY.”…”�”}”(hj;ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M hjþubhÎ)�”}”(hŒ9Returns 0 on success or a negative error code on failure.”h]”hŒ9Returns 0 on success or a negative error code on failure.”…”�”}”(hjJÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M hjþubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_dp_lttpr_count (C function)”Œc.drm_dp_lttpr_count”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ@int drm_dp_lttpr_count (const u8 caps[DP_LTTPR_COMMON_CAP_SIZE])”h]”j¤ )�”}”(hŒ?int drm_dp_lttpr_count(const u8 caps[DP_LTTPR_COMMON_CAP_SIZE])”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjyÿh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjuÿh²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆÿh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjuÿh²hh³j‡ÿh´M ubjÍ )�”}”(hŒdrm_dp_lttpr_count”h]”jÓ )�”}”(hŒdrm_dp_lttpr_count”h]”hŒdrm_dp_lttpr_count”…”�”}”(hjšÿh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj–ÿubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjuÿh²hh³j‡ÿh´M ubjÞ)�”}”(hŒ)(const u8 caps[DP_LTTPR_COMMON_CAP_SIZE])”h]”jä)�”}”(hŒ'const u8 caps[DP_LTTPR_COMMON_CAP_SIZE]”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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Œu8”h]”hŒu8”…”�”}”(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%)�”}”jjœÿsbŒc.drm_dp_lttpr_count”†”asbuh1hhj²ÿubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjôÿh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj²ÿubjÓ )�”}”(hŒcaps”h]”hŒcaps”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj²ÿubj9)�”}”(hjMh]”hŒ[”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj²ÿubh)�”}”(hhh]”jÓ )�”}”(hŒDP_LTTPR_COMMON_CAP_SIZE”h]”hŒDP_LTTPR_COMMON_CAP_SIZE”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j"Œmodname”NŒ classname”Njé jì )�”}”jï ]”jðÿŒc.drm_dp_lttpr_count”†”asbuh1hhj²ÿubj9)�”}”(hj=Mh]”hŒ]”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj²ÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj®ÿubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjuÿh²hh³j‡ÿh´M ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjqÿh²hh³j‡ÿh´M ubah}”(h]”jlÿah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j‡ÿh´M hjnÿh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ!get the number of detected LTTPRs”h]”hŒ!get the number of detected LTTPRs”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M hjdh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjnÿh²hh³j‡ÿh´M ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jj$ jj% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hXp**Parameters** ``const u8 caps[DP_LTTPR_COMMON_CAP_SIZE]`` LTTPR common capabilities **Description** Get the number of detected LTTPRs from the LTTPR common capabilities info. **Return** -ERANGE if more than supported number (8) of LTTPRs are detected -EINVAL if the DP_PHY_REPEATER_CNT register contains an invalid value otherwise the number of detected LTTPRs”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj‰h]”hŒ Parameters”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M# hjƒubjw )�”}”(hhh]”j| )�”}”(hŒF``const u8 caps[DP_LTTPR_COMMON_CAP_SIZE]`` LTTPR common capabilities ”h]”(j‚ )�”}”(hŒ+``const u8 caps[DP_LTTPR_COMMON_CAP_SIZE]``”h]”jˆ )�”}”(hj¨h]”hŒ'const u8 caps[DP_LTTPR_COMMON_CAP_SIZE]”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M hj¢ubjž )�”}”(hhh]”hÎ)�”}”(hŒLTTPR common capabilities”h]”hŒLTTPR common capabilities”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j½h´M hj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j½h´M hjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjƒubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjãh]”hŒ Description”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjáubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M" hjƒubhÎ)�”}”(hŒJGet the number of detected LTTPRs from the LTTPR common capabilities info.”h]”hŒJGet the number of detected LTTPRs from the LTTPR common capabilities info.”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M! hjƒubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj h]”hŒReturn”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M# hjƒubhÎ)�”}”(hŒ®-ERANGE if more than supported number (8) of LTTPRs are detected -EINVAL if the DP_PHY_REPEATER_CNT register contains an invalid value otherwise the number of detected LTTPRs”h]”hŒ®-ERANGE if more than supported number (8) of LTTPRs are detected -EINVAL if the DP_PHY_REPEATER_CNT register contains an invalid value otherwise the number of detected LTTPRs”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M$ hjƒubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ'drm_dp_lttpr_max_link_rate (C function)”Œc.drm_dp_lttpr_max_link_rate”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒHint drm_dp_lttpr_max_link_rate (const u8 caps[DP_LTTPR_COMMON_CAP_SIZE])”h]”j¤ )�”}”(hŒGint drm_dp_lttpr_max_link_rate(const u8 caps[DP_LTTPR_COMMON_CAP_SIZE])”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjKh²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M; ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjKh²hh³j]h´M; ubjÍ )�”}”(hŒdrm_dp_lttpr_max_link_rate”h]”jÓ )�”}”(hŒdrm_dp_lttpr_max_link_rate”h]”hŒdrm_dp_lttpr_max_link_rate”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjlubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjKh²hh³j]h´M; ubjÞ)�”}”(hŒ)(const u8 caps[DP_LTTPR_COMMON_CAP_SIZE])”h]”jä)�”}”(hŒ'const u8 caps[DP_LTTPR_COMMON_CAP_SIZE]”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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Œu8”h]”hŒu8”…”�”}”(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%)�”}”jjrsbŒc.drm_dp_lttpr_max_link_rate”†”asbuh1hhjˆubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjˆubjÓ )�”}”(hŒcaps”h]”hŒcaps”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjˆubj9)�”}”(hjMh]”hŒ[”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjˆubh)�”}”(hhh]”jÓ )�”}”(hŒDP_LTTPR_COMMON_CAP_SIZE”h]”hŒDP_LTTPR_COMMON_CAP_SIZE”…”�”}”(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.drm_dp_lttpr_max_link_rate”†”asbuh1hhjˆubj9)�”}”(hj=Mh]”hŒ]”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjˆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj„ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjKh²hh³j]h´M; ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjGh²hh³j]h´M; ubah}”(h]”jBah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j]h´M; hjDh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ1get the maximum link rate supported by all LTTPRs”h]”hŒ1get the maximum link rate supported by all LTTPRs”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M; hj:h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjDh²hh³j]h´M; ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jUj$ jUj% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hŒ©**Parameters** ``const u8 caps[DP_LTTPR_COMMON_CAP_SIZE]`` LTTPR common capabilities **Description** Returns the maximum link rate supported by all detected LTTPRs.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj_h]”hŒ Parameters”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj]ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M? hjYubjw )�”}”(hhh]”j| )�”}”(hŒF``const u8 caps[DP_LTTPR_COMMON_CAP_SIZE]`` LTTPR common capabilities ”h]”(j‚ )�”}”(hŒ+``const u8 caps[DP_LTTPR_COMMON_CAP_SIZE]``”h]”jˆ )�”}”(hj~h]”hŒ'const u8 caps[DP_LTTPR_COMMON_CAP_SIZE]”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M< hjxubjž )�”}”(hhh]”hÎ)�”}”(hŒLTTPR common capabilities”h]”hŒLTTPR common capabilities”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j“h´M< hj”ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjxubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j“h´M< hjuubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjYubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj¹h]”hŒ Description”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj·ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M> hjYubhÎ)�”}”(hŒ?Returns the maximum link rate supported by all detected LTTPRs.”h]”hŒ?Returns the maximum link rate supported by all detected LTTPRs.”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M= hjYubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ.drm_dp_lttpr_set_transparent_mode (C function)”Œ#c.drm_dp_lttpr_set_transparent_mode”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒKint drm_dp_lttpr_set_transparent_mode (struct drm_dp_aux *aux, bool enable)”h]”j¤ )�”}”(hŒJint drm_dp_lttpr_set_transparent_mode(struct drm_dp_aux *aux, bool enable)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjúh²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MI ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjúh²hh³j h´MI ubjÍ )�”}”(hŒ!drm_dp_lttpr_set_transparent_mode”h]”jÓ )�”}”(hŒ!drm_dp_lttpr_set_transparent_mode”h]”hŒ!drm_dp_lttpr_set_transparent_mode”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjúh²hh³j h´MI ubjÞ)�”}”(hŒ%(struct drm_dp_aux *aux, bool enable)”h]”(jä)�”}”(hŒstruct drm_dp_aux *aux”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj7ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj7ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjVubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j[Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj!sbŒ#c.drm_dp_lttpr_set_transparent_mode”†”asbuh1hhj7ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj7ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj7ubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj3ubjä)�”}”(hŒ bool enable”h]”(j¦)�”}”(hj£Ih]”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Œenable”h]”hŒenable”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj©ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj3ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjúh²hh³j h´MI ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjöh²hh³j h´MI ubah}”(h]”jñah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j h´MI hjóh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ!set the LTTPR in transparent mode”h]”hŒ!set the LTTPR in transparent mode”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MI hjïh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjóh²hh³j h´MI ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j j$ j j% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hŒ¹**Parameters** ``struct drm_dp_aux *aux`` DisplayPort AUX channel ``bool enable`` Enable or disable transparent mode **Return** 0 on success or a negative error code on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MM hjubjw )�”}”(hhh]”(j| )�”}”(hŒ3``struct drm_dp_aux *aux`` DisplayPort AUX channel ”h]”(j‚ )�”}”(hŒ``struct drm_dp_aux *aux``”h]”jˆ )�”}”(hj3h]”hŒstruct drm_dp_aux *aux”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MJ hj-ubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort AUX channel”h]”hŒDisplayPort AUX channel”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jHh´MJ hjIubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jHh´MJ hj*ubj| )�”}”(hŒ3``bool enable`` Enable or disable transparent mode ”h]”(j‚ )�”}”(hŒ``bool enable``”h]”jˆ )�”}”(hjlh]”hŒ bool enable”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjjubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MK hjfubjž )�”}”(hhh]”hÎ)�”}”(hŒ"Enable or disable transparent mode”h]”hŒ"Enable or disable transparent mode”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j�h´MK hj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjfubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j�h´MK hj*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj§h]”hŒReturn”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MM hjubhÎ)�”}”(hŒ10 on success or a negative error code on failure.”h]”hŒ10 on success or a negative error code on failure.”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MM hjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_dp_lttpr_init (C function)”Œc.drm_dp_lttpr_init”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ?int drm_dp_lttpr_init (struct drm_dp_aux *aux, int lttpr_count)”h]”j¤ )�”}”(hŒ>int drm_dp_lttpr_init(struct drm_dp_aux *aux, int lttpr_count)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjèh²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.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Œdrm_dp_lttpr_init”h]”jÓ )�”}”(hŒdrm_dp_lttpr_init”h]”hŒdrm_dp_lttpr_init”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjèh²hh³júh´M] ubjÞ)�”}”(hŒ)(struct drm_dp_aux *aux, int lttpr_count)”h]”(jä)�”}”(hŒstruct drm_dp_aux *aux”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj%ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj%ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(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%)�”}”jjsbŒc.drm_dp_lttpr_init”†”asbuh1hhj%ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj%ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj%ubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj%ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj!ubjä)�”}”(hŒint lttpr_count”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(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Œ lttpr_count”h]”hŒ lttpr_count”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj—ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj!ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjèh²hh³júh´M] ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ5init LTTPR transparency mode according to DP standard”h]”hŒ5init LTTPR transparency mode according to DP standard”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.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²hhjÎ9h³Nh´Nubj) )�”}”(hX#**Parameters** ``struct drm_dp_aux *aux`` DisplayPort AUX channel ``int lttpr_count`` Number of LTTPRs. Between 0 and 8, according to DP standard. Negative error code for any non-valid number. See drm_dp_lttpr_count(). **Return** 0 on success or a negative error code on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Ma hjýubjw )�”}”(hhh]”(j| )�”}”(hŒ3``struct drm_dp_aux *aux`` DisplayPort AUX channel ”h]”(j‚ )�”}”(hŒ``struct drm_dp_aux *aux``”h]”jˆ )�”}”(hj"h]”hŒstruct drm_dp_aux *aux”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M^ hjubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort AUX channel”h]”hŒDisplayPort AUX channel”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j7h´M^ hj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j7h´M^ hjubj| )�”}”(hŒ™``int lttpr_count`` Number of LTTPRs. Between 0 and 8, according to DP standard. Negative error code for any non-valid number. See drm_dp_lttpr_count(). ”h]”(j‚ )�”}”(hŒ``int lttpr_count``”h]”jˆ )�”}”(hj[h]”hŒint lttpr_count”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjYubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Ma hjUubjž )�”}”(hhh]”hÎ)�”}”(hŒ„Number of LTTPRs. Between 0 and 8, according to DP standard. Negative error code for any non-valid number. See drm_dp_lttpr_count().”h]”hŒ„Number of LTTPRs. Between 0 and 8, according to DP standard. Negative error code for any non-valid number. See drm_dp_lttpr_count().”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M_ hjqubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjUubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jph´Ma hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjýubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj—h]”hŒReturn”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj•ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mc hjýubhÎ)�”}”(hŒ10 on success or a negative error code on failure.”h]”hŒ10 on success or a negative error code on failure.”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mc hjýubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ(drm_dp_lttpr_max_lane_count (C function)”Œc.drm_dp_lttpr_max_lane_count”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒIint drm_dp_lttpr_max_lane_count (const u8 caps[DP_LTTPR_COMMON_CAP_SIZE])”h]”j¤ )�”}”(hŒHint drm_dp_lttpr_max_lane_count(const u8 caps[DP_LTTPR_COMMON_CAP_SIZE])”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjØh²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.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Œdrm_dp_lttpr_max_lane_count”h]”jÓ )�”}”(hŒdrm_dp_lttpr_max_lane_count”h]”hŒdrm_dp_lttpr_max_lane_count”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjùubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjØh²hh³jêh´M† ubjÞ)�”}”(hŒ)(const u8 caps[DP_LTTPR_COMMON_CAP_SIZE])”h]”jä)�”}”(hŒ'const u8 caps[DP_LTTPR_COMMON_CAP_SIZE]”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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Œu8”h]”hŒu8”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj4ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j9Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjÿsbŒc.drm_dp_lttpr_max_lane_count”†”asbuh1hhjubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjubjÓ )�”}”(hŒcaps”h]”hŒcaps”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjubj9)�”}”(hjMh]”hŒ[”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjubh)�”}”(hhh]”jÓ )�”}”(hŒDP_LTTPR_COMMON_CAP_SIZE”h]”hŒDP_LTTPR_COMMON_CAP_SIZE”…”�”}”(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ï ]”jSŒc.drm_dp_lttpr_max_lane_count”†”asbuh1hhjubj9)�”}”(hj=Mh]”hŒ]”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjØh²hh³jêh´M† ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ2get the maximum lane count supported by all LTTPRs”h]”hŒ2get the maximum lane count supported by all LTTPRs”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.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²hhjÎ9h³Nh´Nubj) )�”}”(hŒª**Parameters** ``const u8 caps[DP_LTTPR_COMMON_CAP_SIZE]`` LTTPR common capabilities **Description** Returns the maximum lane count supported by all detected LTTPRs.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjìh]”hŒ Parameters”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjêubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MŠ hjæubjw )�”}”(hhh]”j| )�”}”(hŒF``const u8 caps[DP_LTTPR_COMMON_CAP_SIZE]`` LTTPR common capabilities ”h]”(j‚ )�”}”(hŒ+``const u8 caps[DP_LTTPR_COMMON_CAP_SIZE]``”h]”jˆ )�”}”(hj h]”hŒ'const u8 caps[DP_LTTPR_COMMON_CAP_SIZE]”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M‡ hjubjž )�”}”(hhh]”hÎ)�”}”(hŒLTTPR common capabilities”h]”hŒLTTPR common capabilities”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j h´M‡ hj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j h´M‡ hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjæubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjFh]”hŒ Description”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjDubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M‰ hjæubhÎ)�”}”(hŒ@Returns the maximum lane count supported by all detected LTTPRs.”h]”hŒ@Returns the maximum lane count supported by all detected LTTPRs.”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mˆ hjæubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ9drm_dp_lttpr_voltage_swing_level_3_supported (C function)”Œ.c.drm_dp_lttpr_voltage_swing_level_3_supported”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒXbool drm_dp_lttpr_voltage_swing_level_3_supported (const u8 caps[DP_LTTPR_PHY_CAP_SIZE])”h]”j¤ )�”}”(hŒWbool drm_dp_lttpr_voltage_swing_level_3_supported(const u8 caps[DP_LTTPR_PHY_CAP_SIZE])”h]”(j¦)�”}”(hj£Ih]”hŒbool”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj‡h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.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Œ,drm_dp_lttpr_voltage_swing_level_3_supported”h]”jÓ )�”}”(hŒ,drm_dp_lttpr_voltage_swing_level_3_supported”h]”hŒ,drm_dp_lttpr_voltage_swing_level_3_supported”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj§ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj‡h²hh³j˜h´M” ubjÞ)�”}”(hŒ&(const u8 caps[DP_LTTPR_PHY_CAP_SIZE])”h]”jä)�”}”(hŒ$const u8 caps[DP_LTTPR_PHY_CAP_SIZE]”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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Œu8”h]”hŒu8”…”�”}”(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%)�”}”jj­sbŒ.c.drm_dp_lttpr_voltage_swing_level_3_supported”†”asbuh1hhjÃubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÃubjÓ )�”}”(hŒcaps”h]”hŒcaps”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÃubj9)�”}”(hjMh]”hŒ[”…”�”}”(hj! h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÃubh)�”}”(hhh]”jÓ )�”}”(hŒDP_LTTPR_PHY_CAP_SIZE”h]”hŒDP_LTTPR_PHY_CAP_SIZE”…”�”}”(hj1 h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj. ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j3 Œmodname”NŒ classname”Njé jì )�”}”jï ]”j Œ.c.drm_dp_lttpr_voltage_swing_level_3_supported”†”asbuh1hhjÃubj9)�”}”(hj=Mh]”hŒ]”…”�”}”(hjO h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÃubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¿ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj‡h²hh³j˜h´M” ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œcheck for LTTPR vswing3 support”h]”hŒcheck for LTTPR vswing3 support”…”�”}”(hjx h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M” hju 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²hhjÎ9h³Nh´Nubj) )�”}”(hŒÀ**Parameters** ``const u8 caps[DP_LTTPR_PHY_CAP_SIZE]`` LTTPR PHY capabilities **Description** Returns true if the **caps** for an LTTPR TX PHY indicate support for voltage swing level 3.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjš h]”hŒ Parameters”…”�”}”(hjœ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj˜ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M˜ hj” ubjw )�”}”(hhh]”j| )�”}”(hŒ@``const u8 caps[DP_LTTPR_PHY_CAP_SIZE]`` LTTPR PHY capabilities ”h]”(j‚ )�”}”(hŒ(``const u8 caps[DP_LTTPR_PHY_CAP_SIZE]``”h]”jˆ )�”}”(hj¹ h]”hŒ$const u8 caps[DP_LTTPR_PHY_CAP_SIZE]”…”�”}”(hj» h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj· ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M• hj³ ubjž )�”}”(hhh]”hÎ)�”}”(hŒLTTPR PHY capabilities”h]”hŒLTTPR PHY capabilities”…”�”}”(hjÒ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÎ h´M• hjÏ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj³ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÎ h´M• hj° ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj” ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjô h]”hŒ Description”…”�”}”(hjö h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjò ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M— hj” ubhÎ)�”}”(hŒ\Returns true if the **caps** for an LTTPR TX PHY indicate support for voltage swing level 3.”h]”(hŒReturns true if the ”…”�”}”(hj h²hh³Nh´Nubj3 )�”}”(hŒ**caps**”h]”hŒcaps”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj ubhŒ@ for an LTTPR TX PHY indicate support for voltage swing level 3.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M– hj” ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ8drm_dp_lttpr_pre_emphasis_level_3_supported (C function)”Œ-c.drm_dp_lttpr_pre_emphasis_level_3_supported”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒWbool drm_dp_lttpr_pre_emphasis_level_3_supported (const u8 caps[DP_LTTPR_PHY_CAP_SIZE])”h]”j¤ )�”}”(hŒVbool drm_dp_lttpr_pre_emphasis_level_3_supported(const u8 caps[DP_LTTPR_PHY_CAP_SIZE])”h]”(j¦)�”}”(hj£Ih]”hŒbool”…”�”}”(hjK h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjG h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M¤ ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjY h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjG h²hh³jX h´M¤ ubjÍ )�”}”(hŒ+drm_dp_lttpr_pre_emphasis_level_3_supported”h]”jÓ )�”}”(hŒ+drm_dp_lttpr_pre_emphasis_level_3_supported”h]”hŒ+drm_dp_lttpr_pre_emphasis_level_3_supported”…”�”}”(hjk h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjg ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjG h²hh³jX h´M¤ ubjÞ)�”}”(hŒ&(const u8 caps[DP_LTTPR_PHY_CAP_SIZE])”h]”jä)�”}”(hŒ$const u8 caps[DP_LTTPR_PHY_CAP_SIZE]”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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Œu8”h]”hŒu8”…”�”}”(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%)�”}”jjm sbŒ-c.drm_dp_lttpr_pre_emphasis_level_3_supported”†”asbuh1hhjƒ ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅ h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjƒ ubjÓ )�”}”(hŒcaps”h]”hŒcaps”…”�”}”(hjÓ h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjƒ ubj9)�”}”(hjMh]”hŒ[”…”�”}”(hjá h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjƒ ubh)�”}”(hhh]”jÓ )�”}”(hŒDP_LTTPR_PHY_CAP_SIZE”h]”hŒDP_LTTPR_PHY_CAP_SIZE”…”�”}”(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.drm_dp_lttpr_pre_emphasis_level_3_supported”†”asbuh1hhjƒ ubj9)�”}”(hj=Mh]”hŒ]”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjƒ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjG h²hh³jX h´M¤ ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjC h²hh³jX h´M¤ ubah}”(h]”j> ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jX h´M¤ hj@ h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ check for LTTPR preemph3 support”h]”hŒ check for LTTPR preemph3 support”…”�”}”(hj8 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M¤ hj5 h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj@ h²hh³jX h´M¤ ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jP j$ jP j% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hŒ¿**Parameters** ``const u8 caps[DP_LTTPR_PHY_CAP_SIZE]`` LTTPR PHY capabilities **Description** Returns true if the **caps** for an LTTPR TX PHY indicate support for pre-emphasis level 3.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjZ h]”hŒ Parameters”…”�”}”(hj\ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjX ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M¨ hjT ubjw )�”}”(hhh]”j| )�”}”(hŒ@``const u8 caps[DP_LTTPR_PHY_CAP_SIZE]`` LTTPR PHY capabilities ”h]”(j‚ )�”}”(hŒ(``const u8 caps[DP_LTTPR_PHY_CAP_SIZE]``”h]”jˆ )�”}”(hjy h]”hŒ$const u8 caps[DP_LTTPR_PHY_CAP_SIZE]”…”�”}”(hj{ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjw ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M¥ hjs ubjž )�”}”(hhh]”hÎ)�”}”(hŒLTTPR PHY capabilities”h]”hŒLTTPR PHY capabilities”…”�”}”(hj’ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jŽ h´M¥ hj� ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjs ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jŽ h´M¥ hjp ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjT ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj´ h]”hŒ Description”…”�”}”(hj¶ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj² ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M§ hjT ubhÎ)�”}”(hŒ[Returns true if the **caps** for an LTTPR TX PHY indicate support for pre-emphasis level 3.”h]”(hŒReturns true if the ”…”�”}”(hjÊ h²hh³Nh´Nubj3 )�”}”(hŒ**caps**”h]”hŒcaps”…”�”}”(hjÒ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÊ ubhŒ? for an LTTPR TX PHY indicate support for pre-emphasis level 3.”…”�”}”(hjÊ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M¦ hjT ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ(drm_dp_get_phy_test_pattern (C function)”Œc.drm_dp_get_phy_test_pattern”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ]int drm_dp_get_phy_test_pattern (struct drm_dp_aux *aux, struct drm_dp_phy_test_params *data)”h]”j¤ )�”}”(hŒ\int drm_dp_get_phy_test_pattern(struct drm_dp_aux *aux, struct drm_dp_phy_test_params *data)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.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Œdrm_dp_get_phy_test_pattern”h]”jÓ )�”}”(hŒdrm_dp_get_phy_test_pattern”h]”hŒdrm_dp_get_phy_test_pattern”…”�”}”(hj, h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj( ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj h²hh³j h´M´ ubjÞ)�”}”(hŒ=(struct drm_dp_aux *aux, struct drm_dp_phy_test_params *data)”h]”(jä)�”}”(hŒstruct drm_dp_aux *aux”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjH h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjD ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjU h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjD ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(hjf h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjc ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jh Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj. sbŒc.drm_dp_get_phy_test_pattern”†”asbuh1hhjD ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj† h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjD ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj” h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjD ubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hj¡ h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjD ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj@ ubjä)�”}”(hŒ#struct drm_dp_phy_test_params *data”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Œdrm_dp_phy_test_params”h]”hŒdrm_dp_phy_test_params”…”�”}”(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.drm_dp_get_phy_test_pattern”†”asbuh1hhj¶ ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjö h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¶ ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¶ ubjÓ )�”}”(hŒdata”h]”hŒdata”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¶ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj@ ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj h²hh³j h´M´ ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ(get the requested pattern from the sink.”h]”hŒ(get the requested pattern from the sink.”…”�”}”(hj; h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M´ hj8 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# jS j$ jS j% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hŒÞ**Parameters** ``struct drm_dp_aux *aux`` DisplayPort AUX channel ``struct drm_dp_phy_test_params *data`` DP phy compliance test parameters. **Description** Returns 0 on success or a negative error code on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj] h]”hŒ Parameters”…”�”}”(hj_ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj[ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M¸ hjW ubjw )�”}”(hhh]”(j| )�”}”(hŒ3``struct drm_dp_aux *aux`` DisplayPort AUX channel ”h]”(j‚ )�”}”(hŒ``struct drm_dp_aux *aux``”h]”jˆ )�”}”(hj| h]”hŒstruct drm_dp_aux *aux”…”�”}”(hj~ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjz ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mµ hjv ubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort AUX channel”h]”hŒDisplayPort AUX channel”…”�”}”(hj• h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j‘ h´Mµ hj’ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjv ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j‘ h´Mµ hjs ubj| )�”}”(hŒK``struct drm_dp_phy_test_params *data`` DP phy compliance test parameters. ”h]”(j‚ )�”}”(hŒ'``struct drm_dp_phy_test_params *data``”h]”jˆ )�”}”(hjµ h]”hŒ#struct drm_dp_phy_test_params *data”…”�”}”(hj· h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj³ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M¶ hj¯ ubjž )�”}”(hhh]”hÎ)�”}”(hŒ"DP phy compliance test parameters.”h]”hŒ"DP phy compliance test parameters.”…”�”}”(hjÎ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÊ h´M¶ hjË ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¯ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÊ h´M¶ hjs ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjW ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjð h]”hŒ Description”…”�”}”(hjò h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjî ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M¸ hjW ubhÎ)�”}”(hŒ9Returns 0 on success or a negative error code on failure.”h]”hŒ9Returns 0 on success or a negative error code on failure.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M· hjW ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ(drm_dp_set_phy_test_pattern (C function)”Œc.drm_dp_set_phy_test_pattern”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒhint drm_dp_set_phy_test_pattern (struct drm_dp_aux *aux, struct drm_dp_phy_test_params *data, u8 dp_rev)”h]”j¤ )�”}”(hŒgint drm_dp_set_phy_test_pattern(struct drm_dp_aux *aux, struct drm_dp_phy_test_params *data, u8 dp_rev)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj1h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mæ ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj1h²hh³jCh´Mæ ubjÍ )�”}”(hŒdrm_dp_set_phy_test_pattern”h]”jÓ )�”}”(hŒdrm_dp_set_phy_test_pattern”h]”hŒdrm_dp_set_phy_test_pattern”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjRubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj1h²hh³jCh´Mæ ubjÞ)�”}”(hŒH(struct drm_dp_aux *aux, struct drm_dp_phy_test_params *data, u8 dp_rev)”h]”(jä)�”}”(hŒstruct drm_dp_aux *aux”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjnubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjnubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(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%)�”}”jjXsbŒc.drm_dp_set_phy_test_pattern”†”asbuh1hhjnubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjnubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjnubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjnubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjjubjä)�”}”(hŒ#struct drm_dp_phy_test_params *data”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Œdrm_dp_phy_test_params”h]”hŒdrm_dp_phy_test_params”…”�”}”(hjh²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.drm_dp_set_phy_test_pattern”†”asbuh1hhjàubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjàubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjàubjÓ )�”}”(hŒdata”h]”hŒdata”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjàubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjjubjä)�”}”(hŒ u8 dp_rev”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjTubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jYŒmodname”NŒ classname”Njé jì )�”}”jï ]”j¬Œc.drm_dp_set_phy_test_pattern”†”asbuh1hhjPubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjPubjÓ )�”}”(hŒdp_rev”h]”hŒdp_rev”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjPubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjjubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj1h²hh³jCh´Mæ ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj-h²hh³jCh´Mæ ubah}”(h]”j(ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jCh´Mæ hj*h²hubj )�”}”(hhh]”hÎ)�”}”(hŒset the pattern to the sink.”h]”hŒset the pattern to the sink.”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mæ hjªh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj*h²hh³jCh´• Mæ ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jÅj$ jÅj% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hX**Parameters** ``struct drm_dp_aux *aux`` DisplayPort AUX channel ``struct drm_dp_phy_test_params *data`` DP phy compliance test parameters. ``u8 dp_rev`` DP revision to use for compliance testing **Description** Returns 0 on success or a negative error code on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjÏh]”hŒ Parameters”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÍubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mê hjÉubjw )�”}”(hhh]”(j| )�”}”(hŒ3``struct drm_dp_aux *aux`` DisplayPort AUX channel ”h]”(j‚ )�”}”(hŒ``struct drm_dp_aux *aux``”h]”jˆ )�”}”(hjîh]”hŒstruct drm_dp_aux *aux”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjìubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mç hjèubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort AUX channel”h]”hŒDisplayPort AUX channel”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jh´Mç hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjèubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jh´Mç hjåubj| )�”}”(hŒK``struct drm_dp_phy_test_params *data`` DP phy compliance test parameters. ”h]”(j‚ )�”}”(hŒ'``struct drm_dp_phy_test_params *data``”h]”jˆ )�”}”(hj'h]”hŒ#struct drm_dp_phy_test_params *data”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mè hj!ubjž )�”}”(hhh]”hÎ)�”}”(hŒ"DP phy compliance test parameters.”h]”hŒ"DP phy compliance test parameters.”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j<h´Mè hj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j<h´Mè hjåubj| )�”}”(hŒ8``u8 dp_rev`` DP revision to use for compliance testing ”h]”(j‚ )�”}”(hŒ ``u8 dp_rev``”h]”jˆ )�”}”(hj`h]”hŒ u8 dp_rev”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mé hjZubjž )�”}”(hhh]”hÎ)�”}”(hŒ)DP revision to use for compliance testing”h]”hŒ)DP revision to use for compliance testing”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³juh´Mé hjvubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjZubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³juh´Mé hjåubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÉubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj›h]”hŒ Description”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj™ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Më hjÉubhÎ)�”}”(hŒ9Returns 0 on success or a negative error code on failure.”h]”hŒ9Returns 0 on success or a negative error code on failure.”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mê hjÉubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ$drm_dp_as_sdp_supported (C function)”Œc.drm_dp_as_sdp_supported”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒZbool drm_dp_as_sdp_supported (struct drm_dp_aux *aux, const u8 dpcd[DP_RECEIVER_CAP_SIZE])”h]”j¤ )�”}”(hŒYbool drm_dp_as_sdp_supported(struct drm_dp_aux *aux, const u8 dpcd[DP_RECEIVER_CAP_SIZE])”h]”(j¦)�”}”(hj£Ih]”hŒbool”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjÜh²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.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Œdrm_dp_as_sdp_supported”h]”jÓ )�”}”(hŒdrm_dp_as_sdp_supported”h]”hŒdrm_dp_as_sdp_supported”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjüubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÜh²hh³jíh´Mâ ubjÞ)�”}”(hŒ=(struct drm_dp_aux *aux, const u8 dpcd[DP_RECEIVER_CAP_SIZE])”h]”(jä)�”}”(hŒstruct drm_dp_aux *aux”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(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Œ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj7ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j<Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjsbŒc.drm_dp_as_sdp_supported”†”asbuh1hhjubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjubjä)�”}”(hŒ#const u8 dpcd[DP_RECEIVER_CAP_SIZE]”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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Œu8”h]”hŒu8”…”�”}”(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ï ]”jVŒc.drm_dp_as_sdp_supported”†”asbuh1hhjŠubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjŠubjÓ )�”}”(hŒdpcd”h]”hŒdpcd”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjŠubj9)�”}”(hjMh]”hŒ[”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŠubh)�”}”(hhh]”jÓ )�”}”(hŒDP_RECEIVER_CAP_SIZE”h]”hŒDP_RECEIVER_CAP_SIZE”…”�”}”(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ï ]”jVŒc.drm_dp_as_sdp_supported”†”asbuh1hhjŠubj9)�”}”(hj=Mh]”hŒ]”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŠubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjÜh²hh³jíh´Mâ ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ'check if adaptive sync sdp is supported”h]”hŒ'check if adaptive sync sdp is supported”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.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# jUj$ jUj% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hŒã**Parameters** ``struct drm_dp_aux *aux`` DisplayPort AUX channel ``const u8 dpcd[DP_RECEIVER_CAP_SIZE]`` DisplayPort configuration data **Description** Returns true if adaptive sync sdp is supported, else returns false”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj_h]”hŒ Parameters”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj]ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mæ hjYubjw )�”}”(hhh]”(j| )�”}”(hŒ3``struct drm_dp_aux *aux`` DisplayPort AUX channel ”h]”(j‚ )�”}”(hŒ``struct drm_dp_aux *aux``”h]”jˆ )�”}”(hj~h]”hŒstruct drm_dp_aux *aux”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mã hjxubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort AUX channel”h]”hŒDisplayPort AUX channel”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j“h´Mã hj”ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjxubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j“h´Mã hjuubj| )�”}”(hŒG``const u8 dpcd[DP_RECEIVER_CAP_SIZE]`` DisplayPort configuration data ”h]”(j‚ )�”}”(hŒ'``const u8 dpcd[DP_RECEIVER_CAP_SIZE]``”h]”jˆ )�”}”(hj·h]”hŒ#const u8 dpcd[DP_RECEIVER_CAP_SIZE]”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjµubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mä hj±ubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort configuration data”h]”hŒDisplayPort configuration data”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÌh´Mä hjÍubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÌh´Mä hjuubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjYubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjòh]”hŒ Description”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjðubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mæ hjYubhÎ)�”}”(hŒBReturns true if adaptive sync sdp is supported, else returns false”h]”hŒBReturns true if adaptive sync sdp is supported, else returns false”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Må hjYubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ%drm_dp_vsc_sdp_supported (C function)”Œc.drm_dp_vsc_sdp_supported”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ[bool drm_dp_vsc_sdp_supported (struct drm_dp_aux *aux, const u8 dpcd[DP_RECEIVER_CAP_SIZE])”h]”j¤ )�”}”(hŒZbool drm_dp_vsc_sdp_supported(struct drm_dp_aux *aux, const u8 dpcd[DP_RECEIVER_CAP_SIZE])”h]”(j¦)�”}”(hj£Ih]”hŒbool”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj3h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mû ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj3h²hh³jDh´Mû ubjÍ )�”}”(hŒdrm_dp_vsc_sdp_supported”h]”jÓ )�”}”(hŒdrm_dp_vsc_sdp_supported”h]”hŒdrm_dp_vsc_sdp_supported”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjSubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj3h²hh³jDh´Mû ubjÞ)�”}”(hŒ=(struct drm_dp_aux *aux, const u8 dpcd[DP_RECEIVER_CAP_SIZE])”h]”(jä)�”}”(hŒstruct drm_dp_aux *aux”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjoubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjoubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(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%)�”}”jjYsbŒc.drm_dp_vsc_sdp_supported”†”asbuh1hhjoubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjoubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjoubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjoubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjkubjä)�”}”(hŒ#const u8 dpcd[DP_RECEIVER_CAP_SIZE]”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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Œu8”h]”hŒu8”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jŒmodname”NŒ classname”Njé jì )�”}”jï ]”j­Œc.drm_dp_vsc_sdp_supported”†”asbuh1hhjáubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjáubjÓ )�”}”(hŒdpcd”h]”hŒdpcd”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjáubj9)�”}”(hjMh]”hŒ[”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjáubh)�”}”(hhh]”jÓ )�”}”(hŒDP_RECEIVER_CAP_SIZE”h]”hŒDP_RECEIVER_CAP_SIZE”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjJubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jOŒmodname”NŒ classname”Njé jì )�”}”jï ]”j­Œc.drm_dp_vsc_sdp_supported”†”asbuh1hhjáubj9)�”}”(hj=Mh]”hŒ]”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjáubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjkubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj3h²hh³jDh´Mû ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj/h²hh³jDh´Mû ubah}”(h]”j*ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jDh´Mû hj,h²hubj )�”}”(hhh]”hÎ)�”}”(hŒcheck if vsc sdp is supported”h]”hŒcheck if vsc sdp is supported”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mû hj‘h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj,h²hh³jDh´Mû ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j¬j$ j¬j% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hŒÙ**Parameters** ``struct drm_dp_aux *aux`` DisplayPort AUX channel ``const u8 dpcd[DP_RECEIVER_CAP_SIZE]`` DisplayPort configuration data **Description** Returns true if vsc sdp is supported, else returns false”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj¶h]”hŒ Parameters”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj´ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mÿ hj°ubjw )�”}”(hhh]”(j| )�”}”(hŒ3``struct drm_dp_aux *aux`` DisplayPort AUX channel ”h]”(j‚ )�”}”(hŒ``struct drm_dp_aux *aux``”h]”jˆ )�”}”(hjÕh]”hŒstruct drm_dp_aux *aux”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÓubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mü hjÏubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort AUX channel”h]”hŒDisplayPort AUX channel”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jêh´Mü hjëubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÏubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jêh´Mü hjÌubj| )�”}”(hŒG``const u8 dpcd[DP_RECEIVER_CAP_SIZE]`` DisplayPort configuration data ”h]”(j‚ )�”}”(hŒ'``const u8 dpcd[DP_RECEIVER_CAP_SIZE]``”h]”jˆ )�”}”(hjh]”hŒ#const u8 dpcd[DP_RECEIVER_CAP_SIZE]”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mý hjubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort configuration data”h]”hŒDisplayPort configuration data”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j#h´Mý hj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j#h´Mý hjÌubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj°ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjIh]”hŒ Description”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjGubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mÿ hj°ubhÎ)�”}”(hŒ8Returns true if vsc sdp is supported, else returns false”h]”hŒ8Returns true if vsc sdp is supported, else returns false”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mþ hj°ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ drm_dp_vsc_sdp_pack (C function)”Œc.drm_dp_vsc_sdp_pack”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒRssize_t drm_dp_vsc_sdp_pack (const struct drm_dp_vsc_sdp *vsc, struct dp_sdp *sdp)”h]”j¤ )�”}”(hŒQssize_t drm_dp_vsc_sdp_pack(const struct drm_dp_vsc_sdp *vsc, struct dp_sdp *sdp)”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒssize_t”h]”hŒssize_t”…”�”}”(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Œdrm_dp_vsc_sdp_pack”sbŒc.drm_dp_vsc_sdp_pack”†”asbuh1hhjŠh²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjŠh²hh³j²h´MubjÍ )�”}”(hŒdrm_dp_vsc_sdp_pack”h]”jÓ )�”}”(hj¯h]”hŒdrm_dp_vsc_sdp_pack”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÁubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjŠh²hh³j²h´MubjÞ)�”}”(hŒ6(const struct drm_dp_vsc_sdp *vsc, struct dp_sdp *sdp)”h]”(jä)�”}”(hŒ const struct drm_dp_vsc_sdp *vsc”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjÜubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÜubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_dp_vsc_sdp”h]”hŒdrm_dp_vsc_sdp”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jŒmodname”NŒ classname”Njé jì )�”}”jï ]”j­Œc.drm_dp_vsc_sdp_pack”†”asbuh1hhjÜubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÜubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÜubjÓ )�”}”(hŒvsc”h]”hŒvsc”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÜubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjØubjä)�”}”(hŒstruct dp_sdp *sdp”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjgubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjgubh)�”}”(hhh]”jÓ )�”}”(hŒdp_sdp”h]”hŒdp_sdp”…”�”}”(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.drm_dp_vsc_sdp_pack”†”asbuh1hhjgubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjgubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjgubjÓ )�”}”(hŒsdp”h]”hŒsdp”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjgubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjØubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjŠh²hh³j²h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj†h²hh³j²h´Mubah}”(h]”j�ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j²h´Mhjƒh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ(pack a given vsc sdp into generic dp_sdp”h]”hŒ(pack a given vsc sdp into generic dp_sdp”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mhjéh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjƒh²hh³j²h´Mubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jj$ jj% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hXE**Parameters** ``const struct drm_dp_vsc_sdp *vsc`` vsc sdp initialized according to its purpose as defined in table 2-118 - table 2-120 in DP 1.4a specification ``struct dp_sdp *sdp`` valid handle to the generic dp_sdp which will be packed **Description** Returns length of sdp on success and error code on failure”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mhjubjw )�”}”(hhh]”(j| )�”}”(hŒ“``const struct drm_dp_vsc_sdp *vsc`` vsc sdp initialized according to its purpose as defined in table 2-118 - table 2-120 in DP 1.4a specification ”h]”(j‚ )�”}”(hŒ$``const struct drm_dp_vsc_sdp *vsc``”h]”jˆ )�”}”(hj-h]”hŒ const struct drm_dp_vsc_sdp *vsc”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mhj'ubjž )�”}”(hhh]”hÎ)�”}”(hŒmvsc sdp initialized according to its purpose as defined in table 2-118 - table 2-120 in DP 1.4a specification”h]”hŒmvsc sdp initialized according to its purpose as defined in table 2-118 - table 2-120 in DP 1.4a specification”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MhjCubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jBh´Mhj$ubj| )�”}”(hŒO``struct dp_sdp *sdp`` valid handle to the generic dp_sdp which will be packed ”h]”(j‚ )�”}”(hŒ``struct dp_sdp *sdp``”h]”jˆ )�”}”(hjgh]”hŒstruct dp_sdp *sdp”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjeubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mhjaubjž )�”}”(hhh]”hÎ)�”}”(hŒ7valid handle to the generic dp_sdp which will be packed”h]”hŒ7valid handle to the generic dp_sdp which will be packed”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j|h´Mhj}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjaubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j|h´Mhj$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj¢h]”hŒ Description”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MhjubhÎ)�”}”(hŒ:Returns length of sdp on success and error code on failure”h]”hŒ:Returns length of sdp on success and error code on failure”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mhjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ'drm_dp_get_pcon_max_frl_bw (C function)”Œc.drm_dp_get_pcon_max_frl_bw”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒZint drm_dp_get_pcon_max_frl_bw (const u8 dpcd[DP_RECEIVER_CAP_SIZE], const u8 port_cap[4])”h]”j¤ )�”}”(hŒYint drm_dp_get_pcon_max_frl_bw(const u8 dpcd[DP_RECEIVER_CAP_SIZE], const u8 port_cap[4])”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjãh²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.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Œdrm_dp_get_pcon_max_frl_bw”h]”jÓ )�”}”(hŒdrm_dp_get_pcon_max_frl_bw”h]”hŒdrm_dp_get_pcon_max_frl_bw”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjãh²hh³jõh´M\ubjÞ)�”}”(hŒ;(const u8 dpcd[DP_RECEIVER_CAP_SIZE], const u8 port_cap[4])”h]”(jä)�”}”(hŒ#const u8 dpcd[DP_RECEIVER_CAP_SIZE]”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj ubh)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj?ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jDŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj sbŒc.drm_dp_get_pcon_max_frl_bw”†”asbuh1hhj ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj ubjÓ )�”}”(hŒdpcd”h]”hŒdpcd”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj ubj9)�”}”(hjMh]”hŒ[”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ubh)�”}”(hhh]”jÓ )�”}”(hŒDP_RECEIVER_CAP_SIZE”h]”hŒDP_RECEIVER_CAP_SIZE”…”�”}”(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.drm_dp_get_pcon_max_frl_bw”†”asbuh1hhj ubj9)�”}”(hj=Mh]”hŒ]”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjubjä)�”}”(hŒconst u8 port_cap[4]”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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Œu8”h]”hŒu8”…”�”}”(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.drm_dp_get_pcon_max_frl_bw”†”asbuh1hhjÀubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÀubjÓ )�”}”(hŒport_cap”h]”hŒport_cap”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÀubj9)�”}”(hjMh]”hŒ[”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÀubjš)�”}”(hjšh]”hŒ4”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”jšah"]”h$]”h&]”uh1jšhjÀubj9)�”}”(hj=Mh]”hŒ]”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÀubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjãh²hh³jõh´M\ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œmaximum frl supported by PCON”h]”hŒmaximum frl supported by PCON”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.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# jwj$ jwj% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hŒí**Parameters** ``const u8 dpcd[DP_RECEIVER_CAP_SIZE]`` DisplayPort configuration data ``const u8 port_cap[4]`` port capabilities **Description** Returns maximum frl bandwidth supported by PCON in GBPS, returns 0 if not supported.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj�h]”hŒ Parameters”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M`hj{ubjw )�”}”(hhh]”(j| )�”}”(hŒG``const u8 dpcd[DP_RECEIVER_CAP_SIZE]`` DisplayPort configuration data ”h]”(j‚ )�”}”(hŒ'``const u8 dpcd[DP_RECEIVER_CAP_SIZE]``”h]”jˆ )�”}”(hj h]”hŒ#const u8 dpcd[DP_RECEIVER_CAP_SIZE]”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjžubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M]hjšubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort configuration data”h]”hŒDisplayPort configuration data”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jµh´M]hj¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjšubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jµh´M]hj—ubj| )�”}”(hŒ+``const u8 port_cap[4]`` port capabilities ”h]”(j‚ )�”}”(hŒ``const u8 port_cap[4]``”h]”jˆ )�”}”(hjÙh]”hŒconst u8 port_cap[4]”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj×ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M^hjÓubjž )�”}”(hhh]”hÎ)�”}”(hŒport capabilities”h]”hŒport capabilities”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jîh´M^hjïubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÓubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jîh´M^hj—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj{ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjh]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M`hj{ubhÎ)�”}”(hŒTReturns maximum frl bandwidth supported by PCON in GBPS, returns 0 if not supported.”h]”hŒTReturns maximum frl bandwidth supported by PCON in GBPS, returns 0 if not supported.”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M_hj{ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ$drm_dp_pcon_frl_prepare (C function)”Œc.drm_dp_pcon_frl_prepare”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒOint drm_dp_pcon_frl_prepare (struct drm_dp_aux *aux, bool enable_frl_ready_hpd)”h]”j¤ )�”}”(hŒNint drm_dp_pcon_frl_prepare(struct drm_dp_aux *aux, bool enable_frl_ready_hpd)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjUh²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M�ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjUh²hh³jgh´M�ubjÍ )�”}”(hŒdrm_dp_pcon_frl_prepare”h]”jÓ )�”}”(hŒdrm_dp_pcon_frl_prepare”h]”hŒdrm_dp_pcon_frl_prepare”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjvubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjUh²hh³jgh´M�ubjÞ)�”}”(hŒ3(struct drm_dp_aux *aux, bool enable_frl_ready_hpd)”h]”(jä)�”}”(hŒstruct drm_dp_aux *aux”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Œ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(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%)�”}”jj|sbŒc.drm_dp_pcon_frl_prepare”†”asbuh1hhj’ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj’ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj’ubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj’ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjŽubjä)�”}”(hŒbool enable_frl_ready_hpd”h]”(j¦)�”}”(hj£Ih]”hŒbool”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjubjÓ )�”}”(hŒenable_frl_ready_hpd”h]”hŒenable_frl_ready_hpd”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjŽubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjUh²hh³jgh´M�ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjQh²hh³jgh´M�ubah}”(h]”jLah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jgh´M�hjNh²hubj )�”}”(hhh]”hÎ)�”}”(hŒPrepare PCON for FRL.”h]”hŒPrepare PCON for FRL.”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M�hjJh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjNh²hh³jgh´M�ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jej$ jej% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hŒÓ**Parameters** ``struct drm_dp_aux *aux`` DisplayPort AUX channel ``bool enable_frl_ready_hpd`` Configure DP_PCON_ENABLE_HPD_READY. **Description** Returns 0 if success, else returns negative error code.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjoh]”hŒ Parameters”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjmubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M“hjiubjw )�”}”(hhh]”(j| )�”}”(hŒ3``struct drm_dp_aux *aux`` DisplayPort AUX channel ”h]”(j‚ )�”}”(hŒ``struct drm_dp_aux *aux``”h]”jˆ )�”}”(hjŽh]”hŒstruct drm_dp_aux *aux”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjŒubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M�hjˆubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort AUX channel”h]”hŒDisplayPort AUX channel”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j£h´M�hj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j£h´M�hj…ubj| )�”}”(hŒB``bool enable_frl_ready_hpd`` Configure DP_PCON_ENABLE_HPD_READY. ”h]”(j‚ )�”}”(hŒ``bool enable_frl_ready_hpd``”h]”jˆ )�”}”(hjÇh]”hŒbool enable_frl_ready_hpd”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÅubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M‘hjÁubjž )�”}”(hhh]”hÎ)�”}”(hŒ#Configure DP_PCON_ENABLE_HPD_READY.”h]”hŒ#Configure DP_PCON_ENABLE_HPD_READY.”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÜh´M‘hjÝubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÁubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÜh´M‘hj…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjiubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjh]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M“hjiubhÎ)�”}”(hŒ7Returns 0 if success, else returns negative error code.”h]”hŒ7Returns 0 if success, else returns negative error code.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M’hjiubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ%drm_dp_pcon_is_frl_ready (C function)”Œc.drm_dp_pcon_is_frl_ready”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ6bool drm_dp_pcon_is_frl_ready (struct drm_dp_aux *aux)”h]”j¤ )�”}”(hŒ5bool drm_dp_pcon_is_frl_ready(struct drm_dp_aux *aux)”h]”(j¦)�”}”(hj£Ih]”hŒbool”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjCh²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M¢ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjCh²hh³jTh´M¢ubjÍ )�”}”(hŒdrm_dp_pcon_is_frl_ready”h]”jÓ )�”}”(hŒdrm_dp_pcon_is_frl_ready”h]”hŒdrm_dp_pcon_is_frl_ready”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjcubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjCh²hh³jTh´M¢ubjÞ)�”}”(hŒ(struct drm_dp_aux *aux)”h]”jä)�”}”(hŒstruct drm_dp_aux *aux”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjƒh²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Œ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(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%)�”}”jjisbŒc.drm_dp_pcon_is_frl_ready”†”asbuh1hhjubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj{ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjCh²hh³jTh´M¢ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj?h²hh³jTh´M¢ubah}”(h]”j:ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jTh´M¢hj<h²hubj )�”}”(hhh]”hÎ)�”}”(hŒIs PCON ready for FRL”h]”hŒIs PCON ready for FRL”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M¢hjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj<h²hh³jTh´M¢ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jj$ jj% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hŒƒ**Parameters** ``struct drm_dp_aux *aux`` DisplayPort AUX channel **Description** Returns true if success, else returns false.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj(h]”hŒ Parameters”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M¦hj"ubjw )�”}”(hhh]”j| )�”}”(hŒ3``struct drm_dp_aux *aux`` DisplayPort AUX channel ”h]”(j‚ )�”}”(hŒ``struct drm_dp_aux *aux``”h]”jˆ )�”}”(hjGh]”hŒstruct drm_dp_aux *aux”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjEubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M£hjAubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort AUX channel”h]”hŒDisplayPort AUX channel”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j\h´M£hj]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjAubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j\h´M£hj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj"ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj‚h]”hŒ Description”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj€ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M¥hj"ubhÎ)�”}”(hŒ,Returns true if success, else returns false.”h]”hŒ,Returns true if success, else returns false.”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M¤hj"ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ(drm_dp_pcon_frl_configure_1 (C function)”Œc.drm_dp_pcon_frl_configure_1”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒWint drm_dp_pcon_frl_configure_1 (struct drm_dp_aux *aux, int max_frl_gbps, u8 frl_mode)”h]”j¤ )�”}”(hŒVint drm_dp_pcon_frl_configure_1(struct drm_dp_aux *aux, int max_frl_gbps, u8 frl_mode)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjÃh²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.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Œdrm_dp_pcon_frl_configure_1”h]”jÓ )�”}”(hŒdrm_dp_pcon_frl_configure_1”h]”hŒdrm_dp_pcon_frl_configure_1”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjäubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÃh²hh³jÕh´M¸ubjÞ)�”}”(hŒ7(struct drm_dp_aux *aux, int max_frl_gbps, u8 frl_mode)”h]”(jä)�”}”(hŒstruct drm_dp_aux *aux”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j$Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjêsbŒc.drm_dp_pcon_frl_configure_1”†”asbuh1hhjubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjüubjä)�”}”(hŒint max_frl_gbps”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjrubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjrubjÓ )�”}”(hŒ max_frl_gbps”h]”hŒ max_frl_gbps”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjrubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjüubjä)�”}”(hŒ u8 frl_mode”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(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.drm_dp_pcon_frl_configure_1”†”asbuh1hhj§ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj§ubjÓ )�”}”(hŒfrl_mode”h]”hŒfrl_mode”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj§ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjüubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjÃh²hh³jÕh´M¸ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ!Set HDMI LINK Configuration-Step1”h]”hŒ!Set HDMI LINK Configuration-Step1”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M¸hjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¼h²hh³jÕh´M¸ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jj$ jj% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hXÜ**Parameters** ``struct drm_dp_aux *aux`` DisplayPort AUX channel ``int max_frl_gbps`` maximum frl bw to be configured between PCON and HDMI sink ``u8 frl_mode`` FRL Training mode, it can be either Concurrent or Sequential. In Concurrent Mode, the FRL link bring up can be done along with DP Link training. In Sequential mode, the FRL link bring up is done prior to the DP Link training. **Description** Returns 0 if success, else returns negative error code.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj&h]”hŒ Parameters”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M¼hj ubjw )�”}”(hhh]”(j| )�”}”(hŒ3``struct drm_dp_aux *aux`` DisplayPort AUX channel ”h]”(j‚ )�”}”(hŒ``struct drm_dp_aux *aux``”h]”jˆ )�”}”(hjEh]”hŒstruct drm_dp_aux *aux”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjCubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M¹hj?ubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort AUX channel”h]”hŒDisplayPort AUX channel”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jZh´M¹hj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jZh´M¹hj<ubj| )�”}”(hŒP``int max_frl_gbps`` maximum frl bw to be configured between PCON and HDMI sink ”h]”(j‚ )�”}”(hŒ``int max_frl_gbps``”h]”jˆ )�”}”(hj~h]”hŒint max_frl_gbps”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mºhjxubjž )�”}”(hhh]”hÎ)�”}”(hŒ:maximum frl bw to be configured between PCON and HDMI sink”h]”hŒ:maximum frl bw to be configured between PCON and HDMI sink”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j“h´Mºhj”ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjxubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j“h´Mºhj<ubj| )�”}”(hŒò``u8 frl_mode`` FRL Training mode, it can be either Concurrent or Sequential. In Concurrent Mode, the FRL link bring up can be done along with DP Link training. In Sequential mode, the FRL link bring up is done prior to the DP Link training. ”h]”(j‚ )�”}”(hŒ``u8 frl_mode``”h]”jˆ )�”}”(hj·h]”hŒ u8 frl_mode”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjµubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M¾hj±ubjž )�”}”(hhh]”hÎ)�”}”(hŒáFRL Training mode, it can be either Concurrent or Sequential. In Concurrent Mode, the FRL link bring up can be done along with DP Link training. In Sequential mode, the FRL link bring up is done prior to the DP Link training.”h]”hŒáFRL Training mode, it can be either Concurrent or Sequential. In Concurrent Mode, the FRL link bring up can be done along with DP Link training. In Sequential mode, the FRL link bring up is done prior to the DP Link training.”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M»hjÍubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÌh´M¾hj<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjóh]”hŒ Description”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjñubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MÀhj ubhÎ)�”}”(hŒ7Returns 0 if success, else returns negative error code.”h]”hŒ7Returns 0 if success, else returns negative error code.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M¿hj ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ(drm_dp_pcon_frl_configure_2 (C function)”Œc.drm_dp_pcon_frl_configure_2”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒWint drm_dp_pcon_frl_configure_2 (struct drm_dp_aux *aux, int max_frl_mask, u8 frl_type)”h]”j¤ )�”}”(hŒVint drm_dp_pcon_frl_configure_2(struct drm_dp_aux *aux, int max_frl_mask, u8 frl_type)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj8 h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj4 h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mñubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjG h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj4 h²hh³jF h´MñubjÍ )�”}”(hŒdrm_dp_pcon_frl_configure_2”h]”jÓ )�”}”(hŒdrm_dp_pcon_frl_configure_2”h]”hŒdrm_dp_pcon_frl_configure_2”…”�”}”(hjY h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjU ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj4 h²hh³jF h´MñubjÞ)�”}”(hŒ7(struct drm_dp_aux *aux, int max_frl_mask, u8 frl_type)”h]”(jä)�”}”(hŒstruct drm_dp_aux *aux”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hju h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjq ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚ h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjq ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(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%)�”}”jj[ sbŒc.drm_dp_pcon_frl_configure_2”†”asbuh1hhjq ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³ h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjq ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÁ h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjq ubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hjÎ h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjq ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjm ubjä)�”}”(hŒint max_frl_mask”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(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Œ max_frl_mask”h]”hŒ max_frl_mask”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjã ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjm ubjä)�”}”(hŒ u8 frl_type”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(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.drm_dp_pcon_frl_configure_2”†”asbuh1hhj!ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=!h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj!ubjÓ )�”}”(hŒfrl_type”h]”hŒfrl_type”…”�”}”(hjK!h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj!ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjm ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj4 h²hh³jF h´Mñubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj0 h²hh³jF h´Mñubah}”(h]”j+ ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jF h´Mñhj- h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ"Set HDMI Link configuration Step-2”h]”hŒ"Set HDMI Link configuration Step-2”…”�”}”(hju!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mñhjr!h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj- h²hh³jF h´Mñubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j�!j$ j�!j% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hXû**Parameters** ``struct drm_dp_aux *aux`` DisplayPort AUX channel ``int max_frl_mask`` Max FRL BW to be tried by the PCON with HDMI Sink ``u8 frl_type`` FRL training type, can be Extended, or Normal. In Normal FRL training, the PCON tries each frl bw from the max_frl_mask starting from min, and stops when link training is successful. In Extended FRL training, all frl bw selected in the mask are trained by the PCON. **Description** Returns 0 if success, else returns negative error code.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj—!h]”hŒ Parameters”…”�”}”(hj™!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj•!ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mõhj‘!ubjw )�”}”(hhh]”(j| )�”}”(hŒ3``struct drm_dp_aux *aux`` DisplayPort AUX channel ”h]”(j‚ )�”}”(hŒ``struct drm_dp_aux *aux``”h]”jˆ )�”}”(hj¶!h]”hŒstruct drm_dp_aux *aux”…”�”}”(hj¸!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj´!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mòhj°!ubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort AUX channel”h]”hŒDisplayPort AUX channel”…”�”}”(hjÏ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jË!h´MòhjÌ!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj°!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jË!h´Mòhj­!ubj| )�”}”(hŒG``int max_frl_mask`` Max FRL BW to be tried by the PCON with HDMI Sink ”h]”(j‚ )�”}”(hŒ``int max_frl_mask``”h]”jˆ )�”}”(hjï!h]”hŒint max_frl_mask”…”�”}”(hjñ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjí!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Móhjé!ubjž )�”}”(hhh]”hÎ)�”}”(hŒ1Max FRL BW to be tried by the PCON with HDMI Sink”h]”hŒ1Max FRL BW to be tried by the PCON with HDMI Sink”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j"h´Móhj"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjé!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j"h´Móhj­!ubj| )�”}”(hX``u8 frl_type`` FRL training type, can be Extended, or Normal. In Normal FRL training, the PCON tries each frl bw from the max_frl_mask starting from min, and stops when link training is successful. In Extended FRL training, all frl bw selected in the mask are trained by the PCON. ”h]”(j‚ )�”}”(hŒ``u8 frl_type``”h]”jˆ )�”}”(hj("h]”hŒ u8 frl_type”…”�”}”(hj*"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj&"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M÷hj""ubjž )�”}”(hhh]”hÎ)�”}”(hX FRL training type, can be Extended, or Normal. In Normal FRL training, the PCON tries each frl bw from the max_frl_mask starting from min, and stops when link training is successful. In Extended FRL training, all frl bw selected in the mask are trained by the PCON.”h]”hX FRL training type, can be Extended, or Normal. In Normal FRL training, the PCON tries each frl bw from the max_frl_mask starting from min, and stops when link training is successful. In Extended FRL training, all frl bw selected in the mask are trained by the PCON.”…”�”}”(hjA"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Môhj>"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj""ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j="h´M÷hj­!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj‘!ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjd"h]”hŒ Description”…”�”}”(hjf"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjb"ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mùhj‘!ubhÎ)�”}”(hŒ7Returns 0 if success, else returns negative error code.”h]”hŒ7Returns 0 if success, else returns negative error code.”…”�”}”(hjz"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Møhj‘!ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ)drm_dp_pcon_reset_frl_config (C function)”Œc.drm_dp_pcon_reset_frl_config”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ9int drm_dp_pcon_reset_frl_config (struct drm_dp_aux *aux)”h]”j¤ )�”}”(hŒ8int drm_dp_pcon_reset_frl_config(struct drm_dp_aux *aux)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj©"h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj¥"h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸"h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¥"h²hh³j·"h´MubjÍ )�”}”(hŒdrm_dp_pcon_reset_frl_config”h]”jÓ )�”}”(hŒdrm_dp_pcon_reset_frl_config”h]”hŒdrm_dp_pcon_reset_frl_config”…”�”}”(hjÊ"h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÆ"ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj¥"h²hh³j·"h´MubjÞ)�”}”(hŒ(struct drm_dp_aux *aux)”h]”jä)�”}”(hŒstruct drm_dp_aux *aux”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Œ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(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%)�”}”jjÌ"sbŒc.drm_dp_pcon_reset_frl_config”†”asbuh1hhjâ"ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$#h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjâ"ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj2#h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjâ"ubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hj?#h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjâ"ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÞ"ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj¥"h²hh³j·"h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj¡"h²hh³j·"h´Mubah}”(h]”jœ"ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j·"h´Mhjž"h²hubj )�”}”(hhh]”hÎ)�”}”(hŒRe-Set HDMI Link configuration.”h]”hŒRe-Set HDMI Link configuration.”…”�”}”(hji#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mhjf#h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjž"h²hh³j·"h´Mubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j�#j$ j�#j% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hŒŽ**Parameters** ``struct drm_dp_aux *aux`` DisplayPort AUX channel **Description** Returns 0 if success, else returns negative error code.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj‹#h]”hŒ Parameters”…”�”}”(hj�#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj‰#ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mhj…#ubjw )�”}”(hhh]”j| )�”}”(hŒ3``struct drm_dp_aux *aux`` DisplayPort AUX channel ”h]”(j‚ )�”}”(hŒ``struct drm_dp_aux *aux``”h]”jˆ )�”}”(hjª#h]”hŒstruct drm_dp_aux *aux”…”�”}”(hj¬#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¨#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mhj¤#ubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort AUX channel”h]”hŒDisplayPort AUX channel”…”�”}”(hjÃ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¿#h´MhjÀ#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¤#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¿#h´Mhj¡#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj…#ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjå#h]”hŒ Description”…”�”}”(hjç#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjã#ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mhj…#ubhÎ)�”}”(hŒ7Returns 0 if success, else returns negative error code.”h]”hŒ7Returns 0 if success, else returns negative error code.”…”�”}”(hjû#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mhj…#ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ#drm_dp_pcon_frl_enable (C function)”Œc.drm_dp_pcon_frl_enable”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ3int drm_dp_pcon_frl_enable (struct drm_dp_aux *aux)”h]”j¤ )�”}”(hŒ2int drm_dp_pcon_frl_enable(struct drm_dp_aux *aux)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj*$h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj&$h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9$h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj&$h²hh³j8$h´MubjÍ )�”}”(hŒdrm_dp_pcon_frl_enable”h]”jÓ )�”}”(hŒdrm_dp_pcon_frl_enable”h]”hŒdrm_dp_pcon_frl_enable”…”�”}”(hjK$h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjG$ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj&$h²hh³j8$h´MubjÞ)�”}”(hŒ(struct drm_dp_aux *aux)”h]”jä)�”}”(hŒstruct drm_dp_aux *aux”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjg$h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjc$ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjt$h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjc$ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(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%)�”}”jjM$sbŒc.drm_dp_pcon_frl_enable”†”asbuh1hhjc$ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥$h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjc$ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj³$h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjc$ubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hjÀ$h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjc$ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj_$ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj&$h²hh³j8$h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj"$h²hh³j8$h´Mubah}”(h]”j$ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j8$h´Mhj$h²hubj )�”}”(hhh]”hÎ)�”}”(hŒEnable HDMI link through FRL”h]”hŒEnable HDMI link through FRL”…”�”}”(hjê$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mhjç$h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj$h²hh³j8$h´Mubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j%j$ j%j% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hŒŽ**Parameters** ``struct drm_dp_aux *aux`` DisplayPort AUX channel **Description** Returns 0 if success, else returns negative error code.”•h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj %h]”hŒ Parameters”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj %ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mhj%ubjw )�”}”(hhh]”j| )�”}”(hŒ3``struct drm_dp_aux *aux`` DisplayPort AUX channel ”h]”(j‚ )�”}”(hŒ``struct drm_dp_aux *aux``”h]”jˆ )�”}”(hj+%h]”hŒstruct drm_dp_aux *aux”…”�”}”(hj-%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj)%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mhj%%ubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort AUX channel”h]”hŒDisplayPort AUX channel”…”�”}”(hjD%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j@%h´MhjA%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj%%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j@%h´Mhj"%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj%ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjf%h]”hŒ Description”…”�”}”(hjh%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjd%ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mhj%ubhÎ)�”}”(hŒ7Returns 0 if success, else returns negative error code.”h]”hŒ7Returns 0 if success, else returns negative error code.”…”�”}”(hj|%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mhj%ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ)drm_dp_pcon_hdmi_link_active (C function)”Œc.drm_dp_pcon_hdmi_link_active”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ:bool drm_dp_pcon_hdmi_link_active (struct drm_dp_aux *aux)”h]”j¤ )�”}”(hŒ9bool drm_dp_pcon_hdmi_link_active(struct drm_dp_aux *aux)”h]”(j¦)�”}”(hj£Ih]”hŒbool”…”�”}”(hj«%h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj§%h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M3ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹%h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj§%h²hh³j¸%h´M3ubjÍ )�”}”(hŒdrm_dp_pcon_hdmi_link_active”h]”jÓ )�”}”(hŒdrm_dp_pcon_hdmi_link_active”h]”hŒdrm_dp_pcon_hdmi_link_active”…”�”}”(hjË%h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÇ%ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj§%h²hh³j¸%h´M3ubjÞ)�”}”(hŒ(struct drm_dp_aux *aux)”h]”jä)�”}”(hŒstruct drm_dp_aux *aux”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Œ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(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%)�”}”jjÍ%sbŒc.drm_dp_pcon_hdmi_link_active”†”asbuh1hhjã%ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%&h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjã%ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj3&h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjã%ubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hj@&h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjã%ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjß%ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj§%h²hh³j¸%h´M3ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj£%h²hh³j¸%h´M3ubah}”(h]”jž%ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j¸%h´M3hj %h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ-check if the PCON HDMI LINK status is active.”h]”hŒ-check if the PCON HDMI LINK status is active.”…”�”}”(hjj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M3hjg&h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj %h²hh³j¸%h´M3ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j‚&j$ j‚&j% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hŒ‰**Parameters** ``struct drm_dp_aux *aux`` DisplayPort AUX channel **Description** Returns true if link is active else returns false.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjŒ&h]”hŒ Parameters”…”�”}”(hjŽ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjŠ&ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M7hj†&ubjw )�”}”(hhh]”j| )�”}”(hŒ3``struct drm_dp_aux *aux`` DisplayPort AUX channel ”h]”(j‚ )�”}”(hŒ``struct drm_dp_aux *aux``”h]”jˆ )�”}”(hj«&h]”hŒstruct drm_dp_aux *aux”…”�”}”(hj­&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj©&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M4hj¥&ubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort AUX channel”h]”hŒDisplayPort AUX channel”…”�”}”(hjÄ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÀ&h´M4hjÁ&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¥&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÀ&h´M4hj¢&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj†&ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjæ&h]”hŒ Description”…”�”}”(hjè&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjä&ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M6hj†&ubhÎ)�”}”(hŒ2Returns true if link is active else returns false.”h]”hŒ2Returns true if link is active else returns false.”…”�”}”(hjü&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M5hj†&ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ'drm_dp_pcon_hdmi_link_mode (C function)”Œc.drm_dp_pcon_hdmi_link_mode”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒMint drm_dp_pcon_hdmi_link_mode (struct drm_dp_aux *aux, u8 *frl_trained_mask)”h]”j¤ )�”}”(hŒLint drm_dp_pcon_hdmi_link_mode(struct drm_dp_aux *aux, u8 *frl_trained_mask)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj+'h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj''h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MFubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:'h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj''h²hh³j9'h´MFubjÍ )�”}”(hŒdrm_dp_pcon_hdmi_link_mode”h]”jÓ )�”}”(hŒdrm_dp_pcon_hdmi_link_mode”h]”hŒdrm_dp_pcon_hdmi_link_mode”…”�”}”(hjL'h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjH'ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj''h²hh³j9'h´MFubjÞ)�”}”(hŒ.(struct drm_dp_aux *aux, u8 *frl_trained_mask)”h]”(jä)�”}”(hŒstruct drm_dp_aux *aux”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjh'h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjd'ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hju'h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjd'ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(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%)�”}”jjN'sbŒc.drm_dp_pcon_hdmi_link_mode”†”asbuh1hhjd'ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦'h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjd'ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj´'h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjd'ubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hjÁ'h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjd'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj`'ubjä)�”}”(hŒu8 *frl_trained_mask”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(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.drm_dp_pcon_hdmi_link_mode”†”asbuh1hhjÖ'ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjû'h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÖ'ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj (h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÖ'ubjÓ )�”}”(hŒfrl_trained_mask”h]”hŒfrl_trained_mask”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÖ'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj`'ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj''h²hh³j9'h´MFubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj#'h²hh³j9'h´MFubah}”(h]”j'ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j9'h´MFhj 'h²hubj )�”}”(hhh]”hÎ)�”}”(hŒget the PCON HDMI LINK MODE”h]”hŒget the PCON HDMI LINK MODE”…”�”}”(hj@(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MFhj=(h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj 'h²hh³j9'h´MFubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jX(j$ jX(j% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hX§**Parameters** ``struct drm_dp_aux *aux`` DisplayPort AUX channel ``u8 *frl_trained_mask`` pointer to store bitmask of the trained bw configuration. Valid only if the MODE returned is FRL. For Normal Link training mode only 1 of the bits will be set, but in case of Extended mode, more than one bits can be set. **Description** Returns the link mode : TMDS or FRL on success, else returns negative error code.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjb(h]”hŒ Parameters”…”�”}”(hjd(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj`(ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MJhj\(ubjw )�”}”(hhh]”(j| )�”}”(hŒ3``struct drm_dp_aux *aux`` DisplayPort AUX channel ”h]”(j‚ )�”}”(hŒ``struct drm_dp_aux *aux``”h]”jˆ )�”}”(hj�(h]”hŒstruct drm_dp_aux *aux”…”�”}”(hjƒ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MGhj{(ubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort AUX channel”h]”hŒDisplayPort AUX channel”…”�”}”(hjš(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j–(h´MGhj—(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj{(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j–(h´MGhjx(ubj| )�”}”(hŒö``u8 *frl_trained_mask`` pointer to store bitmask of the trained bw configuration. Valid only if the MODE returned is FRL. For Normal Link training mode only 1 of the bits will be set, but in case of Extended mode, more than one bits can be set. ”h]”(j‚ )�”}”(hŒ``u8 *frl_trained_mask``”h]”jˆ )�”}”(hjº(h]”hŒu8 *frl_trained_mask”…”�”}”(hj¼(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¸(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MKhj´(ubjž )�”}”(hhh]”hÎ)�”}”(hŒÜpointer to store bitmask of the trained bw configuration. Valid only if the MODE returned is FRL. For Normal Link training mode only 1 of the bits will be set, but in case of Extended mode, more than one bits can be set.”h]”hŒÜpointer to store bitmask of the trained bw configuration. Valid only if the MODE returned is FRL. For Normal Link training mode only 1 of the bits will be set, but in case of Extended mode, more than one bits can be set.”…”�”}”(hjÓ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MHhjÐ(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj´(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÏ(h´MKhjx(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj\(ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjö(h]”hŒ Description”…”�”}”(hjø(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjô(ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MMhj\(ubhÎ)�”}”(hŒQReturns the link mode : TMDS or FRL on success, else returns negative error code.”h]”hŒQReturns the link mode : TMDS or FRL on success, else returns negative error code.”…”�”}”(hj )h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MLhj\(ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ2drm_dp_pcon_hdmi_frl_link_error_count (C function)”Œ'c.drm_dp_pcon_hdmi_frl_link_error_count”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒdvoid drm_dp_pcon_hdmi_frl_link_error_count (struct drm_dp_aux *aux, struct drm_connector *connector)”h]”j¤ )�”}”(hŒcvoid drm_dp_pcon_hdmi_frl_link_error_count(struct drm_dp_aux *aux, struct drm_connector *connector)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj;)h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj7)h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mdubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJ)h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj7)h²hh³jI)h´MdubjÍ )�”}”(hŒ%drm_dp_pcon_hdmi_frl_link_error_count”h]”jÓ )�”}”(hŒ%drm_dp_pcon_hdmi_frl_link_error_count”h]”hŒ%drm_dp_pcon_hdmi_frl_link_error_count”…”�”}”(hj\)h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjX)ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj7)h²hh³jI)h´MdubjÞ)�”}”(hŒ9(struct drm_dp_aux *aux, struct drm_connector *connector)”h]”(jä)�”}”(hŒstruct drm_dp_aux *aux”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjx)h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjt)ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…)h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjt)ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(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%)�”}”jj^)sbŒ'c.drm_dp_pcon_hdmi_frl_link_error_count”†”asbuh1hhjt)ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶)h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjt)ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÄ)h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjt)ubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hjÑ)h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjt)ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjp)ubjä)�”}”(hŒstruct drm_connector *connector”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Œ drm_connector”h]”hŒ drm_connector”…”�”}”(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.drm_dp_pcon_hdmi_frl_link_error_count”†”asbuh1hhjæ)ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&*h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjæ)ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj4*h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjæ)ubjÓ )�”}”(hŒ connector”h]”hŒ connector”…”�”}”(hjA*h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjæ)ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjp)ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj7)h²hh³jI)h´Mdubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj3)h²hh³jI)h´Mdubah}”(h]”j.)ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jI)h´Mdhj0)h²hubj )�”}”(hhh]”hÎ)�”}”(hŒMprint the error count per lane during link failure between PCON and HDMI sink”h]”hŒMprint the error count per lane during link failure between PCON and HDMI sink”…”�”}”(hjk*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mdhjh*h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj0)h²hh³jI)h´Mdubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jƒ*j$ jƒ*j% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hŒ�**Parameters** ``struct drm_dp_aux *aux`` DisplayPort AUX channel ``struct drm_connector *connector`` DRM connector code.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj�*h]”hŒ Parameters”…”�”}”(hj�*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj‹*ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mhhj‡*ubjw )�”}”(hhh]”(j| )�”}”(hŒ3``struct drm_dp_aux *aux`` DisplayPort AUX channel ”h]”(j‚ )�”}”(hŒ``struct drm_dp_aux *aux``”h]”jˆ )�”}”(hj¬*h]”hŒstruct drm_dp_aux *aux”…”�”}”(hj®*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjª*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mfhj¦*ubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort AUX channel”h]”hŒDisplayPort AUX channel”…”�”}”(hjÅ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÁ*h´MfhjÂ*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¦*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÁ*h´Mfhj£*ubj| )�”}”(hŒ7``struct drm_connector *connector`` DRM connector code.”h]”(j‚ )�”}”(hŒ#``struct drm_connector *connector``”h]”jˆ )�”}”(hjå*h]”hŒstruct drm_connector *connector”…”�”}”(hjç*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjã*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mghjß*ubjž )�”}”(hhh]”hÎ)�”}”(hŒDRM connector code.”h]”hŒDRM connector code.”…”�”}”(hjþ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jú*h´Mghjû*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjß*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jú*h´Mghj£*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj‡*ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ$drm_dp_pcon_pps_default (C function)”Œc.drm_dp_pcon_pps_default”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ4int drm_dp_pcon_pps_default (struct drm_dp_aux *aux)”h]”j¤ )�”}”(hŒ3int drm_dp_pcon_pps_default(struct drm_dp_aux *aux)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj>+h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj:+h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.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Œdrm_dp_pcon_pps_default”h]”jÓ )�”}”(hŒdrm_dp_pcon_pps_default”h]”hŒdrm_dp_pcon_pps_default”…”�”}”(hj_+h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj[+ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj:+h²hh³jL+h´M ubjÞ)�”}”(hŒ(struct drm_dp_aux *aux)”h]”jä)�”}”(hŒstruct drm_dp_aux *aux”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Œ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(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%)�”}”jja+sbŒc.drm_dp_pcon_pps_default”†”asbuh1hhjw+ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹+h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjw+ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÇ+h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjw+ubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hjÔ+h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjw+ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjs+ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj:+h²hh³jL+h´M ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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ŒOLet PCON fill the default pps parameters for DSC1.2 between PCON & HDMI2.1 sink”h]”hŒOLet PCON fill the default pps parameters for DSC1.2 between PCON & HDMI2.1 sink”…”�”}”(hjþ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.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²hhjÎ9h³Nh´Nubj) )�”}”(hŒŽ**Parameters** ``struct drm_dp_aux *aux`` DisplayPort AUX channel **Description** Returns 0 on success, else returns negative error code.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj ,h]”hŒ Parameters”…”�”}”(hj",h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj,ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M hj,ubjw )�”}”(hhh]”j| )�”}”(hŒ3``struct drm_dp_aux *aux`` DisplayPort AUX channel ”h]”(j‚ )�”}”(hŒ``struct drm_dp_aux *aux``”h]”jˆ )�”}”(hj?,h]”hŒstruct drm_dp_aux *aux”…”�”}”(hjA,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj=,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M hj9,ubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort AUX channel”h]”hŒDisplayPort AUX channel”…”�”}”(hjX,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jT,h´M hjU,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj9,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jT,h´M hj6,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj,ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjz,h]”hŒ Description”…”�”}”(hj|,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjx,ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M hj,ubhÎ)�”}”(hŒ7Returns 0 on success, else returns negative error code.”h]”hŒ7Returns 0 on success, else returns negative error code.”…”�”}”(hj�,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M hj,ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ)drm_dp_pcon_pps_override_buf (C function)”Œc.drm_dp_pcon_pps_override_buf”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒJint drm_dp_pcon_pps_override_buf (struct drm_dp_aux *aux, u8 pps_buf[128])”h]”j¤ )�”}”(hŒIint drm_dp_pcon_pps_override_buf(struct drm_dp_aux *aux, u8 pps_buf[128])”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj¿,h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj»,h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÎ,h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj»,h²hh³jÍ,h´MubjÍ )�”}”(hŒdrm_dp_pcon_pps_override_buf”h]”jÓ )�”}”(hŒdrm_dp_pcon_pps_override_buf”h]”hŒdrm_dp_pcon_pps_override_buf”…”�”}”(hjà,h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÜ,ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj»,h²hh³jÍ,h´MubjÞ)�”}”(hŒ)(struct drm_dp_aux *aux, u8 pps_buf[128])”h]”(jä)�”}”(hŒstruct drm_dp_aux *aux”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Œ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(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%)�”}”jjâ,sbŒc.drm_dp_pcon_pps_override_buf”†”asbuh1hhjø,ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:-h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjø,ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjH-h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjø,ubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hjU-h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjø,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjô,ubjä)�”}”(hŒu8 pps_buf[128]”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(hjq-h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjn-ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”js-Œmodname”NŒ classname”Njé jì )�”}”jï ]”j6-Œc.drm_dp_pcon_pps_override_buf”†”asbuh1hhjj-ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�-h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjj-ubjÓ )�”}”(hŒpps_buf”h]”hŒpps_buf”…”�”}”(hj�-h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjj-ubj9)�”}”(hjMh]”hŒ[”…”�”}”(hj«-h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjj-ubjš)�”}”(hŒ128”h]”hŒ128”…”�”}”(hj¸-h²hh³Nh´Nubah}”(h]”h ]”jšah"]”h$]”h&]”uh1jšhjj-ubj9)�”}”(hj=Mh]”hŒ]”…”�”}”(hjÆ-h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjj-ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjô,ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj»,h²hh³jÍ,h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj·,h²hh³jÍ,h´Mubah}”(h]”j²,ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jÍ,h´Mhj´,h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ3Configure PPS encoder override buffer for HDMI sink”h]”hŒ3Configure PPS encoder override buffer for HDMI sink”…”�”}”(hjï-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mhjì-h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj´,h²hh³jÍ,h´Mubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j.j$ j.j% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hŒä**Parameters** ``struct drm_dp_aux *aux`` DisplayPort AUX channel ``u8 pps_buf[128]`` 128 bytes to be written into PPS buffer for HDMI sink by PCON. **Description** Returns 0 on success, else returns negative error code.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj.h]”hŒ Parameters”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mhj .ubjw )�”}”(hhh]”(j| )�”}”(hŒ3``struct drm_dp_aux *aux`` DisplayPort AUX channel ”h]”(j‚ )�”}”(hŒ``struct drm_dp_aux *aux``”h]”jˆ )�”}”(hj0.h]”hŒstruct drm_dp_aux *aux”…”�”}”(hj2.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj..ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mhj*.ubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort AUX channel”h]”hŒDisplayPort AUX channel”…”�”}”(hjI.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jE.h´MhjF.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj*.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jE.h´Mhj'.ubj| )�”}”(hŒS``u8 pps_buf[128]`` 128 bytes to be written into PPS buffer for HDMI sink by PCON. ”h]”(j‚ )�”}”(hŒ``u8 pps_buf[128]``”h]”jˆ )�”}”(hji.h]”hŒu8 pps_buf[128]”…”�”}”(hjk.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjg.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mhjc.ubjž )�”}”(hhh]”hÎ)�”}”(hŒ>128 bytes to be written into PPS buffer for HDMI sink by PCON.”h]”hŒ>128 bytes to be written into PPS buffer for HDMI sink by PCON.”…”�”}”(hj‚.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j~.h´Mhj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjc.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j~.h´Mhj'.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj .ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj¤.h]”hŒ Description”…”�”}”(hj¦.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¢.ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mhj .ubhÎ)�”}”(hŒ7Returns 0 on success, else returns negative error code.”h]”hŒ7Returns 0 on success, else returns negative error code.”…”�”}”(hjº.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mhj .ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ(drm_edp_backlight_set_level (C function)”Œc.drm_edp_backlight_set_level”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒlint drm_edp_backlight_set_level (struct drm_dp_aux *aux, const struct drm_edp_backlight_info *bl, u32 level)”h]”j¤ )�”}”(hŒkint drm_edp_backlight_set_level(struct drm_dp_aux *aux, const struct drm_edp_backlight_info *bl, u32 level)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjé.h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjå.h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.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Œdrm_edp_backlight_set_level”h]”jÓ )�”}”(hŒdrm_edp_backlight_set_level”h]”hŒdrm_edp_backlight_set_level”…”�”}”(hj /h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj/ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjå.h²hh³j÷.h´M^ubjÞ)�”}”(hŒL(struct drm_dp_aux *aux, const struct drm_edp_backlight_info *bl, u32 level)”h]”(jä)�”}”(hŒstruct drm_dp_aux *aux”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj&/h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj"/ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3/h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj"/ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(hjD/h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjA/ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jF/Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj /sbŒc.drm_edp_backlight_set_level”†”asbuh1hhj"/ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjd/h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj"/ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjr/h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj"/ubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj"/ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj/ubjä)�”}”(hŒ'const struct drm_edp_backlight_info *bl”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(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Œdrm_edp_backlight_info”h]”hŒdrm_edp_backlight_info”…”�”}”(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.drm_edp_backlight_set_level”†”asbuh1hhj”/ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjï/h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj”/ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjý/h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj”/ubjÓ )�”}”(hŒbl”h]”hŒbl”…”�”}”(hj 0h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj”/ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj/ubjä)�”}”(hŒ u32 level”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu32”h]”hŒu32”…”�”}”(hj&0h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj#0ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j(0Œmodname”NŒ classname”Njé jì )�”}”jï ]”j`/Œc.drm_edp_backlight_set_level”†”asbuh1hhj0ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjD0h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj0ubjÓ )�”}”(hŒlevel”h]”hŒlevel”…”�”}”(hjR0h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj0ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj/ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjå.h²hh³j÷.h´M^ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ/Set the backlight level of an eDP panel via AUX”h]”hŒ/Set the backlight level of an eDP panel via AUX”…”�”}”(hj|0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M^hjy0h²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”0j$ j”0j% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hXÕ**Parameters** ``struct drm_dp_aux *aux`` The DP AUX channel to use ``const struct drm_edp_backlight_info *bl`` Backlight capability info from drm_edp_backlight_init() ``u32 level`` The brightness level to set **Description** Sets the brightness level of an eDP panel's backlight. Note that the panel's backlight must already have been enabled by the driver by calling drm_edp_backlight_enable(). **Return** ``0`` on success, negative error code on failure”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjž0h]”hŒ Parameters”…”�”}”(hj 0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjœ0ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mbhj˜0ubjw )�”}”(hhh]”(j| )�”}”(hŒ5``struct drm_dp_aux *aux`` The DP AUX channel to use ”h]”(j‚ )�”}”(hŒ``struct drm_dp_aux *aux``”h]”jˆ )�”}”(hj½0h]”hŒstruct drm_dp_aux *aux”…”�”}”(hj¿0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj»0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M_hj·0ubjž )�”}”(hhh]”hÎ)�”}”(hŒThe DP AUX channel to use”h]”hŒThe DP AUX channel to use”…”�”}”(hjÖ0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÒ0h´M_hjÓ0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj·0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÒ0h´M_hj´0ubj| )�”}”(hŒd``const struct drm_edp_backlight_info *bl`` Backlight capability info from drm_edp_backlight_init() ”h]”(j‚ )�”}”(hŒ+``const struct drm_edp_backlight_info *bl``”h]”jˆ )�”}”(hjö0h]”hŒ'const struct drm_edp_backlight_info *bl”…”�”}”(hjø0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjô0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M`hjð0ubjž )�”}”(hhh]”hÎ)�”}”(hŒ7Backlight capability info from drm_edp_backlight_init()”h]”hŒ7Backlight capability info from drm_edp_backlight_init()”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j 1h´M`hj 1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjð0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j 1h´M`hj´0ubj| )�”}”(hŒ*``u32 level`` The brightness level to set ”h]”(j‚ )�”}”(hŒ ``u32 level``”h]”jˆ )�”}”(hj/1h]”hŒ u32 level”…”�”}”(hj11h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj-1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mahj)1ubjž )�”}”(hhh]”hÎ)�”}”(hŒThe brightness level to set”h]”hŒThe brightness level to set”…”�”}”(hjH1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jD1h´MahjE1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj)1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jD1h´Mahj´0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj˜0ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjj1h]”hŒ Description”…”�”}”(hjl1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjh1ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mchj˜0ubhÎ)�”}”(hŒªSets the brightness level of an eDP panel's backlight. Note that the panel's backlight must already have been enabled by the driver by calling drm_edp_backlight_enable().”h]”hŒ®Sets the brightness level of an eDP panel’s backlight. Note that the panel’s backlight must already have been enabled by the driver by calling drm_edp_backlight_enable().”…”�”}”(hj€1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mbhj˜0ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj‘1h]”hŒReturn”…”�”}”(hj“1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj�1ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mehj˜0ubhÎ)�”}”(hŒ0``0`` on success, negative error code on failure”h]”(jˆ )�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hj«1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj§1ubhŒ+ on success, negative error code on failure”…”�”}”(hj§1h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mfhj˜0ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ%drm_edp_backlight_enable (C function)”Œc.drm_edp_backlight_enable”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒoint drm_edp_backlight_enable (struct drm_dp_aux *aux, const struct drm_edp_backlight_info *bl, const u32 level)”h]”j¤ )�”}”(hŒnint drm_edp_backlight_enable(struct drm_dp_aux *aux, const struct drm_edp_backlight_info *bl, const u32 level)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjä1h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjà1h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M°ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjó1h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjà1h²hh³jò1h´M°ubjÍ )�”}”(hŒdrm_edp_backlight_enable”h]”jÓ )�”}”(hŒdrm_edp_backlight_enable”h]”hŒdrm_edp_backlight_enable”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj2ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjà1h²hh³jò1h´M°ubjÞ)�”}”(hŒR(struct drm_dp_aux *aux, const struct drm_edp_backlight_info *bl, const u32 level)”h]”(jä)�”}”(hŒstruct drm_dp_aux *aux”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj!2h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj2ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.2h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj2ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(hj?2h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj<2ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jA2Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj2sbŒc.drm_edp_backlight_enable”†”asbuh1hhj2ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_2h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj2ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjm2h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj2ubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hjz2h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj2ubjä)�”}”(hŒ'const struct drm_edp_backlight_info *bl”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hj“2h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj�2ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj 2h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj�2ubjª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj®2h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj�2ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»2h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj�2ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_edp_backlight_info”h]”hŒdrm_edp_backlight_info”…”�”}”(hjÌ2h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÉ2ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jÎ2Œmodname”NŒ classname”Njé jì )�”}”jï ]”j[2Œc.drm_edp_backlight_enable”†”asbuh1hhj�2ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjê2h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj�2ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjø2h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�2ubjÓ )�”}”(hŒbl”h]”hŒbl”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj�2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj2ubjä)�”}”(hŒconst u32 level”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj3ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+3h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj3ubh)�”}”(hhh]”jÓ )�”}”(hŒu32”h]”hŒu32”…”�”}”(hj<3h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj93ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j>3Œmodname”NŒ classname”Njé jì )�”}”jï ]”j[2Œc.drm_edp_backlight_enable”†”asbuh1hhj3ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZ3h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj3ubjÓ )�”}”(hŒlevel”h]”hŒlevel”…”�”}”(hjh3h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj2ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjà1h²hh³jò1h´M°ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjÜ1h²hh³jò1h´M°ubah}”(h]”j×1ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jò1h´M°hjÙ1h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ*Enable an eDP panel's backlight using DPCD”h]”hŒ,Enable an eDP panel’s backlight using DPCD”…”�”}”(hj’3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M°hj�3h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÙ1h²hh³jò1h´M°ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jª3j$ jª3j% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hXì**Parameters** ``struct drm_dp_aux *aux`` The DP AUX channel to use ``const struct drm_edp_backlight_info *bl`` Backlight capability info from drm_edp_backlight_init() ``const u32 level`` The initial backlight level to set via AUX, if there is one **Description** This function handles enabling DPCD backlight controls on a panel over DPCD, while additionally restoring any important backlight state such as the given backlight level, the brightness byte count, backlight frequency, etc. Note that certain panels do not support being enabled or disabled via DPCD, but instead require that the driver handle enabling/disabling the panel through implementation-specific means using the EDP_BL_PWR GPIO. For such panels, :c:type:`drm_edp_backlight_info.aux_enable ` will be set to ``false``, this function becomes a no-op, and the driver is expected to handle powering the panel on using the EDP_BL_PWR GPIO. **Return** ``0`` on success, negative error code on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj´3h]”hŒ Parameters”…”�”}”(hj¶3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj²3ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M´hj®3ubjw )�”}”(hhh]”(j| )�”}”(hŒ5``struct drm_dp_aux *aux`` The DP AUX channel to use ”h]”(j‚ )�”}”(hŒ``struct drm_dp_aux *aux``”h]”jˆ )�”}”(hjÓ3h]”hŒstruct drm_dp_aux *aux”…”�”}”(hjÕ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÑ3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M±hjÍ3ubjž )�”}”(hhh]”hÎ)�”}”(hŒThe DP AUX channel to use”h]”hŒThe DP AUX channel to use”…”�”}”(hjì3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jè3h´M±hjé3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÍ3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jè3h´M±hjÊ3ubj| )�”}”(hŒd``const struct drm_edp_backlight_info *bl`` Backlight capability info from drm_edp_backlight_init() ”h]”(j‚ )�”}”(hŒ+``const struct drm_edp_backlight_info *bl``”h]”jˆ )�”}”(hj 4h]”hŒ'const struct drm_edp_backlight_info *bl”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj 4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M²hj4ubjž )�”}”(hhh]”hÎ)�”}”(hŒ7Backlight capability info from drm_edp_backlight_init()”h]”hŒ7Backlight capability info from drm_edp_backlight_init()”…”�”}”(hj%4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j!4h´M²hj"4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j!4h´M²hjÊ3ubj| )�”}”(hŒP``const u32 level`` The initial backlight level to set via AUX, if there is one ”h]”(j‚ )�”}”(hŒ``const u32 level``”h]”jˆ )�”}”(hjE4h]”hŒconst u32 level”…”�”}”(hjG4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjC4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M³hj?4ubjž )�”}”(hhh]”hÎ)�”}”(hŒ;The initial backlight level to set via AUX, if there is one”h]”hŒ;The initial backlight level to set via AUX, if there is one”…”�”}”(hj^4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jZ4h´M³hj[4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj?4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jZ4h´M³hjÊ3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj®3ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj€4h]”hŒ Description”…”�”}”(hj‚4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj~4ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mµhj®3ubhÎ)�”}”(hŒßThis function handles enabling DPCD backlight controls on a panel over DPCD, while additionally restoring any important backlight state such as the given backlight level, the brightness byte count, backlight frequency, etc.”h]”hŒßThis function handles enabling DPCD backlight controls on a panel over DPCD, while additionally restoring any important backlight state such as the given backlight level, the brightness byte count, backlight frequency, etc.”…”�”}”(hj–4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M´hj®3ubhÎ)�”}”(hX¹Note that certain panels do not support being enabled or disabled via DPCD, but instead require that the driver handle enabling/disabling the panel through implementation-specific means using the EDP_BL_PWR GPIO. For such panels, :c:type:`drm_edp_backlight_info.aux_enable ` will be set to ``false``, this function becomes a no-op, and the driver is expected to handle powering the panel on using the EDP_BL_PWR GPIO.”h]”(hŒæNote that certain panels do not support being enabled or disabled via DPCD, but instead require that the driver handle enabling/disabling the panel through implementation-specific means using the EDP_BL_PWR GPIO. For such panels, ”…”�”}”(hj¥4h²hh³Nh´Nubh)�”}”(hŒD:c:type:`drm_edp_backlight_info.aux_enable `”h]”jˆ )�”}”(hj¯4h]”hŒ!drm_edp_backlight_info.aux_enable”…”�”}”(hj±4h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj­4ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_edp_backlight_info”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M¸hj¥4ubhŒ will be set to ”…”�”}”(hj¥4h²hh³Nh´Nubjˆ )�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hjÑ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¥4ubhŒv, this function becomes a no-op, and the driver is expected to handle powering the panel on using the EDP_BL_PWR GPIO.”…”�”}”(hj¥4h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÌ4h´M¸hj®3ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjë4h]”hŒReturn”…”�”}”(hjí4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjé4ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M¾hj®3ubhÎ)�”}”(hŒ1``0`` on success, negative error code on failure.”h]”(jˆ )�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj5ubhŒ, on success, negative error code on failure.”…”�”}”(hj5h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M¿hj®3ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ&drm_edp_backlight_disable (C function)”Œc.drm_edp_backlight_disable”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ_int drm_edp_backlight_disable (struct drm_dp_aux *aux, const struct drm_edp_backlight_info *bl)”h]”j¤ )�”}”(hŒ^int drm_edp_backlight_disable(struct drm_dp_aux *aux, const struct drm_edp_backlight_info *bl)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj>5h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj:5h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Môubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjM5h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj:5h²hh³jL5h´MôubjÍ )�”}”(hŒdrm_edp_backlight_disable”h]”jÓ )�”}”(hŒdrm_edp_backlight_disable”h]”hŒdrm_edp_backlight_disable”…”�”}”(hj_5h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj[5ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj:5h²hh³jL5h´MôubjÞ)�”}”(hŒA(struct drm_dp_aux *aux, const struct drm_edp_backlight_info *bl)”h]”(jä)�”}”(hŒstruct drm_dp_aux *aux”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj{5h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjw5ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆ5h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjw5ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(hj™5h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj–5ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j›5Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jja5sbŒc.drm_edp_backlight_disable”†”asbuh1hhjw5ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹5h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjw5ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÇ5h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjw5ubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hjÔ5h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjw5ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjs5ubjä)�”}”(hŒ'const struct drm_edp_backlight_info *bl”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hjí5h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjé5ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjú5h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjé5ubjª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjé5ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjé5ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_edp_backlight_info”h]”hŒdrm_edp_backlight_info”…”�”}”(hj&6h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj#6ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j(6Œmodname”NŒ classname”Njé jì )�”}”jï ]”jµ5Œc.drm_edp_backlight_disable”†”asbuh1hhjé5ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjD6h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjé5ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjR6h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjé5ubjÓ )�”}”(hŒbl”h]”hŒbl”…”�”}”(hj_6h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjé5ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjs5ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj:5h²hh³jL5h´Môubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj65h²hh³jL5h´Môubah}”(h]”j15ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jL5h´Môhj35h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ1Disable an eDP backlight using DPCD, if supported”h]”hŒ1Disable an eDP backlight using DPCD, if supported”…”�”}”(hj‰6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Môhj†6h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj35h²hh³jL5h´Môubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j¡6j$ j¡6j% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hX**Parameters** ``struct drm_dp_aux *aux`` The DP AUX channel to use ``const struct drm_edp_backlight_info *bl`` Backlight capability info from drm_edp_backlight_init() **Description** This function handles disabling DPCD backlight controls on a panel over AUX. Note that certain panels do not support being enabled or disabled via DPCD, but instead require that the driver handle enabling/disabling the panel through implementation-specific means using the EDP_BL_PWR GPIO. For such panels, :c:type:`drm_edp_backlight_info.aux_enable ` will be set to ``false``, this function becomes a no-op, and the driver is expected to handle powering the panel off using the EDP_BL_PWR GPIO. **Return** ``0`` on success or no-op, negative error code on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj«6h]”hŒ Parameters”…”�”}”(hj­6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj©6ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Møhj¥6ubjw )�”}”(hhh]”(j| )�”}”(hŒ5``struct drm_dp_aux *aux`` The DP AUX channel to use ”h]”(j‚ )�”}”(hŒ``struct drm_dp_aux *aux``”h]”jˆ )�”}”(hjÊ6h]”hŒstruct drm_dp_aux *aux”…”�”}”(hjÌ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÈ6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MõhjÄ6ubjž )�”}”(hhh]”hÎ)�”}”(hŒThe DP AUX channel to use”h]”hŒThe DP AUX channel to use”…”�”}”(hjã6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jß6h´Mõhjà6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÄ6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jß6h´MõhjÁ6ubj| )�”}”(hŒd``const struct drm_edp_backlight_info *bl`` Backlight capability info from drm_edp_backlight_init() ”h]”(j‚ )�”}”(hŒ+``const struct drm_edp_backlight_info *bl``”h]”jˆ )�”}”(hj7h]”hŒ'const struct drm_edp_backlight_info *bl”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Möhjý6ubjž )�”}”(hhh]”hÎ)�”}”(hŒ7Backlight capability info from drm_edp_backlight_init()”h]”hŒ7Backlight capability info from drm_edp_backlight_init()”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j7h´Möhj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjý6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j7h´MöhjÁ6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj¥6ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj>7h]”hŒ Description”…”�”}”(hj@7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj<7ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Møhj¥6ubhÎ)�”}”(hŒLThis function handles disabling DPCD backlight controls on a panel over AUX.”h]”hŒLThis function handles disabling DPCD backlight controls on a panel over AUX.”…”�”}”(hjT7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M÷hj¥6ubhÎ)�”}”(hXºNote that certain panels do not support being enabled or disabled via DPCD, but instead require that the driver handle enabling/disabling the panel through implementation-specific means using the EDP_BL_PWR GPIO. For such panels, :c:type:`drm_edp_backlight_info.aux_enable ` will be set to ``false``, this function becomes a no-op, and the driver is expected to handle powering the panel off using the EDP_BL_PWR GPIO.”h]”(hŒæNote that certain panels do not support being enabled or disabled via DPCD, but instead require that the driver handle enabling/disabling the panel through implementation-specific means using the EDP_BL_PWR GPIO. For such panels, ”…”�”}”(hjc7h²hh³Nh´Nubh)�”}”(hŒD:c:type:`drm_edp_backlight_info.aux_enable `”h]”jˆ )�”}”(hjm7h]”hŒ!drm_edp_backlight_info.aux_enable”…”�”}”(hjo7h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjk7ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_edp_backlight_info”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mùhjc7ubhŒ will be set to ”…”�”}”(hjc7h²hh³Nh´Nubjˆ )�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hj�7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjc7ubhŒw, this function becomes a no-op, and the driver is expected to handle powering the panel off using the EDP_BL_PWR GPIO.”…”�”}”(hjc7h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jŠ7h´Mùhj¥6ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj©7h]”hŒReturn”…”�”}”(hj«7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj§7ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mÿhj¥6ubhÎ)�”}”(hŒ:``0`` on success or no-op, negative error code on failure.”h]”(jˆ )�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hjÃ7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¿7ubhŒ5 on success or no-op, negative error code on failure.”…”�”}”(hj¿7h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mhj¥6ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ#drm_edp_backlight_init (C function)”Œc.drm_edp_backlight_init”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒéint drm_edp_backlight_init (struct drm_dp_aux *aux, struct drm_edp_backlight_info *bl, u32 max_luminance, u16 driver_pwm_freq_hz, const u8 edp_dpcd[EDP_DISPLAY_CTL_CAP_SIZE], u32 *current_level, u8 *current_mode, bool need_luminance)”h]”j¤ )�”}”(hŒèint drm_edp_backlight_init(struct drm_dp_aux *aux, struct drm_edp_backlight_info *bl, u32 max_luminance, u16 driver_pwm_freq_hz, const u8 edp_dpcd[EDP_DISPLAY_CTL_CAP_SIZE], u32 *current_level, u8 *current_mode, bool need_luminance)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjü7h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjø7h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MÉubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj 8h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjø7h²hh³j 8h´MÉubjÍ )�”}”(hŒdrm_edp_backlight_init”h]”jÓ )�”}”(hŒdrm_edp_backlight_init”h]”hŒdrm_edp_backlight_init”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj8ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjø7h²hh³j 8h´MÉubjÞ)�”}”(hŒÎ(struct drm_dp_aux *aux, struct drm_edp_backlight_info *bl, u32 max_luminance, u16 driver_pwm_freq_hz, const u8 edp_dpcd[EDP_DISPLAY_CTL_CAP_SIZE], u32 *current_level, u8 *current_mode, bool need_luminance)”h]”(jä)�”}”(hŒstruct drm_dp_aux *aux”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj98h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj58ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjF8h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj58ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(hjW8h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjT8ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jY8Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj8sbŒc.drm_edp_backlight_init”†”asbuh1hhj58ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjw8h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj58ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj…8h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj58ubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hj’8h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj58ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj18ubjä)�”}”(hŒ!struct drm_edp_backlight_info *bl”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj«8h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj§8ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸8h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj§8ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_edp_backlight_info”h]”hŒdrm_edp_backlight_info”…”�”}”(hjÉ8h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÆ8ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jË8Œmodname”NŒ classname”Njé jì )�”}”jï ]”js8Œc.drm_edp_backlight_init”†”asbuh1hhj§8ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjç8h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj§8ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjõ8h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj§8ubjÓ )�”}”(hŒbl”h]”hŒbl”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj§8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj18ubjä)�”}”(hŒu32 max_luminance”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu32”h]”hŒu32”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj9ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j 9Œmodname”NŒ classname”Njé jì )�”}”jï ]”js8Œc.drm_edp_backlight_init”†”asbuh1hhj9ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<9h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj9ubjÓ )�”}”(hŒ max_luminance”h]”hŒ max_luminance”…”�”}”(hjJ9h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj18ubjä)�”}”(hŒu16 driver_pwm_freq_hz”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu16”h]”hŒu16”…”�”}”(hjf9h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjc9ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jh9Œmodname”NŒ classname”Njé jì )�”}”jï ]”js8Œc.drm_edp_backlight_init”†”asbuh1hhj_9ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„9h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj_9ubjÓ )�”}”(hŒdriver_pwm_freq_hz”h]”hŒdriver_pwm_freq_hz”…”�”}”(hj’9h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj_9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”• ˆjê jë uh1jãhj18ubjä)�”}”(hŒ+const u8 edp_dpcd[EDP_DISPLAY_CTL_CAP_SIZE]”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hj«9h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj§9ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸9h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj§9ubh)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(hjÉ9h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÆ9ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jË9Œmodname”NŒ classname”Njé jì )�”}”jï ]”js8Œc.drm_edp_backlight_init”†”asbuh1hhj§9ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjç9h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj§9ubjÓ )�”}”(hŒedp_dpcd”h]”hŒedp_dpcd”…”�”}”(hjõ9h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj§9ubj9)�”}”(hjMh]”hŒ[”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj§9ubh)�”}”(hhh]”jÓ )�”}”(hŒEDP_DISPLAY_CTL_CAP_SIZE”h]”hŒEDP_DISPLAY_CTL_CAP_SIZE”…”�”}”(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ï ]”js8Œc.drm_edp_backlight_init”†”asbuh1hhj§9ubj9)�”}”(hj=Mh]”hŒ]”…”�”}”(hj1:h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj§9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj18ubjä)�”}”(hŒu32 *current_level”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu32”h]”hŒu32”…”�”}”(hjL:h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjI:ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jN:Œmodname”NŒ classname”Njé jì )�”}”jï ]”js8Œc.drm_edp_backlight_init”†”asbuh1hhjE:ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjj:h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjE:ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjx:h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjE:ubjÓ )�”}”(hŒ current_level”h]”hŒ current_level”…”�”}”(hj…:h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjE:ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj18ubjä)�”}”(hŒu8 *current_mode”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(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ï ]”js8Œc.drm_edp_backlight_init”†”asbuh1hhjš:ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿:h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjš:ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÍ:h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjš:ubjÓ )�”}”(hŒ current_mode”h]”hŒ current_mode”…”�”}”(hjÚ:h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjš:ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj18ubjä)�”}”(hŒbool need_luminance”h]”(j¦)�”}”(hj£Ih]”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Œneed_luminance”h]”hŒneed_luminance”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjï:ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj18ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjø7h²hh³j 8h´MÉubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjô7h²hh³j 8h´MÉubah}”(h]”jï7ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j 8h´MÉhjñ7h²hubj )�”}”(hhh]”hÎ)�”}”(hŒMProbe a display panel's TCON using the standard VESA eDP backlight interface.”h]”hŒOProbe a display panel’s TCON using the standard VESA eDP backlight interface.”…”�”}”(hj8;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MÉhj5;h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjñ7h²hh³j 8h´MÉubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jP;j$ jP;j% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hXN**Parameters** ``struct drm_dp_aux *aux`` The DP aux device to use for probing ``struct drm_edp_backlight_info *bl`` The :c:type:`drm_edp_backlight_info` struct to fill out with information on the backlight ``u32 max_luminance`` max luminance when need luminance is set as true ``u16 driver_pwm_freq_hz`` Optional PWM frequency from the driver in hz ``const u8 edp_dpcd[EDP_DISPLAY_CTL_CAP_SIZE]`` A cached copy of the eDP DPCD ``u32 *current_level`` Where to store the probed brightness level, if any ``u8 *current_mode`` Where to store the currently set backlight control mode ``bool need_luminance`` Tells us if a we want to manipulate backlight using luminance values **Description** Initializes a :c:type:`drm_edp_backlight_info` struct by probing **aux** for it's backlight capabilities, along with also probing the current and maximum supported brightness levels. If **driver_pwm_freq_hz** is non-zero, this will be used as the backlight frequency. Otherwise, the default frequency from the panel is used. **Return** ``0`` on success, negative error code on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjZ;h]”hŒ Parameters”…”�”}”(hj\;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjX;ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MÍhjT;ubjw )�”}”(hhh]”(j| )�”}”(hŒ@``struct drm_dp_aux *aux`` The DP aux device to use for probing ”h]”(j‚ )�”}”(hŒ``struct drm_dp_aux *aux``”h]”jˆ )�”}”(hjy;h]”hŒstruct drm_dp_aux *aux”…”�”}”(hj{;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjw;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MËhjs;ubjž )�”}”(hhh]”hÎ)�”}”(hŒ$The DP aux device to use for probing”h]”hŒ$The DP aux device to use for probing”…”�”}”(hj’;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jŽ;h´MËhj�;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjs;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jŽ;h´MËhjp;ubj| )�”}”(hŒ€``struct drm_edp_backlight_info *bl`` The :c:type:`drm_edp_backlight_info` struct to fill out with information on the backlight ”h]”(j‚ )�”}”(hŒ%``struct drm_edp_backlight_info *bl``”h]”jˆ )�”}”(hj²;h]”hŒ!struct drm_edp_backlight_info *bl”…”�”}”(hj´;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj°;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MÌhj¬;ubjž )�”}”(hhh]”hÎ)�”}”(hŒYThe :c:type:`drm_edp_backlight_info` struct to fill out with information on the backlight”h]”(hŒThe ”…”�”}”(hjË;h²hh³Nh´Nubh)�”}”(hŒ :c:type:`drm_edp_backlight_info`”h]”jˆ )�”}”(hjÕ;h]”hŒdrm_edp_backlight_info”…”�”}”(hj×;h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÓ;ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_edp_backlight_info”uh1hh³jÇ;h´MÌhjË;ubhŒ5 struct to fill out with information on the backlight”…”�”}”(hjË;h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÇ;h´MÌhjÈ;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¬;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÇ;h´MÌhjp;ubj| )�”}”(hŒG``u32 max_luminance`` max luminance when need luminance is set as true ”h]”(j‚ )�”}”(hŒ``u32 max_luminance``”h]”jˆ )�”}”(hj<h]”hŒu32 max_luminance”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj <ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MÍhj<ubjž )�”}”(hhh]”hÎ)�”}”(hŒ0max luminance when need luminance is set as true”h]”hŒ0max luminance when need luminance is set as true”…”�”}”(hj'<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j#<h´MÍhj$<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j#<h´MÍhjp;ubj| )�”}”(hŒH``u16 driver_pwm_freq_hz`` Optional PWM frequency from the driver in hz ”h]”(j‚ )�”}”(hŒ``u16 driver_pwm_freq_hz``”h]”jˆ )�”}”(hjG<h]”hŒu16 driver_pwm_freq_hz”…”�”}”(hjI<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjE<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MÎhjA<ubjž )�”}”(hhh]”hÎ)�”}”(hŒ,Optional PWM frequency from the driver in hz”h]”hŒ,Optional PWM frequency from the driver in hz”…”�”}”(hj`<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j\<h´MÎhj]<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjA<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j\<h´MÎhjp;ubj| )�”}”(hŒN``const u8 edp_dpcd[EDP_DISPLAY_CTL_CAP_SIZE]`` A cached copy of the eDP DPCD ”h]”(j‚ )�”}”(hŒ/``const u8 edp_dpcd[EDP_DISPLAY_CTL_CAP_SIZE]``”h]”jˆ )�”}”(hj€<h]”hŒ+const u8 edp_dpcd[EDP_DISPLAY_CTL_CAP_SIZE]”…”�”}”(hj‚<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj~<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MÏhjz<ubjž )�”}”(hhh]”hÎ)�”}”(hŒA cached copy of the eDP DPCD”h]”hŒA cached copy of the eDP DPCD”…”�”}”(hj™<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j•<h´MÏhj–<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjz<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j•<h´MÏhjp;ubj| )�”}”(hŒJ``u32 *current_level`` Where to store the probed brightness level, if any ”h]”(j‚ )�”}”(hŒ``u32 *current_level``”h]”jˆ )�”}”(hj¹<h]”hŒu32 *current_level”…”�”}”(hj»<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj·<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MÐhj³<ubjž )�”}”(hhh]”hÎ)�”}”(hŒ2Where to store the probed brightness level, if any”h]”hŒ2Where to store the probed brightness level, if any”…”�”}”(hjÒ<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÎ<h´MÐhjÏ<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj³<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÎ<h´MÐhjp;ubj| )�”}”(hŒM``u8 *current_mode`` Where to store the currently set backlight control mode ”h]”(j‚ )�”}”(hŒ``u8 *current_mode``”h]”jˆ )�”}”(hjò<h]”hŒu8 *current_mode”…”�”}”(hjô<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjð<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MÑhjì<ubjž )�”}”(hhh]”hÎ)�”}”(hŒ7Where to store the currently set backlight control mode”h]”hŒ7Where to store the currently set backlight control mode”…”�”}”(hj =h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j=h´MÑhj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjì<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j=h´MÑhjp;ubj| )�”}”(hŒ]``bool need_luminance`` Tells us if a we want to manipulate backlight using luminance values ”h]”(j‚ )�”}”(hŒ``bool need_luminance``”h]”jˆ )�”}”(hj+=h]”hŒbool need_luminance”…”�”}”(hj-=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj)=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MÒhj%=ubjž )�”}”(hhh]”hÎ)�”}”(hŒDTells us if a we want to manipulate backlight using luminance values”h]”hŒDTells us if a we want to manipulate backlight using luminance values”…”�”}”(hjD=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j@=h´MÒhjA=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj%=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j@=h´MÒhjp;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjT;ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjf=h]”hŒ Description”…”�”}”(hjh=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjd=ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MÔhjT;ubhÎ)�”}”(hŒ¶Initializes a :c:type:`drm_edp_backlight_info` struct by probing **aux** for it's backlight capabilities, along with also probing the current and maximum supported brightness levels.”h]”(hŒInitializes a ”…”�”}”(hj|=h²hh³Nh´Nubh)�”}”(hŒ :c:type:`drm_edp_backlight_info`”h]”jˆ )�”}”(hj†=h]”hŒdrm_edp_backlight_info”…”�”}”(hjˆ=h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj„=ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_edp_backlight_info”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MÓhj|=ubhŒ struct by probing ”…”�”}”(hj|=h²hh³Nh´Nubj3 )�”}”(hŒ**aux**”h]”hŒaux”…”�”}”(hj¨=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj|=ubhŒp for it’s backlight capabilities, along with also probing the current and maximum supported brightness levels.”…”�”}”(hj|=h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j£=h´MÓhjT;ubhÎ)�”}”(hŒ�If **driver_pwm_freq_hz** is non-zero, this will be used as the backlight frequency. Otherwise, the default frequency from the panel is used.”h]”(hŒIf ”…”�”}”(hjÀ=h²hh³Nh´Nubj3 )�”}”(hŒ**driver_pwm_freq_hz**”h]”hŒdriver_pwm_freq_hz”…”�”}”(hjÈ=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÀ=ubhŒt is non-zero, this will be used as the backlight frequency. Otherwise, the default frequency from the panel is used.”…”�”}”(hjÀ=h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MÖhjT;ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjã=h]”hŒReturn”…”�”}”(hjå=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjá=ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MÙhjT;ubhÎ)�”}”(hŒ1``0`` on success, negative error code on failure.”h]”(jˆ )�”}”(hŒ``0``”h]”hŒ0”…”�”}”(hjý=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjù=ubhŒ, on success, negative error code on failure.”…”�”}”(hjù=h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MÚhjT;ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ'drm_panel_dp_aux_backlight (C function)”Œc.drm_panel_dp_aux_backlight”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒPint drm_panel_dp_aux_backlight (struct drm_panel *panel, struct drm_dp_aux *aux)”h]”j¤ )�”}”(hŒOint drm_panel_dp_aux_backlight(struct drm_panel *panel, struct drm_dp_aux *aux)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj6>h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj2>h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M3ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjE>h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj2>h²hh³jD>h´M3ubjÍ )�”}”(hŒdrm_panel_dp_aux_backlight”h]”jÓ )�”}”(hŒdrm_panel_dp_aux_backlight”h]”hŒdrm_panel_dp_aux_backlight”…”�”}”(hjW>h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjS>ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj2>h²hh³jD>h´M3ubjÞ)�”}”(hŒ1(struct drm_panel *panel, struct drm_dp_aux *aux)”h]”(jä)�”}”(hŒstruct drm_panel *panel”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjs>h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjo>ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€>h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjo>ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_panel”h]”hŒ drm_panel”…”�”}”(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%)�”}”jjY>sbŒc.drm_panel_dp_aux_backlight”†”asbuh1hhjo>ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±>h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjo>ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj¿>h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjo>ubjÓ )�”}”(hŒpanel”h]”hŒpanel”…”�”}”(hjÌ>h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjo>ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjk>ubjä)�”}”(hŒstruct drm_dp_aux *aux”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Œ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(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.drm_panel_dp_aux_backlight”†”asbuh1hhjá>ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!?h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjá>ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj/?h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjá>ubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjk>ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj2>h²hh³jD>h´M3ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj.>h²hh³jD>h´M3ubah}”(h]”j)>ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jD>h´M3hj+>h²hubj )�”}”(hhh]”hÎ)�”}”(hŒcreate and use DP AUX backlight”h]”hŒcreate and use DP AUX backlight”…”�”}”(hjf?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M3hjc?h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj+>h²hh³jD>h´M3ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j~?j$ j~?j% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hX_**Parameters** ``struct drm_panel *panel`` DRM panel ``struct drm_dp_aux *aux`` The DP AUX channel to use **Description** Use this function to create and handle backlight if your panel supports backlight control over DP AUX channel using DPCD registers as per VESA's standard backlight control interface. When the panel is enabled backlight will be enabled after a successful call to :c:type:`drm_panel_funcs.enable\(\) ` When the panel is disabled backlight will be disabled before the call to :c:type:`drm_panel_funcs.disable\(\) `. A typical implementation for a panel driver supporting backlight control over DP AUX will call this function at probe time. Backlight will then be handled transparently without requiring any intervention from the driver. **Return** 0 on success or a negative error code on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjˆ?h]”hŒ Parameters”…”�”}”(hjŠ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj†?ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M7hj‚?ubjw )�”}”(hhh]”(j| )�”}”(hŒ&``struct drm_panel *panel`` DRM panel ”h]”(j‚ )�”}”(hŒ``struct drm_panel *panel``”h]”jˆ )�”}”(hj§?h]”hŒstruct drm_panel *panel”…”�”}”(hj©?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¥?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M4hj¡?ubjž )�”}”(hhh]”hÎ)�”}”(hŒ DRM panel”h]”hŒ DRM panel”…”�”}”(hjÀ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¼?h´M4hj½?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¡?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¼?h´M4hjž?ubj| )�”}”(hŒ5``struct drm_dp_aux *aux`` The DP AUX channel to use ”h]”(j‚ )�”}”(hŒ``struct drm_dp_aux *aux``”h]”jˆ )�”}”(hjà?h]”hŒstruct drm_dp_aux *aux”…”�”}”(hjâ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÞ?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M5hjÚ?ubjž )�”}”(hhh]”hÎ)�”}”(hŒThe DP AUX channel to use”h]”hŒThe DP AUX channel to use”…”�”}”(hjù?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jõ?h´M5hjö?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÚ?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jõ?h´M5hjž?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj‚?ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj@h]”hŒ Description”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj@ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M7hj‚?ubhÎ)�”}”(hŒ¶Use this function to create and handle backlight if your panel supports backlight control over DP AUX channel using DPCD registers as per VESA's standard backlight control interface.”h]”hŒ¸Use this function to create and handle backlight if your panel supports backlight control over DP AUX channel using DPCD registers as per VESA’s standard backlight control interface.”…”�”}”(hj1@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M6hj‚?ubhÎ)�”}”(hŒ…When the panel is enabled backlight will be enabled after a successful call to :c:type:`drm_panel_funcs.enable\(\) `”h]”(hŒOWhen the panel is enabled backlight will be enabled after a successful call to ”…”�”}”(hj@@h²hh³Nh´Nubh)�”}”(hŒ6:c:type:`drm_panel_funcs.enable\(\) `”h]”jˆ )�”}”(hjJ@h]”hŒdrm_panel_funcs.enable()”…”�”}”(hjL@h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjH@ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_panel_funcs”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M:hj@@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jg@h´M:hj‚?ubhÎ)�”}”(hŒ�When the panel is disabled backlight will be disabled before the call to :c:type:`drm_panel_funcs.disable\(\) `.”h]”(hŒIWhen the panel is disabled backlight will be disabled before the call to ”…”�”}”(hjn@h²hh³Nh´Nubh)�”}”(hŒ7:c:type:`drm_panel_funcs.disable\(\) `”h]”jˆ )�”}”(hjx@h]”hŒdrm_panel_funcs.disable()”…”�”}”(hjz@h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjv@ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_panel_funcs”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M=hjn@ubhŒ.”…”�”}”(hjn@h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j•@h´M=hj‚?ubhÎ)�”}”(hŒÜA typical implementation for a panel driver supporting backlight control over DP AUX will call this function at probe time. Backlight will then be handled transparently without requiring any intervention from the driver.”h]”hŒÜA typical implementation for a panel driver supporting backlight control over DP AUX will call this function at probe time. Backlight will then be handled transparently without requiring any intervention from the driver.”…”�”}”(hj @h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M@hj‚?ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj±@h]”hŒReturn”…”�”}”(hj³@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¯@ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MEhj‚?ubhÎ)�”}”(hŒ10 on success or a negative error code on failure.”h]”hŒ10 on success or a negative error code on failure.”…”�”}”(hjÇ@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MFhj‚?ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ&drm_dp_link_symbol_cycles (C function)”Œc.drm_dp_link_symbol_cycles”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒzint drm_dp_link_symbol_cycles (int lane_count, int pixels, int dsc_slice_count, int bpp_x16, int symbol_size, bool is_mst)”h]”j¤ )�”}”(hŒyint drm_dp_link_symbol_cycles(int lane_count, int pixels, int dsc_slice_count, int bpp_x16, int symbol_size, bool is_mst)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjö@h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjò@h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M‰ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjò@h²hh³jAh´M‰ubjÍ )�”}”(hŒdrm_dp_link_symbol_cycles”h]”jÓ )�”}”(hŒdrm_dp_link_symbol_cycles”h]”hŒdrm_dp_link_symbol_cycles”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjAubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjò@h²hh³jAh´M‰ubjÞ)�”}”(hŒ\(int lane_count, int pixels, int dsc_slice_count, int bpp_x16, int symbol_size, bool is_mst)”h]”(jä)�”}”(hŒint lane_count”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj3Ah²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj/Aubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjAAh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj/AubjÓ )�”}”(hŒ lane_count”h]”hŒ lane_count”…”�”}”(hjOAh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj/Aubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj+Aubjä)�”}”(hŒ int pixels”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjhAh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjdAubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvAh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjdAubjÓ )�”}”(hŒpixels”h]”hŒpixels”…”�”}”(hj„Ah²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjdAubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj+Aubjä)�”}”(hŒint dsc_slice_count”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj�Ah²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj™Aubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«Ah²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj™AubjÓ )�”}”(hŒdsc_slice_count”h]”hŒdsc_slice_count”…”�”}”(hj¹Ah²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj™Aubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj+Aubjä)�”}”(hŒ int bpp_x16”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjÒAh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjÎAubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjàAh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÎAubjÓ )�”}”(hŒbpp_x16”h]”hŒbpp_x16”…”�”}”(hjîAh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÎAubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj+Aubjä)�”}”(hŒint symbol_size”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjBubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjBubjÓ )�”}”(hŒ symbol_size”h]”hŒ symbol_size”…”�”}”(hj#Bh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjBubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj+Aubjä)�”}”(hŒ bool is_mst”h]”(j¦)�”}”(hj£Ih]”hŒbool”…”�”}”(hjpixel count of the active period in one scanline of the stream”h]”hŒ>pixel count of the active period in one scanline of the stream”…”�”}”(hj©Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¥Fh´Mªhj¦Fubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjŠFubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¥Fh´MªhjNFubj| )�”}”(hŒD``int dsc_slice_count`` number of slices for DSC or '0' for non-DSC ”h]”(j‚ )�”}”(hŒ``int dsc_slice_count``”h]”jˆ )�”}”(hjÉFh]”hŒint dsc_slice_count”…”�”}”(hjËFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÇFubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M«hjÃFubjž )�”}”(hhh]”hÎ)�”}”(hŒ+number of slices for DSC or '0' for non-DSC”h]”hŒ/number of slices for DSC or ‘0’ for non-DSC”…”�”}”(hjâFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÞFh´M«hjßFubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÃFubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÞFh´M«hjNFubj| )�”}”(hŒ8``int bpp_x16`` bits per pixel in .4 binary fixed point ”h]”(j‚ )�”}”(hŒ``int bpp_x16``”h]”jˆ )�”}”(hjGh]”hŒ int bpp_x16”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjGubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M¬hjüFubjž )�”}”(hhh]”hÎ)�”}”(hŒ'bits per pixel in .4 binary fixed point”h]”hŒ'bits per pixel in .4 binary fixed point”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jGh´M¬hjGubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjüFubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jGh´M¬hjNFubj| )�”}”(hŒ0``unsigned long flags`` DRM_DP_OVERHEAD_x flags ”h]”(j‚ )�”}”(hŒ``unsigned long flags``”h]”jˆ )�”}”(hj;Gh]”hŒunsigned long flags”…”�”}”(hj=Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj9Gubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M­hj5Gubjž )�”}”(hhh]”hÎ)�”}”(hŒDRM_DP_OVERHEAD_x flags”h]”hŒDRM_DP_OVERHEAD_x flags”…”�”}”(hjTGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jPGh´M­hjQGubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj5Gubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jPGh´M­hjNFubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj2FubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjvGh]”hŒ Description”…”�”}”(hjxGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjtGubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M¯hj2FubhÎ)�”}”(hXOCalculate the BW allocation overhead of a DP link stream, depending on the link's - **lane_count** - SST/MST mode (**flags** / ``DRM_DP_OVERHEAD_MST``) - symbol size (**flags** / ``DRM_DP_OVERHEAD_UHBR``) - FEC mode (**flags** / ``DRM_DP_OVERHEAD_FEC``) - SSC/REF_CLK mode (**flags** / ``DRM_DP_OVERHEAD_SSC_REF_CLK``) as well as the stream's - **hactive** timing - **bpp_x16** color depth - compression mode (**dsc_slice_count** != 0) Note that this overhead doesn't account for the 8b/10b, 128b/132b channel coding efficiency, for that see **drm_dp_link_bw_channel_coding_efficiency\(\)**.”h]”(hŒVCalculate the BW allocation overhead of a DP link stream, depending on the link’s - ”…”�”}”(hjŒGh²hh³Nh´Nubj3 )�”}”(hŒ**lane_count**”h]”hŒ lane_count”…”�”}”(hj”Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjŒGubhŒ - SST/MST mode (”…”�”}”(hjŒGh²hh³Nh´Nubj3 )�”}”(hŒ **flags**”h]”hŒflags”…”�”}”(hj¦Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjŒGubhŒ / ”…”�”}”(hjŒGh²hh³Nh´Nubjˆ )�”}”(hŒ``DRM_DP_OVERHEAD_MST``”h]”hŒDRM_DP_OVERHEAD_MST”…”�”}”(hj¸Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjŒGubhŒ) - symbol size (”…”�”}”(hjŒGh²hh³Nh´Nubj3 )�”}”(hŒ **flags**”h]”hŒflags”…”�”}”(hjÊGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjŒGubhŒ / ”…”�”}”hjŒGsbjˆ )�”}”(hŒ``DRM_DP_OVERHEAD_UHBR``”h]”hŒDRM_DP_OVERHEAD_UHBR”…”�”}”(hjÜGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjŒGubhŒ) - FEC mode (”…”�”}”(hjŒGh²hh³Nh´Nubj3 )�”}”(hŒ **flags**”h]”hŒflags”…”�”}”(hjîGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjŒGubhŒ / ”…”�”}”hjŒGsbjˆ )�”}”(hŒ``DRM_DP_OVERHEAD_FEC``”h]”hŒDRM_DP_OVERHEAD_FEC”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjŒGubhŒ) - SSC/REF_CLK mode (”…”�”}”(hjŒGh²hh³Nh´Nubj3 )�”}”(hŒ **flags**”h]”hŒflags”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjŒGubhŒ / ”…”�”}”hjŒGsbjˆ )�”}”(hŒ``DRM_DP_OVERHEAD_SSC_REF_CLK``”h]”hŒDRM_DP_OVERHEAD_SSC_REF_CLK”…”�”}”(hj$Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjŒGubhŒ) as well as the stream’s - ”…”�”}”(hjŒGh²hh³Nh´Nubj3 )�”}”(hŒ **hactive**”h]”hŒhactive”…”�”}”(hj6Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjŒGubhŒ timing - ”…”�”}”(hjŒGh²hh³Nh´Nubj3 )�”}”(hŒ **bpp_x16**”h]”hŒbpp_x16”…”�”}”(hjHHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjŒGubhŒ! color depth - compression mode (”…”�”}”(hjŒGh²hh³Nh´Nubj3 )�”}”(hŒ**dsc_slice_count**”h]”hŒdsc_slice_count”…”�”}”(hjZHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjŒGubhŒs != 0) Note that this overhead doesn’t account for the 8b/10b, 128b/132b channel coding efficiency, for that see ”…”�”}”(hjŒGh²hh³Nh´Nubj3 )�”}”(hŒ0**drm_dp_link_bw_channel_coding_efficiency\(\)**”h]”hŒ,drm_dp_link_bw_channel_coding_efficiency()”…”�”}”(hjlHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjŒGubhŒ.”…”�”}”(hjŒGh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M®hj2FubhÎ)�”}”(hŒ7Returns the overhead as 100% + overhead% in 1ppm units.”h]”hŒ7Returns the overhead as 100% + overhead% in 1ppm units.”…”�”}”(hj…Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M½hj2Fubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ0drm_dp_bw_channel_coding_efficiency (C function)”Œ%c.drm_dp_bw_channel_coding_efficiency”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ6int drm_dp_bw_channel_coding_efficiency (bool is_uhbr)”h]”j¤ )�”}”(hŒ5int drm_dp_bw_channel_coding_efficiency(bool is_uhbr)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj´Hh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj°Hh²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Müubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃHh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj°Hh²hh³jÂHh´MüubjÍ )�”}”(hŒ#drm_dp_bw_channel_coding_efficiency”h]”jÓ )�”}”(hŒ#drm_dp_bw_channel_coding_efficiency”h]”hŒ#drm_dp_bw_channel_coding_efficiency”…”�”}”(hjÕHh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÑHubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj°Hh²hh³jÂHh´MüubjÞ)�”}”(hŒ(bool is_uhbr)”h]”jä)�”}”(hŒ bool is_uhbr”h]”(j¦)�”}”(hj£Ih]”hŒbool”…”�”}”(hjñHh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjíHubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþHh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjíHubjÓ )�”}”(hŒis_uhbr”h]”hŒis_uhbr”…”�”}”(hj Ih²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjíHubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjéHubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj°Hh²hh³jÂHh´Müubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj¬Hh²hh³jÂHh´Müubah}”(h]”j§Hah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jÂHh´Mühj©Hh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ)Get a DP link's channel coding efficiency”h]”hŒ+Get a DP link’s channel coding efficiency”…”�”}”(hj6Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mühj3Ih²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj©Hh²hh³jÂHh´Müubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jNIj$ jNIj% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hX‰**Parameters** ``bool is_uhbr`` Whether the link has a 128b/132b channel coding **Description** Return the channel coding efficiency of the given DP link type, which is either 8b/10b or 128b/132b (aka UHBR). The corresponding overhead includes the 8b -> 10b, 128b -> 132b pixel data to link symbol conversion overhead and for 128b/132b any link or PHY level control symbol insertion overhead (LLCP, FEC, PHY sync, see DP Standard v2.1 3.5.2.18). For 8b/10b the corresponding FEC overhead is BW allocation specific, included in the value returned by drm_dp_bw_overhead(). Returns the efficiency in the 100%/coding-overhead% ratio in 1ppm units.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjXIh]”hŒ Parameters”…”�”}”(hjZIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjVIubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MhjRIubjw )�”}”(hhh]”j| )�”}”(hŒA``bool is_uhbr`` Whether the link has a 128b/132b channel coding ”h]”(j‚ )�”}”(hŒ``bool is_uhbr``”h]”jˆ )�”}”(hjwIh]”hŒ bool is_uhbr”…”�”}”(hjyIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjuIubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MýhjqIubjž )�”}”(hhh]”hÎ)�”}”(hŒ/Whether the link has a 128b/132b channel coding”h]”hŒ/Whether the link has a 128b/132b channel coding”…”�”}”(hj�Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jŒIh´Mýhj�Iubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjqIubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jŒIh´MýhjnIubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjRIubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj²Ih]”hŒ Description”…”�”}”(hj´Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj°Iubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MÿhjRIubhÎ)�”}”(hXÚReturn the channel coding efficiency of the given DP link type, which is either 8b/10b or 128b/132b (aka UHBR). The corresponding overhead includes the 8b -> 10b, 128b -> 132b pixel data to link symbol conversion overhead and for 128b/132b any link or PHY level control symbol insertion overhead (LLCP, FEC, PHY sync, see DP Standard v2.1 3.5.2.18). For 8b/10b the corresponding FEC overhead is BW allocation specific, included in the value returned by drm_dp_bw_overhead().”h]”hXÚReturn the channel coding efficiency of the given DP link type, which is either 8b/10b or 128b/132b (aka UHBR). The corresponding overhead includes the 8b -> 10b, 128b -> 132b pixel data to link symbol conversion overhead and for 128b/132b any link or PHY level control symbol insertion overhead (LLCP, FEC, PHY sync, see DP Standard v2.1 3.5.2.18). For 8b/10b the corresponding FEC overhead is BW allocation specific, included in the value returned by drm_dp_bw_overhead().”…”�”}”(hjÈIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MþhjRIubhÎ)�”}”(hŒHReturns the efficiency in the 100%/coding-overhead% ratio in 1ppm units.”h]”hŒHReturns the efficiency in the 100%/coding-overhead% ratio in 1ppm units.”…”�”}”(hj×Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MhjRIubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ&drm_dp_max_dprx_data_rate (C function)”Œc.drm_dp_max_dprx_data_rate”hNt”auh1j† hjÎ9h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ@int drm_dp_max_dprx_data_rate (int max_link_rate, int max_lanes)”h]”j¤ )�”}”(hŒ?int drm_dp_max_dprx_data_rate(int max_link_rate, int max_lanes)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjJh²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjJh²hh³jJh´MubjÍ )�”}”(hŒdrm_dp_max_dprx_data_rate”h]”jÓ )�”}”(hŒdrm_dp_max_dprx_data_rate”h]”hŒdrm_dp_max_dprx_data_rate”…”�”}”(hj'Jh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj#Jubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjJh²hh³jJh´MubjÞ)�”}”(hŒ"(int max_link_rate, int max_lanes)”h]”(jä)�”}”(hŒint max_link_rate”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjCJh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj?Jubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQJh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj?JubjÓ )�”}”(hŒ max_link_rate”h]”hŒ max_link_rate”…”�”}”(hj_Jh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj?Jubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj;Jubjä)�”}”(hŒ int max_lanes”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjxJh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjtJubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†Jh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjtJubjÓ )�”}”(hŒ max_lanes”h]”hŒ max_lanes”…”�”}”(hj”Jh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjtJubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj;Jubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjJh²hh³jJh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjþIh²hh³jJh´Mubah}”(h]”jùIah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jJh´MhjûIh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ)Get the max data bandwidth of a DPRX sink”h]”hŒ)Get the max data bandwidth of a DPRX sink”…”�”}”(hj¾Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mhj»Jh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjûIh²hh³jJh´Mubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jÖJj$ jÖJj% ‰j& ‰j' ‰uh1j˜ h²hhjÎ9h³Nh´Nubj) )�”}”(hX**Parameters** ``int max_link_rate`` max DPRX link rate in 10kbps units ``int max_lanes`` max DPRX lane count **Description** Given a link rate and lanes, get the data bandwidth. Data bandwidth is the actual payload rate, which depends on the data bandwidth efficiency and the link rate. Note that protocol layers above the DPRX link level considered here can further limit the maximum data rate. Such layers are the MST topology (with limits on the link between the source and first branch device as well as on the whole MST path until the DPRX link) and (Thunderbolt) DP tunnels - which in turn can encapsulate an MST link with its own limit - with each SST or MST encapsulated tunnel sharing the BW of a tunnel group. Returns the maximum data rate in kBps units.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjàJh]”hŒ Parameters”…”�”}”(hjâJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÞJubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MhjÚJubjw )�”}”(hhh]”(j| )�”}”(hŒ9``int max_link_rate`` max DPRX link rate in 10kbps units ”h]”(j‚ )�”}”(hŒ``int max_link_rate``”h]”jˆ )�”}”(hjÿJh]”hŒint max_link_rate”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjýJubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MhjùJubjž )�”}”(hhh]”hÎ)�”}”(hŒ"max DPRX link rate in 10kbps units”h]”hŒ"max DPRX link rate in 10kbps units”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jKh´MhjKubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjùJubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jKh´MhjöJubj| )�”}”(hŒ&``int max_lanes`` max DPRX lane count ”h]”(j‚ )�”}”(hŒ``int max_lanes``”h]”jˆ )�”}”(hj8Kh]”hŒ int max_lanes”…”�”}”(hj:Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj6Kubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´Mhj2Kubjž )�”}”(hhh]”hÎ)�”}”(hŒmax DPRX lane count”h]”hŒmax DPRX lane count”…”�”}”(hjQKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jMKh´MhjNKubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj2Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jMKh´MhjöJubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÚJubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjsKh]”hŒ Description”…”�”}”(hjuKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjqKubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MhjÚJubhÎ)�”}”(hŒ4Given a link rate and lanes, get the data bandwidth.”h]”hŒ4Given a link rate and lanes, get the data bandwidth.”…”�”}”(hj‰Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MhjÚJubhÎ)�”}”(hŒlData bandwidth is the actual payload rate, which depends on the data bandwidth efficiency and the link rate.”h]”hŒlData bandwidth is the actual payload rate, which depends on the data bandwidth efficiency and the link rate.”…”�”}”(hj˜Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´MhjÚJubhÎ)�”}”(hX°Note that protocol layers above the DPRX link level considered here can further limit the maximum data rate. Such layers are the MST topology (with limits on the link between the source and first branch device as well as on the whole MST path until the DPRX link) and (Thunderbolt) DP tunnels - which in turn can encapsulate an MST link with its own limit - with each SST or MST encapsulated tunnel sharing the BW of a tunnel group.”h]”hX°Note that protocol layers above the DPRX link level considered here can further limit the maximum data rate. Such layers are the MST topology (with limits on the link between the source and first branch device as well as on the whole MST path until the DPRX link) and (Thunderbolt) DP tunnels - which in turn can encapsulate an MST link with its own limit - with each SST or MST encapsulated tunnel sharing the BW of a tunnel group.”…”�”}”(hj§Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M!hjÚJubhÎ)�”}”(hŒ,Returns the maximum data rate in kBps units.”h]”hŒ,Returns the maximum data rate in kBps units.”…”�”}”(hj¶Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:277: ./drivers/gpu/drm/display/drm_dp_helper.c”h´M(hjÚJubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÎ9h²hh³Nh´Nubeh}”(h]”jah ]”h"]”Œ'display port helper functions reference”ah$]”h&]”uh1hµhh·h²hh³hÌh´M ubh¶)�”}”(hhh]”(h»)�”}”(hŒ+Display Port CEC Helper Functions Reference”h]”hŒ+Display Port CEC Helper Functions Reference”…”�”}”(hjÖKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÊjuh1hºhjÓKh²hh³hÌh´MubhÎ)�”}”(hŒkThese functions take care of supporting the CEC-Tunneling-over-AUX feature of DisplayPort-to-HDMI adapters.”h]”hŒkThese functions take care of supporting the CEC-Tunneling-over-AUX feature of DisplayPort-to-HDMI adapters.”…”�”}”(hjäKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œi/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:283: ./drivers/gpu/drm/display/drm_dp_cec.c”h´K8hjÓKh²hubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_dp_cec_irq (C function)”Œc.drm_dp_cec_irq”hNt”auh1j† hjÓKh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ,void drm_dp_cec_irq (struct drm_dp_aux *aux)”h]”j¤ )�”}”(hŒ+void drm_dp_cec_irq(struct drm_dp_aux *aux)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj Lh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjLh²hh³Œi/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:286: ./drivers/gpu/drm/display/drm_dp_cec.c”h´Kíubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjLh²hh³jLh´KíubjÍ )�”}”(hŒdrm_dp_cec_irq”h]”jÓ )�”}”(hŒdrm_dp_cec_irq”h]”hŒdrm_dp_cec_irq”…”�”}”(hj-Lh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj)Lubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjLh²hh³jLh´KíubjÞ)�”}”(hŒ(struct drm_dp_aux *aux)”h]”jä)�”}”(hŒstruct drm_dp_aux *aux”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjILh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjELubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVLh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjELubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(hjgLh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjdLubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jiLŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj/LsbŒc.drm_dp_cec_irq”†”asbuh1hhjELubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡Lh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjELubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj•Lh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjELubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hj¢Lh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjELubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjALubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjLh²hh³jLh´Kíubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjLh²hh³jLh´Kíubah}”(h]”jÿKah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jLh´KíhjLh²hubj )�”}”(hhh]”hÎ)�”}”(hŒhandle CEC interrupt, if any”h]”hŒhandle CEC interrupt, if any”…”�”}”(hjÌLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œi/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:286: ./drivers/gpu/drm/display/drm_dp_cec.c”h´KíhjÉLh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjLh²hh³jLh´Kíubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jäLj$ jäLj% ‰j& ‰j' ‰uh1j˜ h²hhjÓKh³Nh´Nubj) )�”}”(hŒë**Parameters** ``struct drm_dp_aux *aux`` DisplayPort AUX channel **Description** Should be called when handling an IRQ_HPD request. If CEC-tunneling-over-AUX is present, then it will check for a CEC_IRQ and handle it accordingly.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjîLh]”hŒ Parameters”…”�”}”(hjðLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjìLubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œi/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:286: ./drivers/gpu/drm/display/drm_dp_cec.c”h´KñhjèLubjw )�”}”(hhh]”j| )�”}”(hŒ3``struct drm_dp_aux *aux`` DisplayPort AUX channel ”•#h]”(j‚ )�”}”(hŒ``struct drm_dp_aux *aux``”h]”jˆ )�”}”(hj Mh]”hŒstruct drm_dp_aux *aux”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj Mubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œi/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:286: ./drivers/gpu/drm/display/drm_dp_cec.c”h´KîhjMubjž )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort AUX channel”h]”hŒDisplayPort AUX channel”…”�”}”(hj&Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j"Mh´Kîhj#Mubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjMubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j"Mh´KîhjMubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjèLubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjHMh]”hŒ Description”…”�”}”(hjJMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjFMubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œi/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:286: ./drivers/gpu/drm/display/drm_dp_cec.c”h´KðhjèLubhÎ)�”}”(hŒ”Should be called when handling an IRQ_HPD request. If CEC-tunneling-over-AUX is present, then it will check for a CEC_IRQ and handle it accordingly.”h]”hŒ”Should be called when handling an IRQ_HPD request. If CEC-tunneling-over-AUX is present, then it will check for a CEC_IRQ and handle it accordingly.”…”�”}”(hj^Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œi/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:286: ./drivers/gpu/drm/display/drm_dp_cec.c”h´KïhjèLubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjÓKh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ*drm_dp_cec_register_connector (C function)”Œc.drm_dp_cec_register_connector”hNt”auh1j† hjÓKh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ\void drm_dp_cec_register_connector (struct drm_dp_aux *aux, struct drm_connector *connector)”h]”j¤ )�”}”(hŒ[void drm_dp_cec_register_connector(struct drm_dp_aux *aux, struct drm_connector *connector)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj�Mh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj‰Mh²hh³Œi/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:286: ./drivers/gpu/drm/display/drm_dp_cec.c”h´M«ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœMh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj‰Mh²hh³j›Mh´M«ubjÍ )�”}”(hŒdrm_dp_cec_register_connector”h]”jÓ )�”}”(hŒdrm_dp_cec_register_connector”h]”hŒdrm_dp_cec_register_connector”…”�”}”(hj®Mh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjªMubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj‰Mh²hh³j›Mh´M«ubjÞ)�”}”(hŒ9(struct drm_dp_aux *aux, struct drm_connector *connector)”h]”(jä)�”}”(hŒstruct drm_dp_aux *aux”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjÊMh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjÆMubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×Mh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÆMubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(hjèMh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjåMubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jêMŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj°MsbŒc.drm_dp_cec_register_connector”†”asbuh1hhjÆMubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÆMubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÆMubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hj#Nh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÆMubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÂMubjä)�”}”(hŒstruct drm_connector *connector”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjuh1hºhjQh²hh³hÌh´M"ubhÎ)�”}”(hŒ@Helper functions to deal with DP dual mode (aka. DP++) adaptors.”h]”hŒ@Helper functions to deal with DP dual mode (aka. DP++) adaptors.”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:292: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´K#hjQh²hubhÎ)�”}”(hŒPType 1: Adaptor registers (if any) and the sink DDC bus may be accessed via I2C.”h]”hŒPType 1: Adaptor registers (if any) and the sink DDC bus may be accessed via I2C.”…”�”}”(hj Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:292: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´K%hjQh²hubhÎ)�”}”(hŒ¡Type 2: Adaptor registers and sink DDC bus can be accessed either via I2C or I2C-over-AUX. Source devices may choose to implement either of these access methods.”h]”hŒ¡Type 2: Adaptor registers and sink DDC bus can be accessed either via I2C or I2C-over-AUX. Source devices may choose to implement either of these access methods.”…”�”}”(hj/Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:292: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´K(hjQh²hubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_lspcon_mode (C enum)”Œc.drm_lspcon_mode”hNt”auh1j† hjQh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒdrm_lspcon_mode”h]”j¤ )�”}”(hŒenum drm_lspcon_mode”h]”(jª )�”}”(hjÂ7h]”hŒenum”…”�”}”(hjWQh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjSQh²hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:295: ./include/drm/display/drm_dp_dual_mode_helper.h”h´Kubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeQh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjSQh²hh³jdQh´KubjÍ )�”}”(hŒdrm_lspcon_mode”h]”jÓ )�”}”(hjQQh]”hŒdrm_lspcon_mode”…”�”}”(hjwQh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjsQubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjSQh²hh³jdQh´Kubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjOQh²hh³jdQh´Kubah}”(h]”jJQah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jdQh´KhjLQh²hubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j hjLQh²hh³jdQh´Kubeh}”(h]”h ]”(j Œenum”eh"]”h$]”h&]”j" j j# j¢Qj$ j¢Qj% ‰j& ‰j' ‰uh1j˜ h²hhjQh³Nh´Nubj) )�”}”(hX **Constants** ``DRM_LSPCON_MODE_INVALID`` No LSPCON. ``DRM_LSPCON_MODE_LS`` Level shifter mode of LSPCON which drives DP++ to HDMI 1.4 conversion. ``DRM_LSPCON_MODE_PCON`` Protocol converter mode of LSPCON which drives DP++ to HDMI 2.0 active conversion.”h]”(hÎ)�”}”(hŒ **Constants**”h]”j3 )�”}”(hj¬Qh]”hŒ Constants”…”�”}”(hj®Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjªQubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:295: ./include/drm/display/drm_dp_dual_mode_helper.h”h´KNhj¦Qubjw )�”}”(hhh]”(j| )�”}”(hŒ'``DRM_LSPCON_MODE_INVALID`` No LSPCON. ”h]”(j‚ )�”}”(hŒ``DRM_LSPCON_MODE_INVALID``”h]”jˆ )�”}”(hjËQh]”hŒDRM_LSPCON_MODE_INVALID”…”�”}”(hjÍQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÉQubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:295: ./include/drm/display/drm_dp_dual_mode_helper.h”h´KQhjÅQubjž )�”}”(hhh]”hÎ)�”}”(hŒ No LSPCON.”h]”hŒ No LSPCON.”…”�”}”(hjäQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jàQh´KQhjáQubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÅQubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jàQh´KQhjÂQubj| )�”}”(hŒ^``DRM_LSPCON_MODE_LS`` Level shifter mode of LSPCON which drives DP++ to HDMI 1.4 conversion. ”h]”(j‚ )�”}”(hŒ``DRM_LSPCON_MODE_LS``”h]”jˆ )�”}”(hjRh]”hŒDRM_LSPCON_MODE_LS”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjRubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:295: ./include/drm/display/drm_dp_dual_mode_helper.h”h´KUhjþQubjž )�”}”(hhh]”hÎ)�”}”(hŒFLevel shifter mode of LSPCON which drives DP++ to HDMI 1.4 conversion.”h]”hŒFLevel shifter mode of LSPCON which drives DP++ to HDMI 1.4 conversion.”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:295: ./include/drm/display/drm_dp_dual_mode_helper.h”h´KThjRubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjþQubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jRh´KUhjÂQubj| )�”}”(hŒk``DRM_LSPCON_MODE_PCON`` Protocol converter mode of LSPCON which drives DP++ to HDMI 2.0 active conversion.”h]”(j‚ )�”}”(hŒ``DRM_LSPCON_MODE_PCON``”h]”jˆ )�”}”(hj>Rh]”hŒDRM_LSPCON_MODE_PCON”…”�”}”(hj@Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj``DRM_DP_DUAL_MODE_LSPCON`` Level shifter / protocol converter”h]”(j‚ )�”}”(hŒ``DRM_DP_DUAL_MODE_LSPCON``”h]”jˆ )�”}”(hjpTh]”hŒDRM_DP_DUAL_MODE_LSPCON”…”�”}”(hjrTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjnTubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:295: ./include/drm/display/drm_dp_dual_mode_helper.h”h´KphjjTubjž )�”}”(hhh]”hÎ)�”}”(hŒ"Level shifter / protocol converter”h]”hŒ"Level shifter / protocol converter”…”�”}”(hj‰Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:295: ./include/drm/display/drm_dp_dual_mode_helper.h”h´Kqhj†Tubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjjTubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j…Th´KphjSubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjõRubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjQh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ"drm_dp_dual_mode_read (C function)”Œc.drm_dp_dual_mode_read”hNt”auh1j† hjQh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒassize_t drm_dp_dual_mode_read (struct i2c_adapter *adapter, u8 offset, void *buffer, size_t size)”h]”j¤ )�”}”(hŒ`ssize_t drm_dp_dual_mode_read(struct i2c_adapter *adapter, u8 offset, void *buffer, size_t size)”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒssize_t”h]”hŒssize_t”…”�”}”(hjÍTh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÊTubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jÏTŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jŒdrm_dp_dual_mode_read”sbŒc.drm_dp_dual_mode_read”†”asbuh1hhjÆTh²hh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:298: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´K3ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïTh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÆTh²hh³jîTh´K3ubjÍ )�”}”(hŒdrm_dp_dual_mode_read”h]”jÓ )�”}”(hjëTh]”hŒdrm_dp_dual_mode_read”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjýTubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÆTh²hh³jîTh´K3ubjÞ)�”}”(hŒC(struct i2c_adapter *adapter, u8 offset, void *buffer, size_t size)”h]”(jä)�”}”(hŒstruct i2c_adapter *adapter”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjUubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)Uh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjUubh)�”}”(hhh]”jÓ )�”}”(hŒ i2c_adapter”h]”hŒ i2c_adapter”…”�”}”(hj:Uh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj7Uubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jAttempt to identify the type of the DP dual mode adaptor used.”h]”hŒ>Attempt to identify the type of the DP dual mode adaptor used.”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:298: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´KÁhj2]ubhÎ)�”}”(hŒÿNote that when the answer is **DRM_DP_DUAL_MODE_UNKNOWN** it's not certain whether we're dealing with a native HDMI port or a type 1 DVI dual mode adaptor. The driver will have to use some other hardware/driver specific mechanism to make that distinction.”h]”(hŒNote that when the answer is ”…”�”}”(hj^h²hh³Nh´Nubj3 )�”}”(hŒ**DRM_DP_DUAL_MODE_UNKNOWN**”h]”hŒDRM_DP_DUAL_MODE_UNKNOWN”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj^ubhŒÊ it’s not certain whether we’re dealing with a native HDMI port or a type 1 DVI dual mode adaptor. The driver will have to use some other hardware/driver specific mechanism to make that distinction.”…”�”}”(hj^h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:298: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´KÃhj2]ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj2^h]”hŒReturn”…”�”}”(hj4^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj0^ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:298: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´KÉhj2]ubhÎ)�”}”(hŒ)The type of the DP dual mode adaptor used”h]”hŒ)The type of the DP dual mode adaptor used”…”�”}”(hjH^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:298: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´KÊhj2]ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjQh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ,drm_dp_dual_mode_max_tmds_clock (C function)”Œ!c.drm_dp_dual_mode_max_tmds_clock”hNt”auh1j† hjQh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ€int drm_dp_dual_mode_max_tmds_clock (const struct drm_device *dev, enum drm_dp_dual_mode_type type, struct i2c_adapter *adapter)”h]”j¤ )�”}”(hŒint drm_dp_dual_mode_max_tmds_clock(const struct drm_device *dev, enum drm_dp_dual_mode_type type, struct i2c_adapter *adapter)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjw^h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjs^h²hh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:298: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†^h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjs^h²hh³j…^h´MubjÍ )�”}”(hŒdrm_dp_dual_mode_max_tmds_clock”h]”jÓ )�”}”(hŒdrm_dp_dual_mode_max_tmds_clock”h]”hŒdrm_dp_dual_mode_max_tmds_clock”…”�”}”(hj˜^h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj”^ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjs^h²hh³j…^h´MubjÞ)�”}”(hŒ\(const struct drm_device *dev, enum drm_dp_dual_mode_type type, struct i2c_adapter *adapter)”h]”(jä)�”}”(hŒconst struct drm_device *dev”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(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Œ drm_device”h]”hŒ drm_device”…”�”}”(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%)�”}”jjš^sbŒ!c.drm_dp_dual_mode_max_tmds_clock”†”asbuh1hhj°^ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj _h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj°^ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj°^ubjÓ )�”}”(hŒdev”h]”hŒdev”…”�”}”(hj(_h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj°^ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¬^ubjä)�”}”(hŒenum drm_dp_dual_mode_type type”h]”(jª )�”}”(hjÂ7h]”hŒenum”…”�”}”(hjA_h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj=_ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjN_h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj=_ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_dp_dual_mode_type”h]”hŒdrm_dp_dual_mode_type”…”�”}”(hj__h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj\_ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”ja_Œmodname”NŒ classname”Njé jì )�”}”jï ]”j _Œ!c.drm_dp_dual_mode_max_tmds_clock”†”asbuh1hhj=_ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}_h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj=_ubjÓ )�”}”(hŒtype”h]”hŒtype”…”�”}”(hj‹_h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj=_ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¬^ubjä)�”}”(hŒstruct i2c_adapter *adapter”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Œ i2c_adapter”h]”hŒ i2c_adapter”…”�”}”(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.drm_dp_dual_mode_max_tmds_clock”†”asbuh1hhj _ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjà_h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj _ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjî_h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj _ubjÓ )�”}”(hŒadapter”h]”hŒadapter”…”�”}”(hjû_h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj _ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¬^ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjs^h²hh³j…^h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjo^h²hh³j…^h´Mubah}”(h]”jj^ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j…^h´Mhjl^h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ'Max TMDS clock for DP dual mode adaptor”h]”hŒ'Max TMDS clock for DP dual mode adaptor”…”�”}”(hj%`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:298: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´Mhj"`h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjl^h²hh³j…^h´Mubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j=`j$ j=`j% ‰j& ‰j' ‰uh1j˜ h²hhjQh³Nh´Nubj) )�”}”(hXž**Parameters** ``const struct drm_device *dev`` :c:type:`drm_device` to use ``enum drm_dp_dual_mode_type type`` DP dual mode adaptor type ``struct i2c_adapter *adapter`` I2C adapter for the DDC bus **Description** Determine the max TMDS clock the adaptor supports based on the type of the dual mode adaptor and the DP_DUAL_MODE_MAX_TMDS_CLOCK register (on type2 adaptors). As some type 1 adaptors have problems with registers (see comments in drm_dp_dual_mode_detect()) we don't read the register on those, instead we simply assume a 165 MHz limit based on the specification. **Return** Maximum supported TMDS clock rate for the DP dual mode adaptor in kHz.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjG`h]”hŒ Parameters”…”�”}”(hjI`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjE`ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:298: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´M hjA`ubjw )�”}”(hhh]”(j| )�”}”(hŒ=``const struct drm_device *dev`` :c:type:`drm_device` to use ”h]”(j‚ )�”}”(hŒ ``const struct drm_device *dev``”h]”jˆ )�”}”(hjf`h]”hŒconst struct drm_device *dev”…”�”}”(hjh`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjd`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:298: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´Mhj``ubjž )�”}”(hhh]”hÎ)�”}”(hŒ:c:type:`drm_device` to use”h]”(h)�”}”(hŒ:c:type:`drm_device`”h]”jˆ )�”}”(hj…`h]”hŒ drm_device”…”�”}”(hj‡`h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjƒ`ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œ drm_device”uh1hh³j{`h´Mhj`ubhŒ to use”…”�”}”(hj`h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j{`h´Mhj|`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj``ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j{`h´Mhj]`ubj| )�”}”(hŒ>``enum drm_dp_dual_mode_type type`` DP dual mode adaptor type ”h]”(j‚ )�”}”(hŒ#``enum drm_dp_dual_mode_type type``”h]”jˆ )�”}”(hj¾`h]”hŒenum drm_dp_dual_mode_type type”…”�”}”(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/drm-kms-helpers:298: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´Mhj¸`ubjž )�”}”(hhh]”hÎ)�”}”(hŒDP dual mode adaptor type”h]”hŒDP dual mode adaptor type”…”�”}”(hj×`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÓ`h´MhjÔ`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¸`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÓ`h´Mhj]`ubj| )�”}”(hŒ<``struct i2c_adapter *adapter`` I2C adapter for the DDC bus ”h]”(j‚ )�”}”(hŒ``struct i2c_adapter *adapter``”h]”jˆ )�”}”(hj÷`h]”hŒstruct i2c_adapter *adapter”…”�”}”(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/drm-kms-helpers:298: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´M hjñ`ubjž )�”}”(hhh]”hÎ)�”}”(hŒI2C adapter for the DDC bus”h]”hŒI2C adapter for the DDC bus”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j ah´M hj aubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjñ`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j ah´M hj]`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjA`ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj2ah]”hŒ Description”…”�”}”(hj4ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj0aubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:298: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´M hjA`ubhÎ)�”}”(hXiDetermine the max TMDS clock the adaptor supports based on the type of the dual mode adaptor and the DP_DUAL_MODE_MAX_TMDS_CLOCK register (on type2 adaptors). As some type 1 adaptors have problems with registers (see comments in drm_dp_dual_mode_detect()) we don't read the register on those, instead we simply assume a 165 MHz limit based on the specification.”h]”hXkDetermine the max TMDS clock the adaptor supports based on the type of the dual mode adaptor and the DP_DUAL_MODE_MAX_TMDS_CLOCK register (on type2 adaptors). As some type 1 adaptors have problems with registers (see comments in drm_dp_dual_mode_detect()) we don’t read the register on those, instead we simply assume a 165 MHz limit based on the specification.”…”�”}”(hjHah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:298: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´M hjA`ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjYah]”hŒReturn”…”�”}”(hj[ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjWaubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:298: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´MhjA`ubhÎ)�”}”(hŒFMaximum supported TMDS clock rate for the DP dual mode adaptor in kHz.”h]”hŒFMaximum supported TMDS clock rate for the DP dual mode adaptor in kHz.”…”�”}”(hjoah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:298: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´MhjA`ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjQh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ-drm_dp_dual_mode_get_tmds_output (C function)”Œ"c.drm_dp_dual_mode_get_tmds_output”hNt”auh1j† hjQh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ�int drm_dp_dual_mode_get_tmds_output (const struct drm_device *dev, enum drm_dp_dual_mode_type type, struct i2c_adapter *adapter, bool *enabled)”h]”j¤ )�”}”(hŒ�int drm_dp_dual_mode_get_tmds_output(const struct drm_device *dev, enum drm_dp_dual_mode_type type, struct i2c_adapter *adapter, bool *enabled)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjžah²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjšah²hh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:298: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”•h´M2ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­ah²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjšah²hh³j¬ah´M2ubjÍ )�”}”(hŒ drm_dp_dual_mode_get_tmds_output”h]”jÓ )�”}”(hŒ drm_dp_dual_mode_get_tmds_output”h]”hŒ drm_dp_dual_mode_get_tmds_output”…”�”}”(hj¿ah²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj»aubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjšah²hh³j¬ah´M2ubjÞ)�”}”(hŒk(const struct drm_device *dev, enum drm_dp_dual_mode_type type, struct i2c_adapter *adapter, bool *enabled)”h]”(jä)�”}”(hŒconst struct drm_device *dev”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hjÛah²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj×aubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjèah²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj×aubjª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjöah²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj×aubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj×aubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_device”h]”hŒ drm_device”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjbubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jbŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjÁasbŒ"c.drm_dp_dual_mode_get_tmds_output”†”asbuh1hhj×aubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4bh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj×aubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjBbh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj×aubjÓ )�”}”(hŒdev”h]”hŒdev”…”�”}”(hjObh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj×aubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÓaubjä)�”}”(hŒenum drm_dp_dual_mode_type type”h]”(jª )�”}”(hjÂ7h]”hŒenum”…”�”}”(hjhbh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjdbubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjubh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjdbubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_dp_dual_mode_type”h]”hŒdrm_dp_dual_mode_type”…”�”}”(hj†bh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjƒbubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jˆbŒmodname”NŒ classname”Njé jì )�”}”jï ]”j0bŒ"c.drm_dp_dual_mode_get_tmds_output”†”asbuh1hhjdbubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤bh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjdbubjÓ )�”}”(hŒtype”h]”hŒtype”…”�”}”(hj²bh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjdbubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÓaubjä)�”}”(hŒstruct i2c_adapter *adapter”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjËbh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjÇbubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØbh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÇbubh)�”}”(hhh]”jÓ )�”}”(hŒ i2c_adapter”h]”hŒ i2c_adapter”…”�”}”(hjébh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjæbubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jëbŒmodname”NŒ classname”Njé jì )�”}”jï ]”j0bŒ"c.drm_dp_dual_mode_get_tmds_output”†”asbuh1hhjÇbubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÇbubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÇbubjÓ )�”}”(hŒadapter”h]”hŒadapter”…”�”}”(hj"ch²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÇbubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÓaubjä)�”}”(hŒ bool *enabled”h]”(j¦)�”}”(hj£Ih]”hŒbool”…”�”}”(hj;ch²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj7cubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHch²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj7cubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjVch²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj7cubjÓ )�”}”(hŒenabled”h]”hŒenabled”…”�”}”(hjcch²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj7cubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÓaubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjšah²hh³j¬ah´M2ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj–ah²hh³j¬ah´M2ubah}”(h]”j‘aah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j¬ah´M2hj“ah²hubj )�”}”(hhh]”hÎ)�”}”(hŒDGet the state of the TMDS output buffers in the DP dual mode adaptor”h]”hŒDGet the state of the TMDS output buffers in the DP dual mode adaptor”…”�”}”(hj�ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:298: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´M2hjŠch²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj“ah²hh³j¬ah´M2ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j¥cj$ j¥cj% ‰j& ‰j' ‰uh1j˜ h²hhjQh³Nh´Nubj) )�”}”(hX¡**Parameters** ``const struct drm_device *dev`` :c:type:`drm_device` to use ``enum drm_dp_dual_mode_type type`` DP dual mode adaptor type ``struct i2c_adapter *adapter`` I2C adapter for the DDC bus ``bool *enabled`` current state of the TMDS output buffers **Description** Get the state of the TMDS output buffers in the adaptor. For type2 adaptors this is queried from the DP_DUAL_MODE_TMDS_OEN register. As some type 1 adaptors have problems with registers (see comments in drm_dp_dual_mode_detect()) we don't read the register on those, instead we simply assume that the buffers are always enabled. **Return** 0 on success, negative error code on failure”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj¯ch]”hŒ Parameters”…”�”}”(hj±ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj­cubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:298: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´M6hj©cubjw )�”}”(hhh]”(j| )�”}”(hŒ=``const struct drm_device *dev`` :c:type:`drm_device` to use ”h]”(j‚ )�”}”(hŒ ``const struct drm_device *dev``”h]”jˆ )�”}”(hjÎch]”hŒconst struct drm_device *dev”…”�”}”(hjÐch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÌcubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:298: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´M3hjÈcubjž )�”}”(hhh]”hÎ)�”}”(hŒ:c:type:`drm_device` to use”h]”(h)�”}”(hŒ:c:type:`drm_device`”h]”jˆ )�”}”(hjích]”hŒ drm_device”…”�”}”(hjïch²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjëcubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œ drm_device”uh1hh³jãch´M3hjçcubhŒ to use”…”�”}”(hjçch²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jãch´M3hjäcubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÈcubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jãch´M3hjÅcubj| )�”}”(hŒ>``enum drm_dp_dual_mode_type type`` DP dual mode adaptor type ”h]”(j‚ )�”}”(hŒ#``enum drm_dp_dual_mode_type type``”h]”jˆ )�”}”(hj&dh]”hŒenum drm_dp_dual_mode_type type”…”�”}”(hj(dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj$dubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:298: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´M4hj dubjž )�”}”(hhh]”hÎ)�”}”(hŒDP dual mode adaptor type”h]”hŒDP dual mode adaptor type”…”�”}”(hj?dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j;dh´M4hjhj©cubhÎ)�”}”(hŒ,0 on success, negative error code on failure”h]”hŒ,0 on success, negative error code on failure”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:298: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´M?hj©cubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjQh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ-drm_dp_dual_mode_set_tmds_output (C function)”Œ"c.drm_dp_dual_mode_set_tmds_output”hNt”auh1j† hjQh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒŽint drm_dp_dual_mode_set_tmds_output (const struct drm_device *dev, enum drm_dp_dual_mode_type type, struct i2c_adapter *adapter, bool enable)”h]”j¤ )�”}”(hŒ�int drm_dp_dual_mode_set_tmds_output(const struct drm_device *dev, enum drm_dp_dual_mode_type type, struct i2c_adapter *adapter, bool enable)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj?eh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj;eh²hh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:298: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´M\ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNeh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj;eh²hh³jMeh´M\ubjÍ )�”}”(hŒ drm_dp_dual_mode_set_tmds_output”h]”jÓ )�”}”(hŒ drm_dp_dual_mode_set_tmds_output”h]”hŒ drm_dp_dual_mode_set_tmds_output”…”�”}”(hj`eh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj\eubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj;eh²hh³jMeh´M\ubjÞ)�”}”(hŒi(const struct drm_device *dev, enum drm_dp_dual_mode_type type, struct i2c_adapter *adapter, bool enable)”h]”(jä)�”}”(hŒconst struct drm_device *dev”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hj|eh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjxeubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰eh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjxeubjª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj—eh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjxeubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤eh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjxeubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_device”h]”hŒ drm_device”…”�”}”(hjµeh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj²eubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j·eŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjbesbŒ"c.drm_dp_dual_mode_set_tmds_output”†”asbuh1hhjxeubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕeh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjxeubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjãeh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjxeubjÓ )�”}”(hŒdev”h]”hŒdev”…”�”}”(hjðeh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjxeubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjteubjä)�”}”(hŒenum drm_dp_dual_mode_type type”h]”(jª )�”}”(hjÂ7h]”hŒenum”…”�”}”(hj fh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjfubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjfubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_dp_dual_mode_type”h]”hŒdrm_dp_dual_mode_type”…”�”}”(hj'fh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj$fubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j)fŒmodname”NŒ classname”Njé jì )�”}”jï ]”jÑeŒ"c.drm_dp_dual_mode_set_tmds_output”†”asbuh1hhjfubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjEfh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjfubjÓ )�”}”(hŒtype”h]”hŒtype”…”�”}”(hjSfh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjfubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjteubjä)�”}”(hŒstruct i2c_adapter *adapter”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjlfh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjhfubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyfh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjhfubh)�”}”(hhh]”jÓ )�”}”(hŒ i2c_adapter”h]”hŒ i2c_adapter”…”�”}”(hjŠfh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj‡fubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jŒfŒmodname”NŒ classname”Njé jì )�”}”jï ]”jÑeŒ"c.drm_dp_dual_mode_set_tmds_output”†”asbuh1hhjhfubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨fh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjhfubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj¶fh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjhfubjÓ )�”}”(hŒadapter”h]”hŒadapter”…”�”}”(hjÃfh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjhfubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjteubjä)�”}”(hŒ bool enable”h]”(j¦)�”}”(hj£Ih]”hŒbool”…”�”}”(hjÜfh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjØfubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjéfh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjØfubjÓ )�”}”(hŒenable”h]”hŒenable”…”�”}”(hj÷fh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjØfubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjteubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj;eh²hh³jMeh´M\ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj7eh²hh³jMeh´M\ubah}”(h]”j2eah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jMeh´M\hj4eh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ>Enable/disable TMDS output buffers in the DP dual mode adaptor”h]”hŒ>Enable/disable TMDS output buffers in the DP dual mode adaptor”…”�”}”(hj!gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:298: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´M\hjgh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj4eh²hh³jMeh´M\ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j9gj$ j9gj% ‰j& ‰j' ‰uh1j˜ h²hhjQh³Nh´Nubj) )�”}”(hX**Parameters** ``const struct drm_device *dev`` :c:type:`drm_device` to use ``enum drm_dp_dual_mode_type type`` DP dual mode adaptor type ``struct i2c_adapter *adapter`` I2C adapter for the DDC bus ``bool enable`` enable (as opposed to disable) the TMDS output buffers **Description** Set the state of the TMDS output buffers in the adaptor. For type2 this is set via the DP_DUAL_MODE_TMDS_OEN register. Type1 adaptors do not support any register writes. **Return** 0 on success, negative error code on failure”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjCgh]”hŒ Parameters”…”�”}”(hjEgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjAgubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:298: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´M`hj=gubjw )�”}”(hhh]”(j| )�”}”(hŒ=``const struct drm_device *dev`` :c:type:`drm_device` to use ”h]”(j‚ )�”}”(hŒ ``const struct drm_device *dev``”h]”jˆ )�”}”(hjbgh]”hŒconst struct drm_device *dev”…”�”}”(hjdgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj`gubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:298: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´M]hj\gubjž )�”}”(hhh]”hÎ)�”}”(hŒ:c:type:`drm_device` to use”h]”(h)�”}”(hŒ:c:type:`drm_device`”h]”jˆ )�”}”(hj�gh]”hŒ drm_device”…”�”}”(hjƒgh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjgubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œ drm_device”uh1hh³jwgh´M]hj{gubhŒ to use”…”�”}”(hj{gh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jwgh´M]hjxgubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj\gubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jwgh´M]hjYgubj| )�”}”(hŒ>``enum drm_dp_dual_mode_type type`` DP dual mode adaptor type ”h]”(j‚ )�”}”(hŒ#``enum drm_dp_dual_mode_type type``”h]”jˆ )�”}”(hjºgh]”hŒenum drm_dp_dual_mode_type type”…”�”}”(hj¼gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¸gubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:298: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´M^hj´gubjž )�”}”(hhh]”hÎ)�”}”(hŒDP dual mode adaptor type”h]”hŒDP dual mode adaptor type”…”�”}”(hjÓgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÏgh´M^hjÐgubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj´gubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÏgh´M^hjYgubj| )�”}”(hŒ<``struct i2c_adapter *adapter`` I2C adapter for the DDC bus ”h]”(j‚ )�”}”(hŒ``struct i2c_adapter *adapter``”h]”jˆ )�”}”(hjógh]”hŒstruct i2c_adapter *adapter”…”�”}”(hjõgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjñgubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:298: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´M_hjígubjž )�”}”(hhh]”hÎ)�”}”(hŒI2C adapter for the DDC bus”h]”hŒI2C adapter for the DDC bus”…”�”}”(hj hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jhh´M_hj hubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjígubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jhh´M_hjYgubj| )�”}”(hŒG``bool enable`` enable (as opposed to disable) the TMDS output buffers ”h]”(j‚ )�”}”(hŒ``bool enable``”h]”jˆ )�”}”(hj,hh]”hŒ bool enable”…”�”}”(hj.hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj*hubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:298: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´M`hj&hubjž )�”}”(hhh]”hÎ)�”}”(hŒ6enable (as opposed to disable) the TMDS output buffers”h]”hŒ6enable (as opposed to disable) the TMDS output buffers”…”�”}”(hjEhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jAhh´M`hjBhubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj&hubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jAhh´M`hjYgubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj=gubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjghh]”hŒ Description”…”�”}”(hjihh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjehubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:298: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´Mbhj=gubhÎ)�”}”(hŒ©Set the state of the TMDS output buffers in the adaptor. For type2 this is set via the DP_DUAL_MODE_TMDS_OEN register. Type1 adaptors do not support any register writes.”h]”hŒ©Set the state of the TMDS output buffers in the adaptor. For type2 this is set via the DP_DUAL_MODE_TMDS_OEN register. Type1 adaptors do not support any register writes.”…”�”}”(hj}hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:298: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´Mahj=gubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjŽhh]”hŒReturn”…”�”}”(hj�hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjŒhubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:298: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´Mehj=gubhÎ)�”}”(hŒ,0 on success, negative error code on failure”h]”hŒ,0 on success, negative error code on failure”…”�”}”(hj¤hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:298: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´Mfhj=gubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjQh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ+drm_dp_get_dual_mode_type_name (C function)”Œ c.drm_dp_get_dual_mode_type_name”hNt”auh1j† hjQh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒMconst char * drm_dp_get_dual_mode_type_name (enum drm_dp_dual_mode_type type)”h]”j¤ )�”}”(hŒKconst char *drm_dp_get_dual_mode_type_name(enum drm_dp_dual_mode_type type)”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hjÓhh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjÏhh²hh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:298: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´M—ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjáhh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÏhh²hh³jàhh´M—ubj¦)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjïhh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjÏhh²hh³jàhh´M—ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýhh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÏhh²hh³jàhh´M—ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj ih²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÏhh²hh³jàhh´M—ubjÍ )�”}”(hŒdrm_dp_get_dual_mode_type_name”h]”jÓ )�”}”(hŒdrm_dp_get_dual_mode_type_name”h]”hŒdrm_dp_get_dual_mode_type_name”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjiubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÏhh²hh³jàhh´M—ubjÞ)�”}”(hŒ!(enum drm_dp_dual_mode_type type)”h]”jä)�”}”(hŒenum drm_dp_dual_mode_type type”h]”(jª )�”}”(hjÂ7h]”hŒenum”…”�”}”(hj8ih²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj4iubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjEih²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj4iubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_dp_dual_mode_type”h]”hŒdrm_dp_dual_mode_type”…”�”}”(hjVih²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjSiubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jXiŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjisbŒ c.drm_dp_get_dual_mode_type_name”†”asbuh1hhj4iubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvih²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj4iubjÓ )�”}”(hŒtype”h]”hŒtype”…”�”}”(hj„ih²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj4iubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj0iubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjÏhh²hh³jàhh´M—ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjËhh²hh³jàhh´M—ubah}”(h]”jÆhah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jàhh´M—hjÈhh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ9Get the name of the DP dual mode adaptor type as a string”h]”hŒ9Get the name of the DP dual mode adaptor type as a string”…”�”}”(hj®ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:298: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´M—hj«ih²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÈhh²hh³jàhh´M—ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jÆij$ jÆij% ‰j& ‰j' ‰uh1j˜ h²hhjQh³Nh´Nubj) )�”}”(hŒ“**Parameters** ``enum drm_dp_dual_mode_type type`` DP dual mode adaptor type **Return** String representation of the DP dual mode adaptor type”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjÐih]”hŒ Parameters”…”�”}”(hjÒih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÎiubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:298: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´M›hjÊiubjw )�”}”(hhh]”j| )�”}”(hŒ>``enum drm_dp_dual_mode_type type`` DP dual mode adaptor type ”h]”(j‚ )�”}”(hŒ#``enum drm_dp_dual_mode_type type``”h]”jˆ )�”}”(hjïih]”hŒenum drm_dp_dual_mode_type type”…”�”}”(hjñih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjíiubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:298: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´M˜hjéiubjž )�”}”(hhh]”hÎ)�”}”(hŒDP dual mode adaptor type”h]”hŒDP dual mode adaptor type”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jjh´M˜hjjubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjéiubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jjh´M˜hjæiubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÊiubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj*jh]”hŒReturn”…”�”}”(hj,jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj(jubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:298: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´MšhjÊiubhÎ)�”}”(hŒ6String representation of the DP dual mode adaptor type”h]”hŒ6String representation of the DP dual mode adaptor type”…”�”}”(hj@jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:298: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´MšhjÊiubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjQh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ drm_lspcon_get_mode (C function)”Œc.drm_lspcon_get_mode”hNt”auh1j† hjQh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒoint drm_lspcon_get_mode (const struct drm_device *dev, struct i2c_adapter *adapter, enum drm_lspcon_mode *mode)”h]”j¤ )�”}”(hŒnint drm_lspcon_get_mode(const struct drm_device *dev, struct i2c_adapter *adapter, enum drm_lspcon_mode *mode)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjojh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjkjh²hh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:298: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´M´ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~jh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjkjh²hh³j}jh´M´ubjÍ )�”}”(hŒdrm_lspcon_get_mode”h]”jÓ )�”}”(hŒdrm_lspcon_get_mode”h]”hŒdrm_lspcon_get_mode”…”�”}”(hj�jh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjŒjubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjkjh²hh³j}jh´M´ubjÞ)�”}”(hŒW(const struct drm_device *dev, struct i2c_adapter *adapter, enum drm_lspcon_mode *mode)”h]”(jä)�”}”(hŒconst struct drm_device *dev”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hj¬jh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj¨jubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹jh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¨jubjª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjÇjh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj¨jubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔjh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¨jubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_device”h]”hŒ drm_device”…”�”}”(hjåjh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjâjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jçjŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj’jsbŒc.drm_lspcon_get_mode”†”asbuh1hhj¨jubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¨jubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¨jubjÓ )�”}”(hŒdev”h]”hŒdev”…”�”}”(hj kh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¨jubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¤jubjä)�”}”(hŒstruct i2c_adapter *adapter”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj9kh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj5kubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFkh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj5kubh)�”}”(hhh]”jÓ )�”}”(hŒ i2c_adapter”h]”hŒ i2c_adapter”…”�”}”(hjWkh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjTkubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jYkŒmodname”NŒ classname”Njé jì )�”}”jï ]”jkŒc.drm_lspcon_get_mode”†”asbuh1hhj5kubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjukh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj5kubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjƒkh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj5kubjÓ )�”}”(hŒadapter”h]”hŒadapter”…”�”}”(hj�kh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj5kubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¤jubjä)�”}”(hŒenum drm_lspcon_mode *mode”h]”(jª )�”}”(hjÂ7h]”hŒenum”…”�”}”(hj©kh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj¥kubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶kh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¥kubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_lspcon_mode”h]”hŒdrm_lspcon_mode”…”�”}”(hjÇkh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÄkubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jÉkŒmodname”NŒ classname”Njé jì )�”}”jï ]”jkŒc.drm_lspcon_get_mode”†”asbuh1hhj¥kubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjåkh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¥kubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjókh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¥kubjÓ )�”}”(hŒmode”h]”hŒmode”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¥kubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¤jubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjkjh²hh³j}jh´M´ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjgjh²hh³j}jh´M´ubah}”(h]”jbjah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j}jh´M´hjdjh²hubj )�”}”(hhh]”hÎ)�”}”(hŒEGet LSPCON's current mode of operation by reading offset (0x80, 0x41)”h]”hŒGGet LSPCON’s current mode of operation by reading offset (0x80, 0x41)”…”�”}”(hj*lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:298: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´M´hj'lh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjdjh²hh³j}jh´M´ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jBlj$ jBlj% ‰j& ‰j' ‰uh1j˜ h²hhjQh³Nh´Nubj) )�”}”(hX6**Parameters** ``const struct drm_device *dev`` :c:type:`drm_device` to use ``struct i2c_adapter *adapter`` I2C-over-aux adapter ``enum drm_lspcon_mode *mode`` current lspcon mode of operation output variable **Return** 0 on success, sets the current_mode value to appropriate mode -error on failure”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjLlh]”hŒ Parameters”…”�”}”(hjNlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjJlubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:298: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´M¸hjFlubjw )�”}”(hhh]”(j| )�”}”(hŒ=``const struct drm_device *dev`` :c:type:`drm_device` to use ”h]”(j‚ )�”}”(hŒ ``const struct drm_device *dev``”h]”jˆ )�”}”(hjklh]”hŒconst struct drm_device *dev”…”�”}”(hjmlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjilubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:298: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´M¶hjelubjž )�”}”(hhh]”hÎ)�”}”(hŒ:c:type:`drm_device` to use”h]”(h)�”}”(hŒ:c:type:`drm_device`”h]”jˆ )�”}”(hjŠlh]”hŒ drm_device”…”�”}”(hjŒlh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjˆlubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œ drm_device”uh1hh³j€lh´M¶hj„lubhŒ to use”…”�”}”(hj„lh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j€lh´M¶hj�lubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjelubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j€lh´M¶hjblubj| )�”}”(hŒ5``struct i2c_adapter *adapter`` I2C-over-aux adapter ”h]”(j‚ )�”}”(hŒ``struct i2c_adapter *adapter``”h]”jˆ )�”}”(hjÃlh]”hŒstruct i2c_adapter *adapter”…”�”}”(hjÅlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÁlubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:298: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´M·hj½lubjž )�”}”(hhh]”hÎ)�”}”(hŒI2C-over-aux adapter”h]”hŒI2C-over-aux adapter”…”�”}”(hjÜlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jØlh´M·hjÙlubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj½lubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jØlh´M·hjblubj| )�”}”(hŒP``enum drm_lspcon_mode *mode`` current lspcon mode of operation output variable ”h]”(j‚ )�”}”(hŒ``enum drm_lspcon_mode *mode``”h]”jˆ )�”}”(hjülh]”hŒenum drm_lspcon_mode *mode”…”�”}”(hjþlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjúlubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:298: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´M¸hjölubjž )�”}”(hhh]”hÎ)�”}”(hŒ0current lspcon mode of operation output variable”h]”hŒ0current lspcon mode of operation output variable”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jmh´M¸hjmubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjölubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jmh´M¸hjblubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjFlubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj7mh]”hŒReturn”…”�”}”(hj9mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj5mubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:298: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´MºhjFlubhÎ)�”}”(hŒO0 on success, sets the current_mode value to appropriate mode -error on failure”h]”hŒO0 on success, sets the current_mode value to appropriate mode -error on failure”…”�”}”(hjMmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:298: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´MºhjFlubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjQh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ drm_lspcon_set_mode (C function)”Œc.drm_lspcon_set_mode”hNt”auh1j† hjQh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ|int drm_lspcon_set_mode (const struct drm_device *dev, struct i2c_adapter *adapter, enum drm_lspcon_mode mode, int time_out)”h]”j¤ )�”}”(hŒ{int drm_lspcon_set_mode(const struct drm_device *dev, struct i2c_adapter *adapter, enum drm_lspcon_mode mode, int time_out)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj|mh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjxmh²hh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:298: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´Mäubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹mh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjxmh²hh³jŠmh´MäubjÍ )�”}”(hŒdrm_lspcon_set_mode”h]”jÓ )�”}”(hŒdrm_lspcon_set_mode”h]”hŒdrm_lspcon_set_mode”…”�”}”(hj�mh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj™mubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjxmh²hh³jŠmh´MäubjÞ)�”}”(hŒd(const struct drm_device *dev, struct i2c_adapter *adapter, enum drm_lspcon_mode mode, int time_out)”h]”(jä)�”}”(hŒconst struct drm_device *dev”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hj¹mh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjµmubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆmh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjµmubjª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjÔmh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjµmubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjámh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjµmubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_device”h]”hŒ drm_device”…”�”}”(hjòmh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjïmubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jômŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjŸmsbŒc.drm_lspcon_set_mode”†”asbuh1hhjµmubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjµmubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj nh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjµmubjÓ )�”}”(hŒdev”h]”hŒdev”…”�”}”(hj-nh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjµmubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj±mubjä)�”}”(hŒstruct i2c_adapter *adapter”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjFnh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjBnubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSnh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjBnubh)�”}”(hhh]”jÓ )�”}”(hŒ i2c_adapter”h]”hŒ i2c_adapter”…”�”}”(hjdnh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjanubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jfnŒmodname”NŒ classname”Njé jì )�”}”jï ]”jnŒc.drm_lspcon_set_mode”†”asbuh1hhjBnubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚nh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjBnubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj�nh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjBnubjÓ )�”}”(hŒadapter”h]”hŒadapter”…”�”}”(hj�nh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjBnubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj±mubjä)�”}”(hŒenum drm_lspcon_mode mode”h]”(jª )�”}”(hjÂ7h]”hŒenum”…”�”}”(hj¶nh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj²nubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃnh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj²nubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_lspcon_mode”h]”hŒdrm_lspcon_mode”…”�”}”(hjÔnh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÑnubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jÖnŒmodname”NŒ classname”Njé jì )�”}”jï ]”jnŒc.drm_lspcon_set_mode”†”asbuh1hhj²nubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjònh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj²nubjÓ )�”}”(hŒmode”h]”hŒmode”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj²nubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj±mubjä)�”}”(hŒ int time_out”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjoubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'oh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjoubjÓ )�”}”(hŒtime_out”h]”hŒtime_out”…”�”}”(hj5oh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjoubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj±mubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjxmh²hh³jŠmh´Mäubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjtmh²hh³jŠmh´Mäubah}”(h]”jomah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jŠmh´Mähjqmh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ@Change LSPCON's mode of operation by writing offset (0x80, 0x40)”h]”hŒBChange LSPCON’s mode of operation by writing offset (0x80, 0x40)”…”�”}”(hj_oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:298: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´Mähj\oh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjqmh²hh³jŠmh´Mäubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jwoj$ jwoj% ‰j& ‰j' ‰uh1j˜ h²hhjQh³Nh´Nubj) )�”}”(hX-**Parameters** ``const struct drm_device *dev`` :c:type:`drm_device` to use ``struct i2c_adapter *adapter`` I2C-over-aux adapter ``enum drm_lspcon_mode mode`` required mode of operation ``int time_out`` LSPCON mode change settle timeout **Return** 0 on success, -error on failure/timeout”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj�oh]”hŒ Parameters”…”�”}”(hjƒoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjoubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:298: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´Mèhj{oubjw )�”}”(hhh]”(j| )�”}”(hŒ=``const struct drm_device *dev`` :c:type:`drm_device` to use ”h]”(j‚ )�”}”(hŒ ``const struct drm_device *dev``”h]”jˆ )�”}”(hj oh]”hŒconst struct drm_device *dev”…”�”}”(hj¢oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjžoubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:298: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´Mæhjšoubjž )�”}”(hhh]”hÎ)�”}”(hŒ:c:type:`drm_device` to use”h]”(h)�”}”(hŒ:c:type:`drm_device`”h]”jˆ )�”}”(hj¿oh]”hŒ drm_device”…”�”}”(hjÁoh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj½oubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œ drm_device”uh1hh³jµoh´Mæhj¹oubhŒ to use”…”�”}”(hj¹oh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jµoh´Mæhj¶oubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjšoubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jµoh´Mæhj—oubj| )�”}”(hŒ5``struct i2c_adapter *adapter`` I2C-over-aux adapter ”h]”(j‚ )�”}”(hŒ``struct i2c_adapter *adapter``”h]”jˆ )�”}”(hjøoh]”hŒstruct i2c_adapter *adapter”…”�”}”(hjúoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjöoubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:298: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´Mçhjòoubjž )�”}”(hhh]”hÎ)�”}”(hŒI2C-over-aux adapter”h]”hŒI2C-over-aux adapter”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j ph´Mçhjpubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjòoubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j ph´Mçhj—oubj| )�”}”(hŒ9``enum drm_lspcon_mode mode`` required mode of operation ”h]”(j‚ )�”}”(hŒ``enum drm_lspcon_mode mode``”h]”jˆ )�”}”(hj1ph]”hŒenum drm_lspcon_mode mode”…”�”}”(hj3ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj/pubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:298: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´Mèhj+pubjž )�”}”(hhh]”hÎ)�”}”(hŒrequired mode of operation”h]”hŒrequired mode of operation”…”�”}”(hjJph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jFph´MèhjGpubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj+pubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jFph´Mèhj—oubj| )�”}”(hŒ3``int time_out`` LSPCON mode change settle timeout ”h]”(j‚ )�”}”(hŒ``int time_out``”h]”jˆ )�”}”(hjjph]”hŒ int time_out”…”�”}”(hjlph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjhpubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:298: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´Méhjdpubjž )�”}”(hhh]”hÎ)�”}”(hŒ!LSPCON mode change settle timeout”h]”hŒ!LSPCON mode change settle timeout”…”�”}”(hjƒph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jph´Méhj€pubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjdpubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jph´Méhj—oubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj{oubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj¥ph]”hŒReturn”…”�”}”(hj§ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj£pubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:298: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´Mëhj{oubhÎ)�”}”(hŒ'0 on success, -error on failure/timeout”h]”hŒ'0 on success, -error on failure/timeout”…”�”}”(hj»ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œv/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:298: ./drivers/gpu/drm/display/drm_dp_dual_mode_helper.c”h´Mëhj{oubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjQh²hh³Nh´Nubeh}”(h]”jDah ]”h"]”Œ9display port dual mode adaptor helper functions reference”ah$]”h&]”uh1hµhh·h²hh³hÌh´M"ubh¶)�”}”(hhh]”(h»)�”}”(hŒDisplay Port MST Helpers”h]”hŒDisplay Port MST Helpers”…”�”}”(hjÛph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÊj`uh1hºhjØph²hh³hÌh´M.ubh¶)�”}”(hhh]”(h»)�”}”(hŒOverview”h]”hŒOverview”…”�”}”(hjìph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÊjuh1hºhjéph²hh³hÌh´M1ubhÎ)�”}”(hŒÖThese functions contain parts of the DisplayPort 1.2a MultiStream Transport protocol. The helpers contain a topology manager and bandwidth manager. The helpers encapsulate the sending and received of sideband msgs.”h]”hŒÖThese functions contain parts of the DisplayPort 1.2a MultiStream Transport protocol. The helpers contain a topology manager and bandwidth manager. The helpers encapsulate the sending and received of sideband msgs.”…”�”}”(hjúph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:307: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´K6hjéph²hubh¶)�”}”(hhh]”(h»)�”}”(hŒTopology refcount overview”h]”hŒTopology refcount overview”…”�”}”(hj qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÊjžuh1hºhj qh³Nh´NubhÎ)�”}”(hXThe refcounting schemes for :c:type:`struct drm_dp_mst_branch ` and :c:type:`struct drm_dp_mst_port ` are somewhat unusual. Both ports and branch devices have two different kinds of refcounts: topology refcounts, and malloc refcounts.”h]”(hŒThe refcounting schemes for ”…”�”}”(hjqh²hh³Nh´Nubh)�”}”(hŒ6:c:type:`struct drm_dp_mst_branch `”h]”jˆ )�”}”(hj$qh]”hŒstruct drm_dp_mst_branch”…”�”}”(hj&qh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj"qubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_branch”uh1hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:310: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MVhjqubhŒ and ”…”�”}”(hjqh²hh³Nh´Nubh)�”}”(hŒ2:c:type:`struct drm_dp_mst_port `”h]”jˆ )�”}”(hjHqh]”hŒstruct drm_dp_mst_port”…”�”}”(hjJqh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjFqubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_port”uh1hh³jAqh´MVhjqubhŒ… are somewhat unusual. Both ports and branch devices have two different kinds of refcounts: topology refcounts, and malloc refcounts.”…”�”}”(hjqh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jAqh´MVhj qubhÎ)�”}”(hXQTopology refcounts are not exposed to drivers, and are handled internally by the DP MST helpers. The helpers use them in order to prevent the in-memory topology state from being changed in the middle of critical operations like changing the internal state of payload allocations. This means each branch and port will be considered to be connected to the rest of the topology until its topology refcount reaches zero. Additionally, for ports this means that their associated :c:type:`struct drm_connector ` will stay registered with userspace until the port's refcount reaches 0.”h]”(hXÚTopology refcounts are not exposed to drivers, and are handled internally by the DP MST helpers. The helpers use them in order to prevent the in-memory topology state from being changed in the middle of critical operations like changing the internal state of payload allocations. This means each branch and port will be considered to be connected to the rest of the topology until its topology refcount reaches zero. Additionally, for ports this means that their associated ”…”�”}”(hjoqh²hh³Nh´Nubh)�”}”(hŒ.:c:type:`struct drm_connector `”h]”jˆ )�”}”(hjyqh]”hŒstruct drm_connector”…”�”}”(hj{qh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjwqubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_connector”uh1hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:310: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MZhjoqubhŒK will stay registered with userspace until the port’s refcount reaches 0.”…”�”}”(hjoqh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j–qh´MZhj qubeh}”(h]”j¤ah ]”h"]”Œtopology refcount overview”ah$]”h&]”uh1hµhjéph²hh³Nh´Nubh¶)�”}”(hhh]”(h»)�”}”(hŒMalloc refcount overview”h]”hŒMalloc refcount overview”…”�”}”(hj«qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÊjÀuh1hºhj¨qh³Nh´NubhÎ)�”}”(hX?Malloc references are used to keep a :c:type:`struct drm_dp_mst_port ` or :c:type:`struct drm_dp_mst_branch ` allocated even after all of its topology references have been dropped, so that the driver or MST helpers can safely access each branch's last known state before it was disconnected from the topology. When the malloc refcount of a port or branch reaches 0, the memory allocation containing the :c:type:`struct drm_dp_mst_branch ` or :c:type:`struct drm_dp_mst_port ` respectively will be freed.”h]”(hŒ%Malloc references are used to keep a ”…”�”}”(hj¹qh²hh³Nh´Nubh)�”}”(hŒ2:c:type:`struct drm_dp_mst_port `”h]”jˆ )�”}”(hjÃqh]”hŒstruct drm_dp_mst_port”…”�”}”(hjÅqh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÁqubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_port”uh1hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:310: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mfhj¹qubhŒ or ”…”�”}”(hj¹qh²hh³Nh´Nubh)�”}”(hŒ6:c:type:`struct drm_dp_mst_branch `”h]”jˆ )�”}”(hjçqh]”hŒstruct drm_dp_mst_branch”…”�”}”(hjéqh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjåqubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_branch”uh1hh³jàqh´Mfhj¹qubhX( allocated even after all of its topology references have been dropped, so that the driver or MST helpers can safely access each branch’s last known state before it was disconnected from the topology. When the malloc refcount of a port or branch reaches 0, the memory allocation containing the ”…”�”}”(hj¹qh²hh³Nh´Nubh)�”}”(hŒ6:c:type:`struct drm_dp_mst_branch `”h]”jˆ )�”}”(hj rh]”hŒstruct drm_dp_mst_branch”…”�”}”(hj rh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjrubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_branch”uh1hh³jàqh´Mfhj¹qubhŒ or ”…”�”}”hj¹qsbh)�”}”(hŒ2:c:type:`struct drm_dp_mst_port `”h]”jˆ )�”}”(hj-rh]”hŒstruct drm_dp_mst_port”…”�”}”(hj/rh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj+rubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_port”uh1hh³jàqh´Mfhj¹qubhŒ respectively will be freed.”…”�”}”(hj¹qh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jàqh´Mfhj¨qubhÎ)�”}”(hXÙFor :c:type:`struct drm_dp_mst_branch `, malloc refcounts are not currently exposed to drivers. As of writing this documentation, there are no drivers that have a usecase for accessing :c:type:`struct drm_dp_mst_branch ` outside of the MST helpers. Exposing this API to drivers in a race-free manner would take more tweaking of the refcounting scheme, however patches are welcome provided there is a legitimate driver usecase for this.”h]”(hŒFor ”…”�”}”(hjTrh²hh³Nh´Nubh)�”}”(hŒ6:c:type:`struct drm_dp_mst_branch `”h]”jˆ )�”}”(hj^rh]”hŒstruct drm_dp_mst_branch”…”�”}”(hj`rh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj\rubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_branch”uh1hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:310: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MnhjTrubhŒ’, malloc refcounts are not currently exposed to drivers. As of writing this documentation, there are no drivers that have a usecase for accessing ”…”�”}”(hjTrh²hh³Nh´Nubh)�”}”(hŒ6:c:type:`struct drm_dp_mst_branch `”h]”jˆ )�”}”(hj‚rh]”hŒstruct drm_dp_mst_branch”…”�”}”(hj„rh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj€rubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_branch”uh1hh³j{rh´MnhjTrubhŒ× outside of the MST helpers. Exposing this API to drivers in a race-free manner would take more tweaking of the refcounting scheme, however patches are welcome provided there is a legitimate driver usecase for this.”…”�”}”(hjTrh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j{rh´Mnhj¨qubeh}”(h]”jÆah ]”h"]”Œmalloc refcount overview”ah$]”h&]”uh1hµhjéph²hh³Nh´Nubh¶)�”}”(hhh]”(h»)�”}”(hŒ$Refcount relationships in a topology”h]”hŒ$Refcount relationships in a topology”…”�”}”(hj³rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÊjâuh1hºhj°rh³Nh´NubhÎ)�”}”(hŒjLet's take a look at why the relationship between topology and malloc refcounts is designed the way it is.”h]”hŒlLet’s take a look at why the relationship between topology and malloc refcounts is designed the way it is.”…”�”}”(hjÁrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:310: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mxhj°rubŒkfigure”Œ kernel_figure”“”)�”}”(hhh]”hŒfigure”“”)�”}”(hhh]”(hŒimage”“”)�”}”(hXÛ.. kernel-figure:: dp-mst/topology-figure-1.dot An example of topology and malloc refs in a DP MST topology with two active payloads. Topology refcount increments are indicated by solid lines, and malloc refcount increments are indicated by dashed lines. Each starts from the branch which incremented the refcount, and ends at the branch to which the refcount belongs to, i.e. the arrow points the same way as the C pointers used to reference a structure. ”h]”h}”(h]”h ]”h"]”h$]”h&]”Œuri”Œ gpu/dp-mst/topology-figure-1.dot”Œ candidates”}”jOjèrsuh1jÛrhjØrh³hÌh´KubhŒcaption”“”)�”}”(hX—An example of topology and malloc refs in a DP MST topology with two active payloads. Topology refcount increments are indicated by solid lines, and malloc refcount increments are indicated by dashed lines. Each starts from the branch which incremented the refcount, and ends at the branch to which the refcount belongs to, i.e. the arrow points the same way as the C pointers used to reference a structure.”h]”hX—An example of topology and malloc refs in a DP MST topology with two active payloads. Topology refcount increments are indicated by solid lines, and malloc refcount increments are indicated by dashed lines. Each starts from the branch which incremented the refcount, and ends at the branch to which the refcount belongs to, i.e. the arrow points the same way as the C pointers used to reference a structure.”…”�”}”(hjírh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jërh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:310: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M}hjØrubeh}”(h]”Œid5”ah ]”h"]”h$]”h&]”uh1jÖrhjÓrubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑrhj°rubhÎ)�”}”(hŒêAs you can see in the above figure, every branch increments the topology refcount of its children, and increments the malloc refcount of its parent. Additionally, every payload increments the malloc refcount of its assigned port by 1.”h]”hŒêAs you can see in the above figure, every branch increments the topology refcount of its children, and increments the malloc refcount of its parent. Additionally, every payload increments the malloc refcount of its assigned port by 1.”…”�”}”(hj sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:310: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M„hj°rubhÎ)�”}”(hŒÈSo, what would happen if MSTB #3 from the above figure was unplugged from the system, but the driver hadn't yet removed payload #2 from port #3? The topology would start to look like the figure below.”h]”hŒÊSo, what would happen if MSTB #3 from the above figure was unplugged from the system, but the driver hadn’t yet removed payload #2 from port #3? The topology would start to look like the figure below.”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:310: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M‰hj°rubjÒr)�”}”(hhh]”j×r)�”}”(hhh]”(jÜr)�”}”(hŒ¿.. kernel-figure:: dp-mst/topology-figure-2.dot Ports and branch devices which have been released from memory are colored grey, and references which have been removed are colored red. ”h]”h}”(h]”h ]”h"]”h$]”h&]”Œuri”Œ gpu/dp-mst/topology-figure-2.dot”jér}”jOj8ssuh1jÛrhj*sh³hÌh´Kubjìr)�”}”(hŒ‡Ports and branch devices which have been released from memory are colored grey, and references which have been removed are colored red.”h]”hŒ‡Ports and branch devices which have been released from memory are colored grey, and references which have been removed are colored red.”…”�”}”(hj:sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jërh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:310: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M�hj*subeh}”(h]”Œid6”ah ]”h"]”h$]”h&]”uh1jÖrhj'subah}”(h]”h ]”h"]”h$]”h&]”uh1jÑrhj°rubhÎ)�”}”(hXÔWhenever a port or branch device's topology refcount reaches zero, it will decrement the topology refcounts of all its children, the malloc refcount of its parent, and finally its own malloc refcount. For MSTB #4 and port #4, this means they both have been disconnected from the topology and freed from memory. But, because payload #2 is still holding a reference to port #3, port #3 is removed from the topology but its :c:type:`struct drm_dp_mst_port ` is still accessible from memory. This also means port #3 has not yet decremented the malloc refcount of MSTB #3, so its :c:type:`struct drm_dp_mst_branch ` will also stay allocated in memory until port #3's malloc refcount reaches 0.”h]”(hX§Whenever a port or branch device’s topology refcount reaches zero, it will decrement the topology refcounts of all its children, the malloc refcount of its parent, and finally its own malloc refcount. For MSTB #4 and port #4, this means they both have been disconnected from the topology and freed from memory. But, because payload #2 is still holding a reference to port #3, port #3 is removed from the topology but its ”…”�”}”(hjVsh²hh³Nh´Nubh)�”}”(hŒ2:c:type:`struct drm_dp_mst_port `”h]”jˆ )�”}”(hj`sh]”hŒstruct drm_dp_mst_port”…”�”}”(hjbsh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj^subah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_port”uh1hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:310: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M’hjVsubhŒy is still accessible from memory. This also means port #3 has not yet decremented the malloc refcount of MSTB #3, so its ”…”�”}”(hjVsh²hh³Nh´Nubh)�”}”(hŒ6:c:type:`struct drm_dp_mst_branch `”h]”jˆ )�”}”(hj„sh]”hŒstruct drm_dp_mst_branch”…”�”}”(hj†sh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj‚subah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_branch”uh1hh³j}sh´M’hjVsubhŒP will also stay allocated in memory until port #3’s malloc refcount reaches 0.”…”�”}”(hjVsh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j}sh´M’hj°rubhÎ)�”}”(hŒêThis relationship is necessary because in order to release payload #2, we need to be able to figure out the last relative of port #3 that's still connected to the topology. In this case, we would travel up the topology as shown below.”h]”hŒìThis relationship is necessary because in order to release payload #2, we need to be able to figure out the last relative of port #3 that’s still connected to the topology. In this case, we would travel up the topology as shown below.”…”�”}”(hj«sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:310: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M�hj°rubjÒr)�”}”(hhh]”j×r)�”}”(hhh]”jÜr)�”}”(hŒ0.. kernel-figure:: dp-mst/topology-figure-3.dot ”h]”h}”(h]”h ]”h"]”h$]”h&]”Œuri”Œ gpu/dp-mst/topology-figure-3.dot”jér}”jOjËssuh1jÛrhj½sh³hÌh´Kubah}”(h]”h ]”h"]”h$]”h&]”uh1jÖrhjºsubah}”(h]”h ]”h"]”h$]”h&]”uh1jÑrhj°rubhÎ)�”}”(hŒ[And finally, remove payload #2 by communicating with port #2 through sideband transactions.”h]”hŒ[And finally, remove payload #2 by communicating with port #2 through sideband transactions.”…”�”}”(hjÙsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:310: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M¤hj°rubeh}”(h]”jèah ]”h"]”Œ$refcount relationships in a topology”ah$]”h&]”uh1hµhjéph²hh³Nh´Nubeh}”(h]”j…ah ]”h"]”h$]”Œoverview”ah&]”uh1hµhjØph²hh³hÌh´M1j„CKubh¶)�”}”(hhh]”(h»)�”}”(hŒFunctions Reference”h]”hŒFunctions Reference”…”�”}”(hjùsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÊjuh1hºhjösh²hh³hÌh´M:ubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_dp_mst_port (C struct)”Œc.drm_dp_mst_port”hNt”auh1j† hjösh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒdrm_dp_mst_port”h]”j¤ )�”}”(hŒstruct drm_dp_mst_port”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj th²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjth²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Kubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.th²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjth²hh³j-th´KubjÍ )�”}”(hŒdrm_dp_mst_port”h]”jÓ )�”}”(hjth]”hŒdrm_dp_mst_port”…”�”}”(hj@th²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj`.lock. ``mcs`` message capability status - DP 1.2 spec. Protected by :c:type:`drm_dp_mst_topology_mgr.base `.lock. ``ddps`` DisplayPort Device Plug Status - DP 1.2. Protected by :c:type:`drm_dp_mst_topology_mgr.base `.lock. ``pdt`` Peer Device Type. Protected by :c:type:`drm_dp_mst_topology_mgr.base `.lock. ``ldps`` Legacy Device Plug Status. Protected by :c:type:`drm_dp_mst_topology_mgr.base `.lock. ``dpcd_rev`` DPCD revision of device on this port. Protected by :c:type:`drm_dp_mst_topology_mgr.base `.lock. ``num_sdp_streams`` Number of simultaneous streams. Protected by :c:type:`drm_dp_mst_topology_mgr.base `.lock. ``num_sdp_stream_sinks`` Number of stream sinks. Protected by :c:type:`drm_dp_mst_topology_mgr.base `.lock. ``full_pbn`` Max possible bandwidth for this port. Protected by :c:type:`drm_dp_mst_topology_mgr.base `.lock. ``next`` link to next port on this branch device ``mstb`` the branch device connected to this port, if there is one. This should be considered protected for reading by :c:type:`drm_dp_mst_topology_mgr.lock `. There are two exceptions to this: :c:type:`drm_dp_mst_topology_mgr.up_req_work ` and :c:type:`drm_dp_mst_topology_mgr.work `, which do not grab :c:type:`drm_dp_mst_topology_mgr.lock ` during reads but are the only updaters of this list and are protected from writing concurrently by :c:type:`drm_dp_mst_topology_mgr.probe_lock `. ``aux`` i2c aux transport to talk to device connected to this port, protected by :c:type:`drm_dp_mst_topology_mgr.base `.lock. ``passthrough_aux`` parent aux to which DSC pass-through requests should be sent, only set if DSC pass-through is possible. ``parent`` branch device parent of this port ``connector`` DRM connector this port is connected to. Protected by :c:type:`drm_dp_mst_topology_mgr.base `.lock. ``mgr`` topology manager this port lives under. ``cached_edid`` for DP logical ports - make tiling work by ensuring that the EDID for all connectors is read immediately. ``fec_capable`` bool indicating if FEC can be supported up to that point in the MST topology.”•h]”(hÎ)�”}”(hŒ**Definition**::”h]”(j3 )�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj†th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj‚tubhŒ:”…”�”}”(hj‚th²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´K@hj~tubjN )�”}”(hXÁstruct drm_dp_mst_port { struct kref topology_kref; struct kref malloc_kref; #if IS_ENABLED(CONFIG_DRM_DEBUG_DP_MST_TOPOLOGY_REFS); struct drm_dp_mst_topology_ref_history topology_ref_history; #endif; u8 port_num; bool input; bool mcs; bool ddps; u8 pdt; bool ldps; u8 dpcd_rev; u8 num_sdp_streams; u8 num_sdp_stream_sinks; uint16_t full_pbn; struct list_head next; struct drm_dp_mst_branch *mstb; struct drm_dp_aux aux; struct drm_dp_aux *passthrough_aux; struct drm_dp_mst_branch *parent; struct drm_connector *connector; struct drm_dp_mst_topology_mgr *mgr; const struct drm_edid *cached_edid; bool fec_capable; };”h]”hXÁstruct drm_dp_mst_port { struct kref topology_kref; struct kref malloc_kref; #if IS_ENABLED(CONFIG_DRM_DEBUG_DP_MST_TOPOLOGY_REFS); struct drm_dp_mst_topology_ref_history topology_ref_history; #endif; u8 port_num; bool input; bool mcs; bool ddps; u8 pdt; bool ldps; u8 dpcd_rev; u8 num_sdp_streams; u8 num_sdp_stream_sinks; uint16_t full_pbn; struct list_head next; struct drm_dp_mst_branch *mstb; struct drm_dp_aux aux; struct drm_dp_aux *passthrough_aux; struct drm_dp_mst_branch *parent; struct drm_connector *connector; struct drm_dp_mst_topology_mgr *mgr; const struct drm_edid *cached_edid; bool fec_capable; };”…”�”}”hjŸtsbah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jM h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´KBhj~tubhÎ)�”}”(hŒ **Members**”h]”j3 )�”}”(hj°th]”hŒMembers”…”�”}”(hj²th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj®tubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´K]hj~tubjw )�”}”(hhh]”(j| )�”}”(hŒw``topology_kref`` refcount for this port's lifetime in the topology, only the DP MST helpers should need to touch this ”h]”(j‚ )�”}”(hŒ``topology_kref``”h]”jˆ )�”}”(hjÏth]”hŒ topology_kref”…”�”}”(hjÑth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÍtubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´KahjÉtubjž )�”}”(hhh]”hÎ)�”}”(hŒdrefcount for this port's lifetime in the topology, only the DP MST helpers should need to touch this”h]”hŒfrefcount for this port’s lifetime in the topology, only the DP MST helpers should need to touch this”…”�”}”(hjèth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´K`hjåtubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÉtubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jäth´KahjÆtubj| )�”}”(hŒ‘``malloc_kref`` refcount for the memory allocation containing this structure. See drm_dp_mst_get_port_malloc() and drm_dp_mst_put_port_malloc(). ”h]”(j‚ )�”}”(hŒ``malloc_kref``”h]”jˆ )�”}”(hj uh]”hŒ malloc_kref”…”�”}”(hj uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjuubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Khhjuubjž )�”}”(hhh]”hÎ)�”}”(hŒ€refcount for the memory allocation containing this structure. See drm_dp_mst_get_port_malloc() and drm_dp_mst_put_port_malloc().”h]”hŒ€refcount for the memory allocation containing this structure. See drm_dp_mst_get_port_malloc() and drm_dp_mst_put_port_malloc().”…”�”}”(hj"uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Kfhjuubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjuubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³juh´KhhjÆtubj| )�”}”(hŒv``topology_ref_history`` A history of each topology reference/dereference. See CONFIG_DRM_DEBUG_DP_MST_TOPOLOGY_REFS. ”h]”(j‚ )�”}”(hŒ``topology_ref_history``”h]”jˆ )�”}”(hjCuh]”hŒtopology_ref_history”…”�”}”(hjEuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjAuubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Kohj=uubjž )�”}”(hhh]”hÎ)�”}”(hŒ\A history of each topology reference/dereference. See CONFIG_DRM_DEBUG_DP_MST_TOPOLOGY_REFS.”h]”hŒ\A history of each topology reference/dereference. See CONFIG_DRM_DEBUG_DP_MST_TOPOLOGY_REFS.”…”�”}”(hj\uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´KnhjYuubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj=uubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jXuh´KohjÆtubj| )�”}”(hŒ``port_num`` port number ”h]”(j‚ )�”}”(hŒ ``port_num``”h]”jˆ )�”}”(hj}uh]”hŒport_num”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj{uubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´K>hjwuubjž )�”}”(hhh]”hÎ)�”}”(hŒ port number”h]”hŒ port number”…”�”}”(hj–uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j’uh´K>hj“uubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjwuubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j’uh´K>hjÆtubj| )�”}”(hŒ}``input`` if this port is an input port. Protected by :c:type:`drm_dp_mst_topology_mgr.base `.lock. ”h]”(j‚ )�”}”(hŒ ``input``”h]”jˆ )�”}”(hj¶uh]”hŒinput”…”�”}”(hj¸uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj´uubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´K@hj°uubjž )�”}”(hhh]”hÎ)�”}”(hŒrif this port is an input port. Protected by :c:type:`drm_dp_mst_topology_mgr.base `.lock.”h]”(hŒ,if this port is an input port. Protected by ”…”�”}”(hjÏuh²hh³Nh´Nubh)�”}”(hŒ@:c:type:`drm_dp_mst_topology_mgr.base `”h]”jˆ )�”}”(hjÙuh]”hŒdrm_dp_mst_topology_mgr.base”…”�”}”(hjÛuh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj×uubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_topology_mgr”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´K?hjÏuubhŒ.lock.”…”�”}”(hjÏuh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jöuh´K?hjÌuubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj°uubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jËuh´K@hjÆtubj| )�”}”(hŒ…``mcs`` message capability status - DP 1.2 spec. Protected by :c:type:`drm_dp_mst_topology_mgr.base `.lock. ”h]”(j‚ )�”}”(hŒ``mcs``”h]”jˆ )�”}”(hjvh]”hŒmcs”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjvubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´KBhj vubjž )�”}”(hhh]”hÎ)�”}”(hŒ|message capability status - DP 1.2 spec. Protected by :c:type:`drm_dp_mst_topology_mgr.base `.lock.”h]”(hŒ6message capability status - DP 1.2 spec. Protected by ”…”�”}”(hj,vh²hh³Nh´Nubh)�”}”(hŒ@:c:type:`drm_dp_mst_topology_mgr.base `”h]”jˆ )�”}”(hj6vh]”hŒdrm_dp_mst_topology_mgr.base”…”�”}”(hj8vh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj4vubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_topology_mgr”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´KAhj,vubhŒ.lock.”…”�”}”(hj,vh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jSvh´KAhj)vubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj vubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j(vh´KBhjÆtubj| )�”}”(hŒ†``ddps`` DisplayPort Device Plug Status - DP 1.2. Protected by :c:type:`drm_dp_mst_topology_mgr.base `.lock. ”h]”(j‚ )�”}”(hŒ``ddps``”h]”jˆ )�”}”(hjpvh]”hŒddps”…”�”}”(hjrvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjnvubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´KDhjjvubjž )�”}”(hhh]”hÎ)�”}”(hŒ|DisplayPort Device Plug Status - DP 1.2. Protected by :c:type:`drm_dp_mst_topology_mgr.base `.lock.”h]”(hŒ6DisplayPort Device Plug Status - DP 1.2. Protected by ”…”�”}”(hj‰vh²hh³Nh´Nubh)�”}”(hŒ@:c:type:`drm_dp_mst_topology_mgr.base `”h]”jˆ )�”}”(hj“vh]”hŒdrm_dp_mst_topology_mgr.base”…”�”}”(hj•vh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj‘vubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_topology_mgr”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´KChj‰vubhŒ.lock.”…”�”}”(hj‰vh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j°vh´KChj†vubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjjvubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j…vh´KDhjÆtubj| )�”}”(hŒn``pdt`` Peer Device Type. Protected by :c:type:`drm_dp_mst_topology_mgr.base `.lock. ”h]”(j‚ )�”}”(hŒ``pdt``”h]”jˆ )�”}”(hjÍvh]”hŒpdt”…”�”}”(hjÏvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjËvubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´KFhjÇvubjž )�”}”(hhh]”hÎ)�”}”(hŒePeer Device Type. Protected by :c:type:`drm_dp_mst_topology_mgr.base `.lock.”h]”(hŒPeer Device Type. Protected by ”…”�”}”(hjævh²hh³Nh´Nubh)�”}”(hŒ@:c:type:`drm_dp_mst_topology_mgr.base `”h]”jˆ )�”}”(hjðvh]”hŒdrm_dp_mst_topology_mgr.base”…”�”}”(hjòvh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjîvubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_topology_mgr”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´KEhjævubhŒ.lock.”…”�”}”(hjævh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j wh´KEhjãvubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÇvubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jâvh´KFhjÆtubj| )�”}”(hŒx``ldps`` Legacy Device Plug Status. Protected by :c:type:`drm_dp_mst_topology_mgr.base `.lock. ”h]”(j‚ )�”}”(hŒ``ldps``”h]”jˆ )�”}”(hj*wh]”hŒldps”…”�”}”(hj,wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj(wubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´KHhj$wubjž )�”}”(hhh]”hÎ)�”}”(hŒnLegacy Device Plug Status. Protected by :c:type:`drm_dp_mst_topology_mgr.base `.lock.”h]”(hŒ(Legacy Device Plug Status. Protected by ”…”�”}”(hjCwh²hh³Nh´Nubh)�”}”(hŒ@:c:type:`drm_dp_mst_topology_mgr.base `”h]”jˆ )�”}”(hjMwh]”hŒdrm_dp_mst_topology_mgr.base”…”�”}”(hjOwh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjKwubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_topology_mgr”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´KGhjCwubhŒ.lock.”…”�”}”(hjCwh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jjwh´KGhj@wubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj$wubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j?wh´KHhjÆtubj| )�”}”(hŒ‡``dpcd_rev`` DPCD revision of device on this port. Protected by :c:type:`drm_dp_mst_topology_mgr.base `.lock. ”h]”(j‚ )�”}”(hŒ ``dpcd_rev``”h]”jˆ )�”}”(hj‡wh]”hŒdpcd_rev”…”�”}”(hj‰wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj…wubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´KJhj�wubjž )�”}”(hhh]”hÎ)�”}”(hŒyDPCD revision of device on this port. Protected by :c:type:`drm_dp_mst_topology_mgr.base `.lock.”h]”(hŒ3DPCD revision of device on this port. Protected by ”…”�”}”(hj wh²hh³Nh´Nubh)�”}”(hŒ@:c:type:`drm_dp_mst_topology_mgr.base `”h]”jˆ )�”}”(hjªwh]”hŒdrm_dp_mst_topology_mgr.base”…”�”}”(hj¬wh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj¨wubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_topology_mgr”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´KIhj wubhŒ.lock.”…”�”}”(hj wh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÇwh´KIhj�wubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj�wubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jœwh´KJhjÆtubj| )�”}”(hŒˆ``num_sdp_streams`` Number of simultaneous streams. Protected by :c:type:`drm_dp_mst_topology_mgr.base `.lock. ”h]”(j‚ )�”}”(hŒ``num_sdp_streams``”h]”jˆ )�”}”(hjäwh]”hŒnum_sdp_streams”…”�”}”(hjæwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjâwubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´KLhjÞwubjž )�”}”(hhh]”hÎ)�”}”(hŒsNumber of simultaneous streams. Protected by :c:type:`drm_dp_mst_topology_mgr.base `.lock.”h]”(hŒ-Number of simultaneous streams. Protected by ”…”�”}”(hjýwh²hh³Nh´Nubh)�”}”(hŒ@:c:type:`drm_dp_mst_topology_mgr.base `”h]”jˆ )�”}”(hjxh]”hŒdrm_dp_mst_topology_mgr.base”…”�”}”(hj xh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjxubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_topology_mgr”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´KKhjýwubhŒ.lock.”…”�”}”(hjýwh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j$xh´KKhjúwubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÞwubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jùwh´KLhjÆtubj| )�”}”(hŒ…``num_sdp_stream_sinks`` Number of stream sinks. Protected by :c:type:`drm_dp_mst_topology_mgr.base `.lock. ”h]”(j‚ )�”}”(hŒ``num_sdp_stream_sinks``”h]”jˆ )�”}”(hjAxh]”hŒnum_sdp_stream_sinks”…”�”}”(hjCxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj?xubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´KNhj;xubjž )�”}”(hhh]”hÎ)�”}”(hŒkNumber of stream sinks. Protected by :c:type:`drm_dp_mst_topology_mgr.base `.lock.”h]”(hŒ%Number of stream sinks. Protected by ”…”�”}”(hjZxh²hh³Nh´Nubh)�”}”(hŒ@:c:type:`drm_dp_mst_topology_mgr.base `”h]”jˆ )�”}”(hjdxh]”hŒdrm_dp_mst_topology_mgr.base”…”�”}”(hjfxh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjbxubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_topology_mgr”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´KMhjZxubhŒ.lock.”…”�”}”(hjZxh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j�xh´KMhjWxubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj;xubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jVxh´KNhjÆtubj| )�”}”(hŒ‡``full_pbn`` Max possible bandwidth for this port. Protected by :c:type:`drm_dp_mst_topology_mgr.base `.lock. ”h]”(j‚ )�”}”(hŒ ``full_pbn``”h]”jˆ )�”}”(hjžxh]”hŒfull_pbn”…”�”}”(hj xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjœxubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´KPhj˜xubjž )�”}”(hhh]”hÎ)�”}”(hŒyMax possible bandwidth for this port. Protected by :c:type:`drm_dp_mst_topology_mgr.base `.lock.”h]”(hŒ3Max possible bandwidth for this port. Protected by ”…”�”}”(hj·xh²hh³Nh´Nubh)�”}”(hŒ@:c:type:`drm_dp_mst_topology_mgr.base `”h]”jˆ )�”}”(hjÁxh]”hŒdrm_dp_mst_topology_mgr.base”…”�”}”(hjÃxh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj¿xubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_topology_mgr”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´KOhj·xubhŒ.lock.”…”�”}”(hj·xh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÞxh´KOhj´xubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj˜xubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j³xh´KPhjÆtubj| )�”}”(hŒ1``next`` link to next port on this branch device ”h]”(j‚ )�”}”(hŒ``next``”h]”jˆ )�”}”(hjûxh]”hŒnext”…”�”}”(hjýxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjùxubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´KQhjõxubjž )�”}”(hhh]”hÎ)�”}”(hŒ'link to next port on this branch device”h]”hŒ'link to next port on this branch device”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jyh´KQhjyubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjõxubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jyh´KQhjÆtubj| )�”}”(hXg``mstb`` the branch device connected to this port, if there is one. This should be considered protected for reading by :c:type:`drm_dp_mst_topology_mgr.lock `. There are two exceptions to this: :c:type:`drm_dp_mst_topology_mgr.up_req_work ` and :c:type:`drm_dp_mst_topology_mgr.work `, which do not grab :c:type:`drm_dp_mst_topology_mgr.lock ` during reads but are the only updaters of this list and are protected from writing concurrently by :c:type:`drm_dp_mst_topology_mgr.probe_lock `. ”h]”(j‚ )�”}”(hŒ``mstb``”h]”jˆ )�”}”(hj4yh]”hŒmstb”…”�”}”(hj6yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj2yubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´K‡hj.yubjž )�”}”(hhh]”hÎ)�”}”(hX]the branch device connected to this port, if there is one. This should be considered protected for reading by :c:type:`drm_dp_mst_topology_mgr.lock `. There are two exceptions to this: :c:type:`drm_dp_mst_topology_mgr.up_req_work ` and :c:type:`drm_dp_mst_topology_mgr.work `, which do not grab :c:type:`drm_dp_mst_topology_mgr.lock ` during reads but are the only updaters of this list and are protected from writing concurrently by :c:type:`drm_dp_mst_topology_mgr.probe_lock `.”h]”(hŒnthe branch device connected to this port, if there is one. This should be considered protected for reading by ”…”�”}”(hjMyh²hh³Nh´Nubh)�”}”(hŒ@:c:type:`drm_dp_mst_topology_mgr.lock `”h]”jˆ )�”}”(hjWyh]”hŒdrm_dp_mst_topology_mgr.lock”…”�”}”(hjYyh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjUyubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_topology_mgr”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´K€hjMyubhŒ$. There are two exceptions to this: ”…”�”}”(hjMyh²hh³Nh´Nubh)�”}”(hŒG:c:type:`drm_dp_mst_topology_mgr.up_req_work `”h]”jˆ )�”}”(hj{yh]”hŒ#drm_dp_mst_topology_mgr.up_req_work”…”�”}”(hj}yh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjyyubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_topology_mgr”uh1hh³jtyh´K€hjMyubhŒ and ”…”�”}”(hjMyh²hh³Nh´Nubh)�”}”(hŒ@:c:type:`drm_dp_mst_topology_mgr.work `”h]”jˆ )�”}”(hjžyh]”hŒdrm_dp_mst_topology_mgr.work”…”�”}”(hj yh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjœyubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_topology_mgr”uh1hh³jtyh´K€hjMyubhŒ, which do not grab ”…”�”}”(hjMyh²hh³Nh´Nubh)�”}”(hŒ@:c:type:`drm_dp_mst_topology_mgr.lock `”h]”jˆ )�”}”(hjÁyh]”hŒdrm_dp_mst_topology_mgr.lock”…”�”}”(hjÃyh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj¿yubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_topology_mgr”uh1hh³jtyh´K€hjMyubhŒd during reads but are the only updaters of this list and are protected from writing concurrently by ”…”�”}”(hjMyh²hh³Nh´Nubh)�”}”(hŒF:c:type:`drm_dp_mst_topology_mgr.probe_lock `”h]”jˆ )�”}”(hjäyh]”hŒ"drm_dp_mst_topology_mgr.probe_lock”…”�”}”(hjæyh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjâyubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_topology_mgr”uh1hh³jtyh´K€hjMyubhŒ.”…”�”}”(hjMyh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jtyh´K€hjJyubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj.yubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jIyh´K‡hjÆtubj| )�”}”(hŒ˜``aux`` i2c aux transport to talk to device connected to this port, protected by :c:type:`drm_dp_mst_topology_mgr.base `.lock. ”h]”(j‚ )�”}”(hŒ``aux``”h]”jˆ )�”}”(hjzh]”hŒaux”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjzubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´KShjzubjž )�”}”(hhh]”hÎ)�”}”(hŒ�i2c aux transport to talk to device connected to this port, protected by :c:type:`drm_dp_mst_topology_mgr.base `.lock.”h]”(hŒIi2c aux transport to talk to device connected to this port, protected by ”…”�”}”(hj6zh²hh³Nh´Nubh)�”}”(hŒ@:c:type:`drm_dp_mst_topology_mgr.base `”h]”jˆ )�”}”(hj@zh]”hŒdrm_dp_mst_topology_mgr.base”…”�”}”(hjBzh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj>zubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_topology_mgr”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´KRhj6zubhŒ.lock.”…”�”}”(hj6zh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j]zh´KRhj3zubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjzubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j2zh´KShjÆtubj| )�”}”(hŒ|``passthrough_aux`` parent aux to which DSC pass-through requests should be sent, only set if DSC pass-through is possible. ”h]”(j‚ )�”}”(hŒ``passthrough_aux``”h]”jˆ )�”}”(hjzzh]”hŒpassthrough_aux”…”�”}”(hj|zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjxzubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´KUhjtzubjž )�”}”(hhh]”hÎ)�”}”(hŒgparent aux to which DSC pass-through requests should be sent, only set if DSC pass-through is possible.”h]”hŒgparent aux to which DSC pass-through requests should be sent, only set if DSC pass-through is possible.”…”�”}”(hj“zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´KThj�zubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjtzubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j�zh´KUhjÆtubj| )�”}”(hŒ-``parent`` branch device parent of this port ”h]”(j‚ )�”}”(hŒ ``parent``”h]”jˆ )�”}”(hj´zh]”hŒparent”…”�”}”(hj¶zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj²zubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´KVhj®zubjž )�”}”(hhh]”hÎ)�”}”(hŒ!branch device parent of this port”h]”hŒ!branch device parent of this port”…”�”}”(hjÍzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÉzh´KVhjÊzubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj®zubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÉzh´KVhjÆtubj| )�”}”(hŒ‹``connector`` DRM connector this port is connected to. Protected by :c:type:`drm_dp_mst_topology_mgr.base `.lock. ”h]”(j‚ )�”}”(hŒ ``connector``”h]”jˆ )�”}”(hjízh]”hŒ connector”…”�”}”(hjïzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjëzubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´KXhjçzubjž )�”}”(hhh]”hÎ)�”}”(hŒ|DRM connector this port is connected to. Protected by :c:type:`drm_dp_mst_topology_mgr.base `.lock.”h]”(hŒ6DRM connector this port is connected to. Protected by ”…”�”}”(hj{h²hh³Nh´Nubh)�”}”(hŒ@:c:type:`drm_dp_mst_topology_mgr.base `”h]”jˆ )�”}”(hj{h]”hŒdrm_dp_mst_topology_mgr.base”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj{ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_topology_mgr”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´KWhj{ubhŒ.lock.”…”�”}”(hj{h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j-{h´KWhj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjçzubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j{h´KXhjÆtubj| )�”}”(hŒ0``mgr`` topology manager this port lives under. ”h]”(j‚ )�”}”(hŒ``mgr``”h]”jˆ )�”}”(hjJ{h]”hŒmgr”…”�”}”(hjL{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjH{ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´KYhjD{ubjž )�”}”(hhh]”hÎ)�”}”(hŒ'topology manager this port lives under.”h]”hŒ'topology manager this port lives under.”…”�”}”(hjc{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j_{h´KYhj`{ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjD{ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j_{h´KYhjÆtubj| )�”}”(hŒz``cached_edid`` for DP logical ports - make tiling work by ensuring that the EDID for all connectors is read immediately. ”h]”(j‚ )�”}”(hŒ``cached_edid``”h]”jˆ )�”}”(hjƒ{h]”hŒ cached_edid”…”�”}”(hj…{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj�{ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´K“hj}{ubjž )�”}”(hhh]”hÎ)�”}”(hŒifor DP logical ports - make tiling work by ensuring that the EDID for all connectors is read immediately.”h]”hŒifor DP logical ports - make tiling work by ensuring that the EDID for all connectors is read immediately.”…”�”}”(hjœ{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´K’hj™{ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj}{ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j˜{h´K“hjÆtubj| )�”}”(hŒ]``fec_capable`` bool indicating if FEC can be supported up to that point in the MST topology.”h]”(j‚ )�”}”(hŒ``fec_capable``”h]”jˆ )�”}”(hj½{h]”hŒ fec_capable”…”�”}”(hj¿{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj»{ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´K˜hj·{ubjž )�”}”(hhh]”hÎ)�”}”(hŒMbool indicating if FEC can be supported up to that point in the MST topology.”h]”hŒMbool indicating if FEC can be supported up to that point in the MST topology.”…”�”}”(hjÖ{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÒ{h´K˜hjÓ{ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj·{ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÒ{h´K˜hjÆtubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj~tubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjösh²hh³Nh´NubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjÿ{h]”hŒ Description”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjý{ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Kœhjösh²hubhÎ)�”}”(hŒYThis structure represents an MST port endpoint on a device somewhere in the MST topology.”h]”hŒYThis structure represents an MST port endpoint on a device somewhere in the MST topology.”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´KYhjösh²hubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_dp_mst_branch (C struct)”Œc.drm_dp_mst_branch”hNt”auh1j† hjösh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒdrm_dp_mst_branch”h]”j¤ )�”}”(hŒstruct drm_dp_mst_branch”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj=|h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj9|h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´K_ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjK|h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj9|h²hh³jJ|h´K_ubjÍ )�”}”(hŒdrm_dp_mst_branch”h]”jÓ )�”}”(hj7|h]”hŒdrm_dp_mst_branch”…”�”}”(hj]|h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjY|ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj9|h²hh³jJ|h´K_ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj5|h²hh³jJ|h´K_ubah}”(h]”j0|ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jJ|h´K_hj2|h²hubj )�”}”(hhh]”hÎ)�”}”(hŒMST branch device.”h]”hŒMST branch device.”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´K·hj||h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj2|h²hh³jJ|h´K_ubeh}”(h]”h ]”(j Œstruct”eh"]”h$]”h&]”j" j j# j—|j$ j—|j% ‰j& ‰j' ‰uh1j˜ h²hhjösh³Nh´Nubj) )�”}”(hX) **Definition**:: struct drm_dp_mst_branch { struct kref topology_kref; struct kref malloc_kref; #if IS_ENABLED(CONFIG_DRM_DEBUG_DP_MST_TOPOLOGY_REFS); struct drm_dp_mst_topology_ref_history topology_ref_history; #endif; struct list_head destroy_next; u8 rad[8]; u8 lct; int num_ports; struct list_head ports; struct drm_dp_mst_port *port_parent; struct drm_dp_mst_topology_mgr *mgr; bool link_address_sent; guid_t guid; }; **Members** ``topology_kref`` refcount for this branch device's lifetime in the topology, only the DP MST helpers should need to touch this ``malloc_kref`` refcount for the memory allocation containing this structure. See drm_dp_mst_get_mstb_malloc() and drm_dp_mst_put_mstb_malloc(). ``topology_ref_history`` A history of each topology reference/dereference. See CONFIG_DRM_DEBUG_DP_MST_TOPOLOGY_REFS. ``destroy_next`` linked-list entry used by drm_dp_delayed_destroy_work() ``rad`` Relative Address of the MST branch. For :c:type:`drm_dp_mst_topology_mgr.mst_primary `, it's rad[8] are all 0, unset and unused. For MST branches connected after mst_primary, in each element of rad[] the nibbles are ordered by the most signifcant 4 bits first and the least significant 4 bits second. ``lct`` Link count total to talk to this branch device. ``num_ports`` number of ports on the branch. ``ports`` the list of ports on this branch device. This should be considered protected for reading by :c:type:`drm_dp_mst_topology_mgr.lock `. There are two exceptions to this: :c:type:`drm_dp_mst_topology_mgr.up_req_work ` and :c:type:`drm_dp_mst_topology_mgr.work `, which do not grab :c:type:`drm_dp_mst_topology_mgr.lock ` during reads but are the only updaters of this list and are protected from updating the list concurrently by **drm_dp_mst_topology_mgr.probe_lock** ``port_parent`` pointer to the port parent, NULL if toplevel. ``mgr`` topology manager for this branch device. ``link_address_sent`` if a link address message has been sent to this device yet. ``guid`` guid for DP 1.2 branch device. port under this branch can be identified by port #.”h]”(hÎ)�”}”(hŒ**Definition**::”h]”(j3 )�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj£|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjŸ|ubhŒ:”…”�”}”(hjŸ|h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´K»hj›|ubjN )�”}”(hXÅstruct drm_dp_mst_branch { struct kref topology_kref; struct kref malloc_kref; #if IS_ENABLED(CONFIG_DRM_DEBUG_DP_MST_TOPOLOGY_REFS); struct drm_dp_mst_topology_ref_history topology_ref_history; #endif; struct list_head destroy_next; u8 rad[8]; u8 lct; int num_ports; struct list_head ports; struct drm_dp_mst_port *port_parent; struct drm_dp_mst_topology_mgr *mgr; bool link_address_sent; guid_t guid; };”h]”hXÅstruct drm_dp_mst_branch { struct kref topology_kref; struct kref malloc_kref; #if IS_ENABLED(CONFIG_DRM_DEBUG_DP_MST_TOPOLOGY_REFS); struct drm_dp_mst_topology_ref_history topology_ref_history; #endif; struct list_head destroy_next; u8 rad[8]; u8 lct; int num_ports; struct list_head ports; struct drm_dp_mst_port *port_parent; struct drm_dp_mst_topology_mgr *mgr; bool link_address_sent; guid_t guid; };”…”�”}”hj¼|sbah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jM h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´K½hj›|ubhÎ)�”}”(hŒ **Members**”h]”j3 )�”}”(hjÍ|h]”hŒMembers”…”�”}”(hjÏ|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjË|ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´KÎhj›|ubjw )�”}”(hhh]”(j| )�”}”(hŒ€``topology_kref`` refcount for this branch device's lifetime in the topology, only the DP MST helpers should need to touch this ”h]”(j‚ )�”}”(hŒ``topology_kref``”h]”jˆ )�”}”(hjì|h]”hŒ topology_kref”…”�”}”(hjî|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjê|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´KÉhjæ|ubjž )�”}”(hhh]”hÎ)�”}”(hŒmrefcount for this branch device's lifetime in the topology, only the DP MST helpers should need to touch this”h]”hŒorefcount for this branch device’s lifetime in the topology, only the DP MST helpers should need to touch this”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´KÈhj}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjæ|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j}h´KÉhjã|ubj| )�”}”(hŒ‘``malloc_kref`` refcount for the memory allocation containing this structure. See drm_dp_mst_get_mstb_malloc() and drm_dp_mst_put_mstb_malloc(). ”h]”(j‚ )�”}”(hŒ``malloc_kref``”h]”jˆ )�”}”(hj&}h]”hŒ malloc_kref”…”�”}”(hj(}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj$}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´KÐhj }ubjž )�”}”(hhh]”hÎ)�”}”(hŒ€refcount for the memory allocation containing this structure. See drm_dp_mst_get_mstb_malloc() and drm_dp_mst_put_mstb_malloc().”h]”hŒ€refcount for the memory allocation containing this structure. See drm_dp_mst_get_mstb_malloc() and drm_dp_mst_put_mstb_malloc().”…”�”}”(hj?}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´KÎhj<}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj }ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j;}h´KÐhjã|ubj| )�”}”(hŒv``topology_ref_history`` A history of each topology reference/dereference. See CONFIG_DRM_DEBUG_DP_MST_TOPOLOGY_REFS. ”h]”(j‚ )�”}”(hŒ``topology_ref_history``”h]”jˆ )�”}”(hj`}h]”hŒtopology_ref_history”…”�”}”(hjb}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj^}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´K×hjZ}ubjž )�”}”(hhh]”hÎ)�”}”(hŒ\A history of each topology reference/dereference. See CONFIG_DRM_DEBUG_DP_MST_TOPOLOGY_REFS.”h]”hŒ\A history of each topology reference/dereference. See CONFIG_DRM_DEBUG_DP_MST_TOPOLOGY_REFS.”…”�”}”(hjy}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´KÖhjv}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjZ}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³ju}h´K×hjã|ubj| )�”}”(hŒI``destroy_next`` linked-list entry used by drm_dp_delayed_destroy_work() ”h]”(j‚ )�”}”(hŒ``destroy_next``”h]”jˆ )�”}”(hjš}h]”hŒ destroy_next”…”�”}”(hjœ}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj˜}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´KÞhj”}ubjž )�”}”(hhh]”hÎ)�”}”(hŒ7linked-list entry used by drm_dp_delayed_destroy_work()”h]”hŒ7linked-list entry used by drm_dp_delayed_destroy_work()”…”�”}”(hj³}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´KÝhj°}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj”}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¯}h´KÞhjã|ubj| )�”}”(hXN``rad`` Relative Address of the MST branch. For :c:type:`drm_dp_mst_topology_mgr.mst_primary `, it's rad[8] are all 0, unset and unused. For MST branches connected after mst_primary, in each element of rad[] the nibbles are ordered by the most signifcant 4 bits first and the least significant 4 bits second. ”h]”(j‚ )�”}”(hŒ``rad``”h]”jˆ )�”}”(hjÔ}h]”hŒrad”…”�”}”(hjÖ}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÒ}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´KçhjÎ}ubjž )�”}”(hhh]”hÎ)�”}”(hXERelative Address of the MST branch. For :c:type:`drm_dp_mst_topology_mgr.mst_primary `, it's rad[8] are all 0, unset and unused. For MST branches connected after mst_primary, in each element of rad[] the nibbles are ordered by the most signifcant 4 bits first and the least significant 4 bits second.”h]”(hŒ(Relative Address of the MST branch. For ”…”�”}”(hjí}h²hh³Nh´Nubh)�”}”(hŒG:c:type:`drm_dp_mst_topology_mgr.mst_primary `”h]”jˆ )�”}”(hj÷}h]”hŒ#drm_dp_mst_topology_mgr.mst_primary”…”�”}”(hjù}h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjõ}ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_topology_mgr”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Kãhjí}ubhŒØ, it’s rad[8] are all 0, unset and unused. For MST branches connected after mst_primary, in each element of rad[] the nibbles are ordered by the most signifcant 4 bits first and the least significant 4 bits second.”…”�”}”(hjí}h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j~h´Kãhjê}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÎ}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jé}h´Kçhjã|ubj| )�”}”(hŒ8``lct`` Link count total to talk to this branch device. ”h]”(j‚ )�”}”(hŒ``lct``”h]”jˆ )�”}”(hj1~h]”hŒlct”…”�”}”(hj3~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj/~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Kºhj+~ubjž )�”}”(hhh]”hÎ)�”}”(hŒ/Link count total to talk to this branch device.”h]”hŒ/Link count total to talk to this branch device.”…”�”}”(hjJ~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jF~h´KºhjG~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj+~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jF~h´Kºhjã|ubj| )�”}”(hŒ-``num_ports`` number of ports on the branch. ”h]”(j‚ )�”}”(hŒ ``num_ports``”h]”jˆ )�”}”(hjj~h]”hŒ num_ports”…”�”}”(hjl~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjh~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´K»hjd~ubjž )�”}”(hhh]”hÎ)�”}”(hŒnumber of ports on the branch.”h]”hŒnumber of ports on the branch.”…”�”}”(hjƒ~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j~h´K»hj€~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjd~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j~h´K»hjã|ubj| )�”}”(hX?``ports`` the list of ports on this branch device. This should be considered protected for reading by :c:type:`drm_dp_mst_topology_mgr.lock `. There are two exceptions to this: :c:type:`drm_dp_mst_topology_mgr.up_req_work ` and :c:type:`drm_dp_mst_topology_mgr.work `, which do not grab :c:type:`drm_dp_mst_topology_mgr.lock ` during reads but are the only updaters of this list and are protected from updating the list concurrently by **drm_dp_mst_topology_mgr.probe_lock** ”h]”(j‚ )�”}”(hŒ ``ports``”h]”jˆ )�”}”(hj£~h]”hŒports”…”�”}”(hj¥~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¡~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Kõhj�~ubjž )�”}”(hhh]”hÎ)�”}”(hX4the list of ports on this branch device. This should be considered protected for reading by :c:type:`drm_dp_mst_topology_mgr.lock `. There are two exceptions to this: :c:type:`drm_dp_mst_topology_mgr.up_req_work ` and :c:type:`drm_dp_mst_topology_mgr.work `, which do not grab :c:type:`drm_dp_mst_topology_mgr.lock ` during reads but are the only updaters of this list and are protected from updating the list concurrently by **drm_dp_mst_topology_mgr.probe_lock**”h]”(hŒ\the list of ports on this branch device. This should be considered protected for reading by ”…”�”}”(hj¼~h²hh³Nh´Nubh)�”}”(hŒ@:c:type:`drm_dp_mst_topology_mgr.lock `”h]”jˆ )�”}”(hjÆ~h]”hŒdrm_dp_mst_topology_mgr.lock”…”�”}”(hjÈ~h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÄ~ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_topology_mgr”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Kîhj¼~ubhŒ$. There are two exceptions to this: ”…”�”}”(hj¼~h²hh³Nh´Nubh)�”}”(hŒG:c:type:`drm_dp_mst_topology_mgr.up_req_work `”h]”jˆ )�”}”(hjê~h]”hŒ#drm_dp_mst_topology_mgr.up_req_work”…”�”}”(hjì~h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjè~ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_topology_mgr”uh1hh³jã~h´Kîhj¼~ubhŒ and ”…”�”}”(hj¼~h²hh³Nh´Nubh)�”}”(hŒ@:c:type:`drm_dp_mst_topology_mgr.work `”h]”jˆ )�”}”(hj h]”hŒdrm_dp_mst_topology_mgr.work”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_topology_mgr”uh1hh³jã~h´Kîhj¼~ubhŒ, which do not grab ”…”�”}”(hj¼~h²hh³Nh´Nubh)�”}”(hŒ@:c:type:`drm_dp_mst_topology_mgr.lock `”h]”jˆ )�”}”(hj0h]”hŒdrm_dp_mst_topology_mgr.lock”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj.ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_topology_mgr”uh1hh³jã~h´Kîhj¼~ubhŒn during reads but are the only updaters of this list and are protected from updating the list concurrently by ”…”�”}”(hj¼~h²hh³Nh´Nubj3 )�”}”(hŒ&**drm_dp_mst_topology_mgr.probe_lock**”h]”hŒ"drm_dp_mst_topology_mgr.probe_lock”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¼~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jã~h´Kîhj¹~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj�~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¸~h´Kõhjã|ubj| )�”}”(hŒ>``port_parent`` pointer to the port parent, NULL if toplevel. ”h]”(j‚ )�”}”(hŒ``port_parent``”h]”jˆ )�”}”(hjwh]”hŒ port_parent”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjuubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´K¼hjqubjž )�”}”(hhh]”hÎ)�”}”(hŒ-pointer to the port parent, NULL if toplevel.”h]”hŒ-pointer to the port parent, NULL if toplevel.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jŒh´K¼hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjqubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jŒh´K¼hjã|ubj| )�”}”(hŒ1``mgr`` topology manager for this branch device. ”h]”(j‚ )�”}”(hŒ``mgr``”h]”jˆ )�”}”(hj°h]”hŒmgr”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj®ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´K½hjªubjž )�”}”(hhh]”hÎ)�”}”(hŒ(topology manager for this branch device.”h]”hŒ(topology manager for this branch device.”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÅh´K½hjÆubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjªubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÅh´K½hjã|ubj| )�”}”(hŒR``link_address_sent`` if a link address message has been sent to this device yet. ”h]”(j‚ )�”}”(hŒ``link_address_sent``”h]”jˆ )�”}”(hjéh]”hŒlink_address_sent”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjçubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´K¾hjãubjž )�”}”(hhh]”hÎ)�”}”(hŒ;if a link address message has been sent to this device yet.”h]”hŒ;if a link address message has been sent to this device yet.”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jþh´K¾hjÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjãubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jþh´K¾hjã|ubj| )�”}”(hŒ[``guid`` guid for DP 1.2 branch device. port under this branch can be identified by port #.”h]”(j‚ )�”}”(hŒ``guid``”h]”jˆ )�”}”(hj"€h]”hŒguid”…”�”}”(hj$€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj €ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´K¿hj€ubjž )�”}”(hhh]”hÎ)�”}”(hŒRguid for DP 1.2 branch device. port under this branch can be identified by port #.”h]”hŒRguid for DP 1.2 branch device. port under this branch can be identified by port #.”…”�”}”(hj;€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j7€h´K¿hj8€ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j7€h´K¿hjã|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj›|ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjösh²hh³Nh´NubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjd€h]”hŒ Description”…”�”}”(hjf€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjb€ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´KÃhjösh²hubhÎ)�”}”(hŒ®This structure represents an MST branch device, there is one primary branch device at the root, along with any other branches connected to downstream port of parent branches.”h]”hŒ®This structure represents an MST branch device, there is one primary branch device at the root, along with any other branches connected to downstream port of parent branches.”…”�”}”(hjz€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´KÀhjösh²hubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ$drm_dp_mst_atomic_payload (C struct)”Œc.drm_dp_mst_atomic_payload”hNt”auh1j† hjösh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒdrm_dp_mst_atomic_payload”h]”j¤ )�”}”(hŒ struct drm_dp_mst_atomic_payload”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj¢€h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjž€h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”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Œdrm_dp_mst_atomic_payload”h]”jÓ )�”}”(hjœ€h]”hŒdrm_dp_mst_atomic_payload”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¾€ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjž€h²hh³j¯€h´KÇubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ&Atomic state struct for an MST payload”h]”hŒ&Atomic state struct for an MST payload”…”�”}”(hjä€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Mhjá€h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj—€h²hh³j¯€h´KÇubeh}”(h]”h ]”(j Œstruct”eh"]”h$]”h&]”j" j j# jü€j$ jü€j% ‰j& ‰j' ‰uh1j˜ h²hhjösh³Nh´Nubj) )�”}”(hX� **Definition**:: struct drm_dp_mst_atomic_payload { struct drm_dp_mst_port *port; s8 vc_start_slot; u8 vcpi; int time_slots; int pbn; bool delete : 1; bool dsc_enabled : 1; enum drm_dp_mst_payload_allocation payload_allocation_status; struct list_head next; }; **Members** ``port`` The MST port assigned to this payload ``vc_start_slot`` The time slot that this payload starts on. Because payload start slots can't be determined ahead of time, the contents of this value are UNDEFINED at atomic check time. This shouldn't usually matter, as the start slot should never be relevant for atomic state computations. Since this value is determined at commit time instead of check time, this value is protected by the MST helpers ensuring that async commits operating on the given topology never run in parallel. In the event that a driver does need to read this value (e.g. to inform hardware of the starting timeslot for a payload), the driver may either: * Read this field during the atomic commit after drm_dp_mst_atomic_wait_for_dependencies() has been called, which will ensure the previous MST states payload start slots have been copied over to the new state. Note that a new start slot won't be assigned/removed from this payload until drm_dp_add_payload_part1()/drm_dp_remove_payload_part2() have been called. * Acquire the MST modesetting lock, and then wait for any pending MST-related commits to get committed to hardware by calling drm_crtc_commit_wait() on each of the :c:type:`drm_crtc_commit` structs in :c:type:`drm_dp_mst_topology_state.commit_deps `. If neither of the two above solutions suffice (e.g. the driver needs to read the start slot in the middle of an atomic commit without waiting for some reason), then drivers should cache this value themselves after changing payloads. ``vcpi`` The Virtual Channel Payload Identifier ``time_slots`` The number of timeslots allocated to this payload from the source DP Tx to the immediate downstream DP Rx ``pbn`` The payload bandwidth for this payload ``delete`` Whether or not we intend to delete this payload during this atomic commit ``dsc_enabled`` Whether or not this payload has DSC enabled ``payload_allocation_status`` The allocation status of this payload ``next`` The list node for this payload”h]”(hÎ)�”}”(hŒ**Definition**::”h]”(j3 )�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj�ubhŒ:”…”�”}”(hj�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Mhj�ubjN )�”}”(hXstruct drm_dp_mst_atomic_payload { struct drm_dp_mst_port *port; s8 vc_start_slot; u8 vcpi; int time_slots; int pbn; bool delete : 1; bool dsc_enabled : 1; enum drm_dp_mst_payload_allocation payload_allocation_status; struct list_head next; };”h]”hXstruct drm_dp_mst_atomic_payload { struct drm_dp_mst_port *port; s8 vc_start_slot; u8 vcpi; int time_slots; int pbn; bool delete : 1; bool dsc_enabled : 1; enum drm_dp_mst_payload_allocation payload_allocation_status; struct list_head next; };”…”�”}”hj!�sbah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jM h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Mhj�ubhÎ)�”}”(hŒ **Members**”h]”j3 )�”}”(hj2�h]”hŒMembers”…”�”}”(hj4�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj0�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M$hj�ubjw )�”}”(hhh]”(j| )�”}”(hŒ/``port`` The MST port assigned to this payload ”h]”(j‚ )�”}”(hŒ``port``”h]”jˆ )�”}”(hjQ�h]”hŒport”…”�”}”(hjS�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjO�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´MhjK�ubjž )�”}”(hhh]”hÎ)�”}”(hŒ%The MST port assigned to this payload”h]”hŒ%The MST port assigned to this payload”…”�”}”(hjj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jf�h´Mhjg�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjK�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jf�h´MhjH�ubj| )�”}”(hXð``vc_start_slot`` The time slot that this payload starts on. Because payload start slots can't be determined ahead of time, the contents of this value are UNDEFINED at atomic check time. This shouldn't usually matter, as the start slot should never be relevant for atomic state computations. Since this value is determined at commit time instead of check time, this value is protected by the MST helpers ensuring that async commits operating on the given topology never run in parallel. In the event that a driver does need to read this value (e.g. to inform hardware of the starting timeslot for a payload), the driver may either: * Read this field during the atomic commit after drm_dp_mst_atomic_wait_for_dependencies() has been called, which will ensure the previous MST states payload start slots have been copied over to the new state. Note that a new start slot won't be assigned/removed from this payload until drm_dp_add_payload_part1()/drm_dp_remove_payload_part2() have been called. * Acquire the MST modesetting lock, and then wait for any pending MST-related commits to get committed to hardware by calling drm_crtc_commit_wait() on each of the :c:type:`drm_crtc_commit` structs in :c:type:`drm_dp_mst_topology_state.commit_deps `. If neither of the two above solutions suffice (e.g. the driver needs to read the start slot in the middle of an atomic commit without waiting for some reason), then drivers should cache this value themselves after changing payloads. ”h]”(j‚ )�”}”(hŒ``vc_start_slot``”h]”jˆ )�”}”(hjŠ�h]”hŒ vc_start_slot”…”�”}”(hjŒ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjˆ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M2hj„�ubjž )�”}”(hhh]”(hÎ)�”}”(hXThe time slot that this payload starts on. Because payload start slots can't be determined ahead of time, the contents of this value are UNDEFINED at atomic check time. This shouldn't usually matter, as the start slot should never be relevant for atomic state computations.”h]”hXThe time slot that this payload starts on. Because payload start slots can’t be determined ahead of time, the contents of this value are UNDEFINED at atomic check time. This shouldn’t usually matter, as the start slot should never be relevant for atomic state computations.”…”�”}”(hj£�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Mhj �ubhÎ)�”}”(hXSSince this value is determined at commit time instead of check time, this value is protected by the MST helpers ensuring that async commits operating on the given topology never run in parallel. In the event that a driver does need to read this value (e.g. to inform hardware of the starting timeslot for a payload), the driver may either:”h]”hXSSince this value is determined at commit time instead of check time, this value is protected by the MST helpers ensuring that async commits operating on the given topology never run in parallel. In the event that a driver does need to read this value (e.g. to inform hardware of the starting timeslot for a payload), the driver may either:”…”�”}”(hj²�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M"hj �ubhú)�”}”(hhh]”(hÿ)�”}”(hXgRead this field during the atomic commit after drm_dp_mst_atomic_wait_for_dependencies() has been called, which will ensure the previous MST states payload start slots have been copied over to the new state. Note that a new start slot won't be assigned/removed from this payload until drm_dp_add_payload_part1()/drm_dp_remove_payload_part2() have been called.”h]”hÎ)�”}”(hXgRead this field during the atomic commit after drm_dp_mst_atomic_wait_for_dependencies() has been called, which will ensure the previous MST states payload start slots have been copied over to the new state. Note that a new start slot won't be assigned/removed from this payload until drm_dp_add_payload_part1()/drm_dp_remove_payload_part2() have been called.”h]”hXiRead this field during the atomic commit after drm_dp_mst_atomic_wait_for_dependencies() has been called, which will ensure the previous MST states payload start slots have been copied over to the new state. Note that a new start slot won’t be assigned/removed from this payload until drm_dp_add_payload_part1()/drm_dp_remove_payload_part2() have been called.”…”�”}”(hjÈ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M'hjÄ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjÁ�ubhÿ)�”}”(hXAcquire the MST modesetting lock, and then wait for any pending MST-related commits to get committed to hardware by calling drm_crtc_commit_wait() on each of the :c:type:`drm_crtc_commit` structs in :c:type:`drm_dp_mst_topology_state.commit_deps `. ”h]”hÎ)�”}”(hXAcquire the MST modesetting lock, and then wait for any pending MST-related commits to get committed to hardware by calling drm_crtc_commit_wait() on each of the :c:type:`drm_crtc_commit` structs in :c:type:`drm_dp_mst_topology_state.commit_deps `.”h]”(hŒ¢Acquire the MST modesetting lock, and then wait for any pending MST-related commits to get committed to hardware by calling drm_crtc_commit_wait() on each of the ”…”�”}”(hjá�h²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_crtc_commit`”h]”jˆ )�”}”(hjë�h]”hŒdrm_crtc_commit”…”�”}”(hjí�h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjé�ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_crtc_commit”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M,hjá�ubhŒ structs in ”…”�”}”(hjá�h²hh³Nh´Nubh)�”}”(hŒK:c:type:`drm_dp_mst_topology_state.commit_deps `”h]”jˆ )�”}”(hj‚h]”hŒ%drm_dp_mst_topology_state.commit_deps”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj ‚ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_topology_state”uh1hh³j‚h´M,hjá�ubhŒ.”…”�”}”(hjá�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j‚h´M,hjÝ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjÁ�ubeh}”(h]”h ]”h"]”h$]”h&]”jNjOuh1hùh³jÖ�h´M'hj �ubhÎ)�”}”(hŒèIf neither of the two above solutions suffice (e.g. the driver needs to read the start slot in the middle of an atomic commit without waiting for some reason), then drivers should cache this value themselves after changing payloads.”h]”hŒèIf neither of the two above solutions suffice (e.g. the driver needs to read the start slot in the middle of an atomic commit without waiting for some reason), then drivers should cache this value themselves after changing payloads.”…”�”}”(hjB‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M0hj �ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj„�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jŸ�h´M2hjH�ubj| )�”}”(hŒ0``vcpi`` The Virtual Channel Payload Identifier ”h]”(j‚ )�”}”(hŒ``vcpi``”h]”jˆ )�”}”(hjc‚h]”hŒvcpi”…”�”}”(hje‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hja‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M6hj]‚ubjž )�”}”(hhh]”hÎ)�”}”(hŒ&The Virtual Channel Payload Identifier”h]”hŒ&The Virtual Channel Payload Identifier”…”�”}”(hj|‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jx‚h´M6hjy‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj]‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jx‚h´M6hjH�ubj| )�”}”(hŒy``time_slots`` The number of timeslots allocated to this payload from the source DP Tx to the immediate downstream DP Rx ”h]”(j‚ )�”}”(hŒ``time_slots``”h]”jˆ )�”}”(hjœ‚h]”hŒ time_slots”…”�”•}”(hjž‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjš‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M:hj–‚ubjž )�”}”(hhh]”hÎ)�”}”(hŒiThe number of timeslots allocated to this payload from the source DP Tx to the immediate downstream DP Rx”h]”hŒiThe number of timeslots allocated to this payload from the source DP Tx to the immediate downstream DP Rx”…”�”}”(hjµ‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M9hj²‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj–‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j±‚h´M:hjH�ubj| )�”}”(hŒ/``pbn`` The payload bandwidth for this payload ”h]”(j‚ )�”}”(hŒ``pbn``”h]”jˆ )�”}”(hjÖ‚h]”hŒpbn”…”�”}”(hjØ‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÔ‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M>hjЂubjž )�”}”(hhh]”hÎ)�”}”(hŒ&The payload bandwidth for this payload”h]”hŒ&The payload bandwidth for this payload”…”�”}”(hjï‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jë‚h´M>hjì‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjЂubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jë‚h´M>hjH�ubj| )�”}”(hŒU``delete`` Whether or not we intend to delete this payload during this atomic commit ”h]”(j‚ )�”}”(hŒ ``delete``”h]”jˆ )�”}”(hjƒh]”hŒdelete”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj ƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´MAhj ƒubjž )�”}”(hhh]”hÎ)�”}”(hŒIWhether or not we intend to delete this payload during this atomic commit”h]”hŒIWhether or not we intend to delete this payload during this atomic commit”…”�”}”(hj(ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j$ƒh´MAhj%ƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj ƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j$ƒh´MAhjH�ubj| )�”}”(hŒ<``dsc_enabled`` Whether or not this payload has DSC enabled ”h]”(j‚ )�”}”(hŒ``dsc_enabled``”h]”jˆ )�”}”(hjHƒh]”hŒ dsc_enabled”…”�”}”(hjJƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjFƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´MChjBƒubjž )�”}”(hhh]”hÎ)�”}”(hŒ+Whether or not this payload has DSC enabled”h]”hŒ+Whether or not this payload has DSC enabled”…”�”}”(hjaƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j]ƒh´MChj^ƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjBƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j]ƒh´MChjH�ubj| )�”}”(hŒD``payload_allocation_status`` The allocation status of this payload ”h]”(j‚ )�”}”(hŒ``payload_allocation_status``”h]”jˆ )�”}”(hj�ƒh]”hŒpayload_allocation_status”…”�”}”(hjƒƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´MFhj{ƒubjž )�”}”(hhh]”hÎ)�”}”(hŒ%The allocation status of this payload”h]”hŒ%The allocation status of this payload”…”�”}”(hjšƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j–ƒh´MFhj—ƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj{ƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j–ƒh´MFhjH�ubj| )�”}”(hŒ'``next`` The list node for this payload”h]”(j‚ )�”}”(hŒ``next``”h]”jˆ )�”}”(hjºƒh]”hŒnext”…”�”}”(hj¼ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¸ƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´MHhj´ƒubjž )�”}”(hhh]”hÎ)�”}”(hŒThe list node for this payload”h]”hŒThe list node for this payload”…”�”}”(hjÓƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´MIhjЃubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj´ƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jσh´MHhjH�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjösh²hh³Nh´NubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjýƒh]”hŒ Description”…”�”}”(hjÿƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjûƒubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´MLhjösh²hubhÎ)�”}”(hŒ˜The primary atomic state structure for a given MST payload. Stores information like current bandwidth allocation, intended action for this payload, etc.”h]”hŒ˜The primary atomic state structure for a given MST payload. Stores information like current bandwidth allocation, intended action for this payload, etc.”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Mhjösh²hubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ$drm_dp_mst_topology_state (C struct)”Œc.drm_dp_mst_topology_state”hNt”auh1j† hjösh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒdrm_dp_mst_topology_state”h]”j¤ )�”}”(hŒ struct drm_dp_mst_topology_state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj;„h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj7„h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjI„h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj7„h²hh³jH„h´MubjÍ )�”}”(hŒdrm_dp_mst_topology_state”h]”jÓ )�”}”(hj5„h]”hŒdrm_dp_mst_topology_state”…”�”}”(hj[„h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjW„ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj7„h²hh³jH„h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj3„h²hh³jH„h´Mubah}”(h]”j.„ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jH„h´Mhj0„h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ%DisplayPort MST topology atomic state”h]”hŒ%DisplayPort MST topology atomic state”…”�”}”(hj}„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´MMhjz„h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj0„h²hh³jH„h´Mubeh}”(h]”h ]”(j Œstruct”eh"]”h$]”h&]”j" j j# j•„j$ j•„j% ‰j& ‰j' ‰uh1j˜ h²hhjösh³Nh´Nubj) )�”}”(hXã**Definition**:: struct drm_dp_mst_topology_state { struct drm_private_state base; struct drm_dp_mst_topology_mgr *mgr; u32 pending_crtc_mask; struct drm_crtc_commit **commit_deps; size_t num_commit_deps; u32 payload_mask; struct list_head payloads; u8 total_avail_slots; u8 start_slot; fixed20_12 pbn_div; }; **Members** ``base`` Base private state for atomic ``mgr`` The topology manager ``pending_crtc_mask`` A bitmask of all CRTCs this topology state touches, drivers may modify this to add additional dependencies if needed. ``commit_deps`` A list of all CRTC commits affecting this topology, this field isn't populated until drm_dp_mst_atomic_wait_for_dependencies() is called. ``num_commit_deps`` The number of CRTC commits in **commit_deps** ``payload_mask`` A bitmask of allocated VCPIs, used for VCPI assignments ``payloads`` The list of payloads being created/destroyed in this state ``total_avail_slots`` The total number of slots this topology can handle (63 or 64) ``start_slot`` The first usable time slot in this topology (1 or 0) ``pbn_div`` The current PBN divisor for this topology. The driver is expected to fill this out itself.”h]”(hÎ)�”}”(hŒ**Definition**::”h]”(j3 )�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj¡„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj�„ubhŒ:”…”�”}”(hj�„h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´MQhj™„ubjN )�”}”(hXLstruct drm_dp_mst_topology_state { struct drm_private_state base; struct drm_dp_mst_topology_mgr *mgr; u32 pending_crtc_mask; struct drm_crtc_commit **commit_deps; size_t num_commit_deps; u32 payload_mask; struct list_head payloads; u8 total_avail_slots; u8 start_slot; fixed20_12 pbn_div; };”h]”hXLstruct drm_dp_mst_topology_state { struct drm_private_state base; struct drm_dp_mst_topology_mgr *mgr; u32 pending_crtc_mask; struct drm_crtc_commit **commit_deps; size_t num_commit_deps; u32 payload_mask; struct list_head payloads; u8 total_avail_slots; u8 start_slot; fixed20_12 pbn_div; };”…”�”}”hjº„sbah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jM h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´MShj™„ubhÎ)�”}”(hŒ **Members**”h]”j3 )�”}”(hjË„h]”hŒMembers”…”�”}”(hjÍ„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÉ„ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M`hj™„ubjw )�”}”(hhh]”(j| )�”}”(hŒ'``base`` Base private state for atomic ”h]”(j‚ )�”}”(hŒ``base``”h]”jˆ )�”}”(hjê„h]”hŒbase”…”�”}”(hjì„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjè„ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´MShjä„ubjž )�”}”(hhh]”hÎ)�”}”(hŒBase private state for atomic”h]”hŒBase private state for atomic”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÿ„h´MShj…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjä„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÿ„h´MShjá„ubj| )�”}”(hŒ``mgr`` The topology manager ”h]”(j‚ )�”}”(hŒ``mgr``”h]”jˆ )�”}”(hj#…h]”hŒmgr”…”�”}”(hj%…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj!…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´MVhj…ubjž )�”}”(hhh]”hÎ)�”}”(hŒThe topology manager”h]”hŒThe topology manager”…”�”}”(hj<…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j8…h´MVhj9…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j8…h´MVhjá„ubj| )�”}”(hŒŒ``pending_crtc_mask`` A bitmask of all CRTCs this topology state touches, drivers may modify this to add additional dependencies if needed. ”h]”(j‚ )�”}”(hŒ``pending_crtc_mask``”h]”jˆ )�”}”(hj\…h]”hŒpending_crtc_mask”…”�”}”(hj^…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjZ…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M[hjV…ubjž )�”}”(hhh]”hÎ)�”}”(hŒuA bitmask of all CRTCs this topology state touches, drivers may modify this to add additional dependencies if needed.”h]”hŒuA bitmask of all CRTCs this topology state touches, drivers may modify this to add additional dependencies if needed.”…”�”}”(hju…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´MZhjr…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjV…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jq…h´M[hjá„ubj| )�”}”(hŒš``commit_deps`` A list of all CRTC commits affecting this topology, this field isn't populated until drm_dp_mst_atomic_wait_for_dependencies() is called. ”h]”(j‚ )�”}”(hŒ``commit_deps``”h]”jˆ )�”}”(hj–…h]”hŒ commit_deps”…”�”}”(hj˜…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj”…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M`hj�…ubjž )�”}”(hhh]”hÎ)�”}”(hŒ‰A list of all CRTC commits affecting this topology, this field isn't populated until drm_dp_mst_atomic_wait_for_dependencies() is called.”h]”hŒ‹A list of all CRTC commits affecting this topology, this field isn’t populated until drm_dp_mst_atomic_wait_for_dependencies() is called.”…”�”}”(hj¯…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M_hj¬…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj�…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j«…h´M`hjá„ubj| )�”}”(hŒB``num_commit_deps`` The number of CRTC commits in **commit_deps** ”h]”(j‚ )�”}”(hŒ``num_commit_deps``”h]”jˆ )�”}”(hjÐ…h]”hŒnum_commit_deps”…”�”}”(hjÒ…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÎ…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´MchjÊ…ubjž )�”}”(hhh]”hÎ)�”}”(hŒ-The number of CRTC commits in **commit_deps**”h]”(hŒThe number of CRTC commits in ”…”�”}”(hjé…h²hh³Nh´Nubj3 )�”}”(hŒ**commit_deps**”h]”hŒ commit_deps”…”�”}”(hjñ…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjé…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jå…h´Mchjæ…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÊ…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jå…h´Mchjá„ubj| )�”}”(hŒI``payload_mask`` A bitmask of allocated VCPIs, used for VCPI assignments ”h]”(j‚ )�”}”(hŒ``payload_mask``”h]”jˆ )�”}”(hj†h]”hŒ payload_mask”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Mfhj†ubjž )�”}”(hhh]”hÎ)�”}”(hŒ7A bitmask of allocated VCPIs, used for VCPI assignments”h]”hŒ7A bitmask of allocated VCPIs, used for VCPI assignments”…”�”}”(hj0†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j,†h´Mfhj-†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j,†h´Mfhjá„ubj| )�”}”(hŒH``payloads`` The list of payloads being created/destroyed in this state ”h]”(j‚ )�”}”(hŒ ``payloads``”h]”jˆ )�”}”(hjP†h]”hŒpayloads”…”�”}”(hjR†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjN†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´MhhjJ†ubjž )�”}”(hhh]”hÎ)�”}”(hŒ:The list of payloads being created/destroyed in this state”h]”hŒ:The list of payloads being created/destroyed in this state”…”�”}”(hji†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³je†h´Mhhjf†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjJ†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³je†h´Mhhjá„ubj| )�”}”(hŒT``total_avail_slots`` The total number of slots this topology can handle (63 or 64) ”h]”(j‚ )�”}”(hŒ``total_avail_slots``”h]”jˆ )�”}”(hj‰†h]”hŒtotal_avail_slots”…”�”}”(hj‹†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj‡†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Mkhjƒ†ubjž )�”}”(hhh]”hÎ)�”}”(hŒ=The total number of slots this topology can handle (63 or 64)”h]”hŒ=The total number of slots this topology can handle (63 or 64)”…”�”}”(hj¢†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jž†h´MkhjŸ†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjƒ†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jž†h´Mkhjá„ubj| )�”}”(hŒD``start_slot`` The first usable time slot in this topology (1 or 0) ”h]”(j‚ )�”}”(hŒ``start_slot``”h]”jˆ )�”}”(hj†h]”hŒ start_slot”…”�”}”(hjĆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÀ†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Mmhj¼†ubjž )�”}”(hhh]”hÎ)�”}”(hŒ4The first usable time slot in this topology (1 or 0)”h]”hŒ4The first usable time slot in this topology (1 or 0)”…”�”}”(hjÛ†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j׆h´Mmhj؆ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¼†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j׆h´Mmhjá„ubj| )�”}”(hŒf``pbn_div`` The current PBN divisor for this topology. The driver is expected to fill this out itself.”h]”(j‚ )�”}”(hŒ ``pbn_div``”h]”jˆ )�”}”(hjû†h]”hŒpbn_div”…”�”}”(hjý†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjù†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Mqhjõ†ubjž )�”}”(hhh]”hÎ)�”}”(hŒZThe current PBN divisor for this topology. The driver is expected to fill this out itself.”h]”hŒZThe current PBN divisor for this topology. The driver is expected to fill this out itself.”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j‡h´Mqhj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjõ†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j‡h´Mqhjá„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj™„ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjösh²hh³Nh´NubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj=‡h]”hŒ Description”…”�”}”(hj?‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj;‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Muhjösh²hubhÎ)�”}”(hŒOThis struct represents the atomic state of the toplevel DisplayPort MST manager”h]”hŒOThis struct represents the atomic state of the toplevel DisplayPort MST manager”…”�”}”(hjS‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´MNhjösh²hubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ"drm_dp_mst_topology_mgr (C struct)”Œc.drm_dp_mst_topology_mgr”hNt”auh1j† hjösh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒdrm_dp_mst_topology_mgr”h]”j¤ )�”}”(hŒstruct drm_dp_mst_topology_mgr”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj{‡h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjw‡h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´MSubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰‡h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjw‡h²hh³jˆ‡h´MSubjÍ )�”}”(hŒdrm_dp_mst_topology_mgr”h]”jÓ )�”}”(hju‡h]”hŒdrm_dp_mst_topology_mgr”…”�”}”(hj›‡h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj—‡ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjw‡h²hh³jˆ‡h´MSubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjs‡h²hh³jˆ‡h´MSubah}”(h]”jn‡ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jˆ‡h´MShjp‡h²hubj )�”}”(hhh]”hÎ)�”}”(hŒDisplayPort MST manager”h]”hŒDisplayPort MST manager”…”�”}”(hj½‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Myhjº‡h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjp‡h²hh³jˆ‡h´MSubeh}”(h]”h ]”(j Œstruct”eh"]”h$]”h&]”j" j j# jÕ‡j$ jÕ‡j% ‰j& ‰j' ‰uh1j˜ h²hhjösh³Nh´Nubj) )�”}”(hX½**Definition**:: struct drm_dp_mst_topology_mgr { struct drm_private_obj base; struct drm_device *dev; const struct drm_dp_mst_topology_cbs *cbs; int max_dpcd_transaction_bytes; struct drm_dp_aux *aux; int max_payloads; int conn_base_id; struct drm_dp_sideband_msg_rx up_req_recv; struct drm_dp_sideband_msg_rx down_rep_recv; struct mutex lock; struct mutex probe_lock; bool mst_state : 1; bool payload_id_table_cleared : 1; bool reset_rx_state : 1; u8 payload_count; u8 next_start_slot; struct drm_dp_mst_branch *mst_primary; u8 dpcd[DP_RECEIVER_CAP_SIZE]; u8 sink_count; const struct drm_private_state_funcs *funcs; struct mutex qlock; struct list_head tx_msg_downq; wait_queue_head_t tx_waitq; struct work_struct work; struct work_struct tx_work; struct list_head destroy_port_list; struct list_head destroy_branch_device_list; struct mutex delayed_destroy_lock; struct workqueue_struct *delayed_destroy_wq; struct work_struct delayed_destroy_work; struct list_head up_req_list; struct mutex up_req_lock; struct work_struct up_req_work; #if IS_ENABLED(CONFIG_DRM_DEBUG_DP_MST_TOPOLOGY_REFS); struct mutex topology_ref_history_lock; #endif; }; **Members** ``base`` Base private object for atomic ``dev`` device pointer for adding i2c devices etc. ``cbs`` callbacks for connector addition and destruction. ``max_dpcd_transaction_bytes`` maximum number of bytes to read/write in one go. ``aux`` AUX channel for the DP MST connector this topolgy mgr is controlling. ``max_payloads`` maximum number of payloads the GPU can generate. ``conn_base_id`` DRM connector ID this mgr is connected to. Only used to build the MST connector path value. ``up_req_recv`` Message receiver state for up requests. ``down_rep_recv`` Message receiver state for replies to down requests. ``lock`` protects **mst_state**, **mst_primary**, **dpcd**, and **payload_id_table_cleared**. ``probe_lock`` Prevents **work** and **up_req_work**, the only writers of :c:type:`drm_dp_mst_port.mstb ` and :c:type:`drm_dp_mst_branch.ports `, from racing while they update the topology. ``mst_state`` If this manager is enabled for an MST capable port. False if no MST sink/branch devices is connected. ``payload_id_table_cleared`` Whether or not we've cleared the payload ID table for **mst_primary**. Protected by **lock**. ``reset_rx_state`` The down request's reply and up request message receiver state must be reset, after the topology manager got removed. Protected by **lock**. ``payload_count`` The number of currently active payloads in hardware. This value is only intended to be used internally by MST helpers for payload tracking, and is only safe to read/write from the atomic commit (not check) context. ``next_start_slot`` The starting timeslot to use for new VC payloads. This value is used internally by MST helpers for payload tracking, and is only safe to read/write from the atomic commit (not check) context. ``mst_primary`` Pointer to the primary/first branch device. ``dpcd`` Cache of DPCD for primary port. ``sink_count`` Sink count from DEVICE_SERVICE_IRQ_VECTOR_ESI0. ``funcs`` Atomic helper callbacks ``qlock`` protects **tx_msg_downq** and :c:type:`drm_dp_sideband_msg_tx.state ` ``tx_msg_downq`` List of pending down requests ``tx_waitq`` Wait to queue stall for the tx worker. ``work`` Probe work. ``tx_work`` Sideband transmit worker. This can nest within the main **work** worker for each transaction **work** launches. ``destroy_port_list`` List of to be destroyed connectors. ``destroy_branch_device_list`` List of to be destroyed branch devices. ``delayed_destroy_lock`` Protects **destroy_port_list** and **destroy_branch_device_list**. ``delayed_destroy_wq`` Workqueue used for delayed_destroy_work items. A dedicated WQ makes it possible to drain any requeued work items on it. ``delayed_destroy_work`` Work item to destroy MST port and branch devices, needed to avoid locking inversion. ``up_req_list`` List of pending up requests from the topology that need to be processed, in chronological order. ``up_req_lock`` Protects **up_req_list** ``up_req_work`` Work item to process up requests received from the topology. Needed to avoid blocking hotplug handling and sideband transmissions. ``topology_ref_history_lock`` protects :c:type:`drm_dp_mst_port.topology_ref_history ` and :c:type:`drm_dp_mst_branch.topology_ref_history `.”h]”(hÎ)�”}”(hŒ**Definition**::”h]”(j3 )�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjá‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj݇ubhŒ:”…”�”}”(hj݇h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M}hjÙ‡ubjN )�”}”(hXðstruct drm_dp_mst_topology_mgr { struct drm_private_obj base; struct drm_device *dev; const struct drm_dp_mst_topology_cbs *cbs; int max_dpcd_transaction_bytes; struct drm_dp_aux *aux; int max_payloads; int conn_base_id; struct drm_dp_sideband_msg_rx up_req_recv; struct drm_dp_sideband_msg_rx down_rep_recv; struct mutex lock; struct mutex probe_lock; bool mst_state : 1; bool payload_id_table_cleared : 1; bool reset_rx_state : 1; u8 payload_count; u8 next_start_slot; struct drm_dp_mst_branch *mst_primary; u8 dpcd[DP_RECEIVER_CAP_SIZE]; u8 sink_count; const struct drm_private_state_funcs *funcs; struct mutex qlock; struct list_head tx_msg_downq; wait_queue_head_t tx_waitq; struct work_struct work; struct work_struct tx_work; struct list_head destroy_port_list; struct list_head destroy_branch_device_list; struct mutex delayed_destroy_lock; struct workqueue_struct *delayed_destroy_wq; struct work_struct delayed_destroy_work; struct list_head up_req_list; struct mutex up_req_lock; struct work_struct up_req_work; #if IS_ENABLED(CONFIG_DRM_DEBUG_DP_MST_TOPOLOGY_REFS); struct mutex topology_ref_history_lock; #endif; };”h]”hXðstruct drm_dp_mst_topology_mgr { struct drm_private_obj base; struct drm_device *dev; const struct drm_dp_mst_topology_cbs *cbs; int max_dpcd_transaction_bytes; struct drm_dp_aux *aux; int max_payloads; int conn_base_id; struct drm_dp_sideband_msg_rx up_req_recv; struct drm_dp_sideband_msg_rx down_rep_recv; struct mutex lock; struct mutex probe_lock; bool mst_state : 1; bool payload_id_table_cleared : 1; bool reset_rx_state : 1; u8 payload_count; u8 next_start_slot; struct drm_dp_mst_branch *mst_primary; u8 dpcd[DP_RECEIVER_CAP_SIZE]; u8 sink_count; const struct drm_private_state_funcs *funcs; struct mutex qlock; struct list_head tx_msg_downq; wait_queue_head_t tx_waitq; struct work_struct work; struct work_struct tx_work; struct list_head destroy_port_list; struct list_head destroy_branch_device_list; struct mutex delayed_destroy_lock; struct workqueue_struct *delayed_destroy_wq; struct work_struct delayed_destroy_work; struct list_head up_req_list; struct mutex up_req_lock; struct work_struct up_req_work; #if IS_ENABLED(CONFIG_DRM_DEBUG_DP_MST_TOPOLOGY_REFS); struct mutex topology_ref_history_lock; #endif; };”…”�”}”hjú‡sbah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jM h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´MhjÙ‡ubhÎ)�”}”(hŒ **Members**”h]”j3 )�”}”(hj ˆh]”hŒMembers”…”�”}”(hj ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M¦hjÙ‡ubjw )�”}”(hhh]”(j| )�”}”(hŒ(``base`` Base private object for atomic ”h]”(j‚ )�”}”(hŒ``base``”h]”jˆ )�”}”(hj*ˆh]”hŒbase”…”�”}”(hj,ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj(ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M‚hj$ˆubjž )�”}”(hhh]”hÎ)�”}”(hŒBase private object for atomic”h]”hŒBase private object for atomic”…”�”}”(hjCˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j?ˆh´M‚hj@ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj$ˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j?ˆh´M‚hj!ˆubj| )�”}”(hŒ3``dev`` device pointer for adding i2c devices etc. ”h]”(j‚ )�”}”(hŒ``dev``”h]”jˆ )�”}”(hjcˆh]”hŒdev”…”�”}”(hjeˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjaˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M‡hj]ˆubjž )�”}”(hhh]”hÎ)�”}”(hŒ*device pointer for adding i2c devices etc.”h]”hŒ*device pointer for adding i2c devices etc.”…”�”}”(hj|ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jxˆh´M‡hjyˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj]ˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jxˆh´M‡hj!ˆubj| )�”}”(hŒ:``cbs`` callbacks for connector addition and destruction. ”h]”(j‚ )�”}”(hŒ``cbs``”h]”jˆ )�”}”(hjœˆh]”hŒcbs”…”�”}”(hjžˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjšˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M‹hj–ˆubjž )�”}”(hhh]”hÎ)�”}”(hŒ1callbacks for connector addition and destruction.”h]”hŒ1callbacks for connector addition and destruction.”…”�”}”(hjµˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j±ˆh´M‹hj²ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj–ˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j±ˆh´M‹hj!ˆubj| )�”}”(hŒP``max_dpcd_transaction_bytes`` maximum number of bytes to read/write in one go. ”h]”(j‚ )�”}”(hŒ``max_dpcd_transaction_bytes``”h]”jˆ )�”}”(hjÕˆh]”hŒmax_dpcd_transaction_bytes”…”�”}”(hj׈h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÓˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M�hjψubjž )�”}”(hhh]”hÎ)�”}”(hŒ0maximum number of bytes to read/write in one go.”h]”hŒ0maximum number of bytes to read/write in one go.”…”�”}”(hjîˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M�hjëˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjψubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jêˆh´M�hj!ˆubj| )�”}”(hŒN``aux`` AUX channel for the DP MST connector this topolgy mgr is controlling. ”h]”(j‚ )�”}”(hŒ``aux``”h]”jˆ )�”}”(hj‰h]”hŒaux”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj ‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M•hj ‰ubjž )�”}”(hhh]”hÎ)�”}”(hŒEAUX channel for the DP MST connector this topolgy mgr is controlling.”h]”hŒEAUX channel for the DP MST connector this topolgy mgr is controlling.”…”�”}”(hj(‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M”hj%‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj ‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j$‰h´M•hj!ˆubj| )�”}”(hŒB``max_payloads`` maximum number of payloads the GPU can generate. ”h]”(j‚ )�”}”(hŒ``max_payloads``”h]”jˆ )�”}”(hjI‰h]”hŒ max_payloads”…”�”}”(hjK‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjG‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M™hjC‰ubjž )�”}”(hhh]”hÎ)�”}”(hŒ0maximum number of payloads the GPU can generate.”h]”hŒ0maximum number of payloads the GPU can generate.”…”�”}”(hjb‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j^‰h´M™hj_‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjC‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j^‰h´M™hj!ˆubj| )�”}”(hŒm``conn_base_id`` DRM connector ID this mgr is connected to. Only used to build the MST connector path value. ”h]”(j‚ )�”}”(hŒ``conn_base_id``”h]”jˆ )�”}”(hj‚‰h]”hŒ conn_base_id”…”�”}”(hj„‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj€‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Mžhj|‰ubjž )�”}”(hhh]”hÎ)�”}”(hŒ[DRM connector ID this mgr is connected to. Only used to build the MST connector path value.”h]”hŒ[DRM connector ID this mgr is connected to. Only used to build the MST connector path value.”…”�”}”(hj›‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M�hj˜‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj|‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j—‰h´Mžhj!ˆubj| )�”}”(hŒ8``up_req_recv`` Message receiver state for up requests. ”h]”(j‚ )�”}”(hŒ``up_req_recv``”h]”jˆ )�”}”(hj¼‰h]”hŒ up_req_recv”…”�”}”(hj¾‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjº‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M£hj¶‰ubjž )�”}”(hhh]”hÎ)�”}”(hŒ'Message receiver state for up requests.”h]”hŒ'Message receiver state for up requests.”…”�”}”(hjÕ‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jщh´M£hjÒ‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¶‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jщh´M£hj!ˆubj| )�”}”(hŒG``down_rep_recv`` Message receiver state for replies to down requests. ”h]”(j‚ )�”}”(hŒ``down_rep_recv``”h]”jˆ )�”}”(hjõ‰h]”hŒ down_rep_recv”…”�”}”(hj÷‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjó‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M©hjï‰ubjž )�”}”(hhh]”hÎ)�”}”(hŒ4Message receiver state for replies to down requests.”h]”hŒ4Message receiver state for replies to down requests.”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M¨hj Šubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjï‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j Šh´M©hj!ˆubj| )�”}”(hŒ^``lock`` protects **mst_state**, **mst_primary**, **dpcd**, and **payload_id_table_cleared**. ”h]”(j‚ )�”}”(hŒ``lock``”h]”jˆ )�”}”(hj/Šh]”hŒlock”…”�”}”(hj1Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj-Šubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M¯hj)Šubjž )�”}”(hhh]”hÎ)�”}”(hŒTprotects **mst_state**, **mst_primary**, **dpcd**, and **payload_id_table_cleared**.”h]”(hŒ protects ”…”�”}”(hjHŠh²hh³Nh´Nubj3 )�”}”(hŒ **mst_state**”h]”hŒ mst_state”…”�”}”(hjPŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjHŠubhŒ, ”…”�”}”(hjHŠh²hh³Nh´Nubj3 )�”}”(hŒ**mst_primary**”h]”hŒ mst_primary”…”�”}”(hjbŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjHŠubhŒ, ”…”�”}”hjHŠsbj3 )�”}”(hŒ**dpcd**”h]”hŒdpcd”…”�”}”(hjtŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjHŠubhŒ, and ”…”�”}”(hjHŠh²hh³Nh´Nubj3 )�”}”(hŒ**payload_id_table_cleared**”h]”hŒpayload_id_table_cleared”…”�”}”(hj†Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjHŠubhŒ.”…”�”}”(hjHŠh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M®hjEŠubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj)Šubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jDŠh´M¯hj!ˆubj| )�”}”(hŒâ``probe_lock`` Prevents **work** and **up_req_work**, the only writers of :c:type:`drm_dp_mst_port.mstb ` and :c:type:`drm_dp_mst_branch.ports `, from racing while they update the topology. ”h]”(j‚ )�”}”(hŒ``probe_lock``”h]”jˆ )�”}”(hj±Šh]”hŒ probe_lock”…”�”}”(hj³Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¯Šubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M¶hj«Šubjž )�”}”(hhh]”hÎ)�”}”(hŒÒPrevents **work** and **up_req_work**, the only writers of :c:type:`drm_dp_mst_port.mstb ` and :c:type:`drm_dp_mst_branch.ports `, from racing while they update the topology.”h]”(hŒ Prevents ”…”�”}”(hjÊŠh²hh³Nh´Nubj3 )�”}”(hŒ**work**”h]”hŒwork”…”�”}”(hjÒŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÊŠubhŒ and ”…”�”}”(hjÊŠh²hh³Nh´Nubj3 )�”}”(hŒ**up_req_work**”h]”hŒ up_req_work”…”�”}”(hjäŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÊŠubhŒ, the only writers of ”…”�”}”(hjÊŠh²hh³Nh´Nubh)�”}”(hŒ0:c:type:`drm_dp_mst_port.mstb `”h]”jˆ )�”}”(hjøŠh]”hŒdrm_dp_mst_port.mstb”…”�”}”(hjúŠh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjöŠubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_port”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M´hjÊŠubhŒ and ”…”�”}”hjÊŠsbh)�”}”(hŒ5:c:type:`drm_dp_mst_branch.ports `”h]”jˆ )�”}”(hj‹h]”hŒdrm_dp_mst_branch.ports”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj‹ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_branch”uh1hh³j‹h´M´hjÊŠubhŒ-, from racing while they update the topology.”…”�”}”(hjÊŠh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j‹h´M´hjÇŠubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj«Šubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÆŠh´M¶hj!ˆubj| )�”}”(hŒt``mst_state`` If this manager is enabled for an MST capable port. False if no MST sink/branch devices is connected. ”h]”(j‚ )�”}”(hŒ ``mst_state``”h]”jˆ )�”}”(hjU‹h]”hŒ mst_state”…”�”}”(hjW‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjS‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M¼hjO‹ubjž )�”}”(hhh]”hÎ)�”}”(hŒeIf this manager is enabled for an MST capable port. False if no MST sink/branch devices is connected.”h]”hŒeIf this manager is enabled for an MST capable port. False if no MST sink/branch devices is connected.”…”�”}”(hjn‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M»hjk‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjO‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jj‹h´M¼hj!ˆubj| )�”}”(hŒ{``payload_id_table_cleared`` Whether or not we've cleared the payload ID table for **mst_primary**. Protected by **lock**. ”h]”(j‚ )�”}”(hŒ``payload_id_table_cleared``”h]”jˆ )�”}”(hj�‹h]”hŒpayload_id_table_cleared”…”�”}”(hj‘‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj�‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´MÂhj‰‹ubjž )�”}”(hhh]”hÎ)�”}”(hŒ]Whether or not we've cleared the payload ID table for **mst_primary**. Protected by **lock**.”h]”(hŒ8Whether or not we’ve cleared the payload ID table for ”…”�”}”(hj¨‹h²hh³Nh´Nubj3 )�”}”(hŒ**mst_primary**”h]”hŒ mst_primary”…”�”}”(hj°‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¨‹ubhŒ. Protected by ”…”�”}”(hj¨‹h²hh³Nh´Nubj3 )�”}”(hŒ**lock**”h]”hŒlock”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¨‹ubhŒ.”…”�”}”(hj¨‹h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´MÁhj¥‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj‰‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¤‹h´MÂhj!ˆubj| )�”}”(hŒ ``reset_rx_state`` The down request's reply and up request message receiver state must be reset, after the topology manager got removed. Protected by **lock**. ”h]”(j‚ )�”}”(hŒ``reset_rx_state``”h]”jˆ )�”}”(hjí‹h]”hŒreset_rx_state”…”�”}”(hjï‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjë‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´MÉhjç‹ubjž )�”}”(hhh]”hÎ)�”}”(hŒŒThe down request's reply and up request message receiver state must be reset, after the topology manager got removed. Protected by **lock**.”h]”(hŒ…The down request’s reply and up request message receiver state must be reset, after the topology manager got removed. Protected by ”…”�”}”(hjŒh²hh³Nh´Nubj3 )�”}”(hŒ**lock**”h]”hŒlock”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjŒubhŒ.”…”�”}”(hjŒh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´MÇhjŒubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjç‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jŒh´MÉhj!ˆubj| )�”}”(hŒé``payload_count`` The number of currently active payloads in hardware. This value is only intended to be used internally by MST helpers for payload tracking, and is only safe to read/write from the atomic commit (not check) context. ”h]”(j‚ )�”}”(hŒ``payload_count``”h]”jˆ )�”}”(hj9Œh]”hŒ payload_count”…”�”}”(hj;Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj7Œubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´MÐhj3Œubjž )�”}”(hhh]”hÎ)�”}”(hŒÖThe number of currently active payloads in hardware. This value is only intended to be used internally by MST helpers for payload tracking, and is only safe to read/write from the atomic commit (not check) context.”h]”hŒÖThe number of currently active payloads in hardware. This value is only intended to be used internally by MST helpers for payload tracking, and is only safe to read/write from the atomic commit (not check) context.”…”�”}”(hjRŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´MÎhjOŒubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj3Œubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jNŒh´MÐhj!ˆubj| )�”}”(hŒÔ``next_start_slot`` The starting timeslot to use for new VC payloads. This value is used internally by MST helpers for payload tracking, and is only safe to read/write from the atomic commit (not check) context. ”h]”(j‚ )�”}”(hŒ``next_start_slot``”h]”jˆ )�”}”(hjsŒh]”hŒnext_start_slot”…”�”}”(hjuŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjqŒubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M×hjmŒubjž )�”}”(hhh]”hÎ)�”}”(hŒ¿The starting timeslot to use for new VC payloads. This value is used internally by MST helpers for payload tracking, and is only safe to read/write from the atomic commit (not check) context.”h]”hŒ¿The starting timeslot to use for new VC payloads. This value is used internally by MST helpers for payload tracking, and is only safe to read/write from the atomic commit (not check) context.”…”�”}”(hjŒŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´MÕhj‰Œubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjmŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jˆŒh´M×hj!ˆubj| )�”}”(hŒ<``mst_primary`` Pointer to the primary/first branch device. ”h]”(j‚ )�”}”(hŒ``mst_primary``”h]”jˆ )�”}”(hj­Œh]”hŒ mst_primary”…”�”}”(hj¯Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj«Œubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´MÜhj§Œubjž )�”}”(hhh]”hÎ)�”}”(hŒ+Pointer to the primary/first branch device.”h]”hŒ+Pointer to the primary/first branch device.”…”�”}”(hjÆŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÂŒh´MÜhjÃŒubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj§Œubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÂŒh´MÜhj!ˆubj| )�”}”(hŒ)``dpcd`` Cache of DPCD for primary port. ”h]”(j‚ )�”}”(hŒ``dpcd``”h]”jˆ )�”}”(hjæŒh]”hŒdpcd”…”�”}”(hjèŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjäŒubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´MáhjàŒubjž )�”}”(hhh]”hÎ)�”}”(hŒCache of DPCD for primary port.”h]”hŒCache of DPCD for primary port.”…”�”}”(hjÿŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jûŒh´MáhjüŒubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjàŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jûŒh´Máhj!ˆubj| )�”}”(hŒ?``sink_count`` Sink count from DEVICE_SERVICE_IRQ_VECTOR_ESI0. ”h]”(j‚ )�”}”(hŒ``sink_count``”h]”jˆ )�”}”(hj�h]”hŒ sink_count”…”�”}”(hj!�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Måhj�ubjž )�”}”(hhh]”hÎ)�”}”(hŒ/Sink count from DEVICE_SERVICE_IRQ_VECTOR_ESI0.”h]”hŒ/Sink count from DEVICE_SERVICE_IRQ_VECTOR_ESI0.”…”�”}”(hj8�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j4�h´Måhj5�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j4�h´Måhj!ˆubj| )�”}”(hŒ"``funcs`` Atomic helper callbacks ”h]”(j‚ )�”}”(hŒ ``funcs``”h]”jˆ )�”}”(hjX�h]”hŒfuncs”…”�”}”(hjZ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjV�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´MêhjR�ubjž )�”}”(hhh]”hÎ)�”}”(hŒAtomic helper callbacks”h]”hŒAtomic helper callbacks”…”�”}”(hjq�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jm�h´Mêhjn�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjR�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jm�h´Mêhj!ˆubj| )�”}”(hŒh``qlock`` protects **tx_msg_downq** and :c:type:`drm_dp_sideband_msg_tx.state ` ”h]”(j‚ )�”}”(hŒ ``qlock``”h]”jˆ )�”}”(hj‘�h]”hŒqlock”…”�”}”(hj“�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj��ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Mïhj‹�ubjž )�”}”(hhh]”hÎ)�”}”(hŒ]protects **tx_msg_downq** and :c:type:`drm_dp_sideband_msg_tx.state `”h]”(hŒ protects ”…”�”}”(hjª�h²hh³Nh´Nubj3 )�”}”(hŒ**tx_msg_downq**”h]”hŒ tx_msg_downq”…”�”}”(hj²�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjª�ubhŒ and ”…”�”}”(hjª�h²hh³Nh´Nubh)�”}”(hŒ?:c:type:`drm_dp_sideband_msg_tx.state `”h]”jˆ )�”}”(hjÆ�h]”hŒdrm_dp_sideband_msg_tx.state”…”�”}”(hjÈ�h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÄ�ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_sideband_msg_tx”uh1hh³j¦�h´Mïhjª�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¦�h´Mïhj§�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj‹�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¦�h´Mïhj!ˆubj| )�”}”(hŒ/``tx_msg_downq`` List of pending down requests ”h]”(j‚ )�”}”(hŒ``tx_msg_downq``”h]”jˆ )�”}”(hjû�h]”hŒ tx_msg_downq”…”�”}”(hjý�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjù�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Môhjõ�ubjž )�”}”(hhh]”hÎ)�”}”(hŒList of pending down requests”h]”hŒList of pending down requests”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jŽh´MôhjŽubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjõ�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jŽh´Môhj!ˆubj| )�”}”(hŒ4``tx_waitq`` Wait to queue stall for the tx worker. ”h]”(j‚ )�”}”(hŒ ``tx_waitq``”h]”jˆ )�”}”(hj4Žh]”hŒtx_waitq”…”�”}”(hj6Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj2Žubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Mùhj.Žubjž )�”}”(hhh]”hÎ)�”}”(hŒ&Wait to queue stall for the tx worker.”h]”hŒ&Wait to queue stall for the tx worker.”…”�”}”(hjMŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jIŽh´MùhjJŽubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj.Žubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jIŽh´Mùhj!ˆubj| )�”}”(hŒ``work`` Probe work. ”h]”(j‚ )�”}”(hŒ``work``”h]”jˆ )�”}”(hjmŽh]”hŒwork”…”�”}”(hjoŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjkŽubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´MýhjgŽubjž )�”}”(hhh]”hÎ)�”}”(hŒ Probe work.”h]”hŒ Probe work.”…”�”}”(hj†Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j‚Žh´MýhjƒŽubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjgŽubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j‚Žh´Mýhj!ˆubj| )�”}”(hŒ|``tx_work`` Sideband transmit worker. This can nest within the main **work** worker for each transaction **work** launches. ”h]”(j‚ )�”}”(hŒ ``tx_work``”h]”jˆ )�”}”(hj¦Žh]”hŒtx_work”…”�”}”(hj¨Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¤Žubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Mhj Žubjž )�”}”(hhh]”hÎ)�”}”(hŒoSideband transmit worker. This can nest within the main **work** worker for each transaction **work** launches.”h]”(hŒ8Sideband transmit worker. This can nest within the main ”…”�”}”(hj¿Žh²hh³Nh´Nubj3 )�”}”(hŒ**work**”h]”hŒwork”…”�”}”(hjÇŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¿ŽubhŒ worker for each transaction ”…”�”}”(hj¿Žh²hh³Nh´Nubj3 )�”}”(hŒ**work**”h]”hŒwork”…”�”}”(hjÙŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¿ŽubhŒ launches.”…”�”}”(hj¿Žh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Mhj¼Žubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj Žubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j»Žh´Mhj!ˆubj| )�”}”(hŒ:``destroy_port_list`` List of to be destroyed connectors. ”h]”(j‚ )�”}”(hŒ``destroy_port_list``”h]”jˆ )�”}”(hj�h]”hŒdestroy_port_list”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´MhjþŽubjž )�”}”(hhh]”hÎ)�”}”(hŒ#List of to be destroyed connectors.”h]”hŒ#List of to be destroyed connectors.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j�h´Mhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjþŽubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j�h´Mhj!ˆubj| )�”}”(hŒG``destroy_branch_device_list`` List of to be destroyed branch devices. ”h]”(j‚ )�”}”(hŒ``destroy_branch_device_list``”h]”jˆ )�”}”(hj=�h]”hŒdestroy_branch_device_list”…”�”}”(hj?�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj;�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M hj7�ubjž )�”}”(hhh]”hÎ)�”}”(hŒ'List of to be destroyed branch devices.”h]”hŒ'List of to be destroyed branch devices.”…”�”}”(hjV�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M hjS�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj7�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jR�h´M hj!ˆubj| )�”}”(hŒ\``delayed_destroy_lock`` Protects **destroy_port_list** and **destroy_branch_device_list**. ”h]”(j‚ )�”}”(hŒ``delayed_destroy_lock``”h]”jˆ )�”}”(hjw�h]”hŒdelayed_destroy_lock”…”�”}”(hjy�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hju�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Mhjq�ubjž )�”}”(hhh]”hÎ)�”}”(hŒBProtects **destroy_port_list** and **destroy_branch_device_list**.”h]”(hŒ Protects ”…”�”}”(hj��h²hh³Nh´Nubj3 )�”}”(hŒ**destroy_port_list**”h]”hŒdestroy_port_list”…”�”}”(hj˜�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj��ubhŒ and ”…”�”}”(hj��h²hh³Nh´Nubj3 )�”}”(hŒ**destroy_branch_device_list**”h]”hŒdestroy_branch_device_list”…”�”}”(hjª�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj��ubhŒ.”…”�”}”(hj��h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Mhj��ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjq�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jŒ�h´Mhj!ˆubj| )�”}”(hŒ�``delayed_destroy_wq`` Workqueue used for delayed_destroy_work items. A dedicated WQ makes it possible to drain any requeued work items on it. ”h]”(j‚ )�”}”(hŒ``delayed_destroy_wq``”h]”jˆ )�”}”(hjÕ�h]”hŒdelayed_destroy_wq”…”�”}”(hj×�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÓ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´MhjÏ�ubjž )�”}”(hhh]”hÎ)�”}”(hŒwWorkqueue used for delayed_destroy_work items. A dedicated WQ makes it possible to drain any requeued work items on it.”h]”hŒwWorkqueue used for delayed_destroy_work items. A dedicated WQ makes it possible to drain any requeued work items on it.”…”�”}”(hjî�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Mhjë�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÏ�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jê�h´Mhj!ˆubj| )�”}”(hŒn``delayed_destroy_work`` Work item to destroy MST port and branch devices, needed to avoid locking inversion. ”h]”(j‚ )�”}”(hŒ``delayed_destroy_work``”h]”jˆ )�”}”(hj�h]”hŒdelayed_destroy_work”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj �ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Mhj �ubjž )�”}”(hhh]”hÎ)�”}”(hŒTWork item to destroy MST port and branch devices, needed to avoid locking inversion.”h]”hŒTWork item to destroy MST port and branch devices, needed to avoid locking inversion.”…”�”}”(hj(�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Mhj%�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj �ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j$�h´Mhj!ˆubj| )�”}”(hŒq``up_req_list`` List of pending up requests from the topology that need to be processed, in chronological order. ”h]”(j‚ )�”}”(hŒ``up_req_list``”h]”jˆ )�”}”(hjI�h]”hŒ up_req_list”…”�”}”(hjK�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjG�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M$hjC�ubjž )�”}”(hhh]”hÎ)�”}”(hŒ`List of pending up requests from the topology that need to be processed, in chronological order.”h]”hŒ`List of pending up requests from the topology that need to be processed, in chronological order.”…”�”}”(hjb�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M#hj_�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjC�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j^�h´M$hj!ˆubj| )�”}”(hŒ)``up_req_lock`` Protects **up_req_list** ”h]”(j‚ )�”}”(hŒ``up_req_lock``”h]”jˆ )�”}”(hjƒ�h]”hŒ up_req_lock”…”�”}”(hj…�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj��ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M(hj}�ubjž )�”}”(hhh]”hÎ)�”}”(hŒProtects **up_req_list**”h]”(hŒ Protects ”…”�”}”(hjœ�h²hh³Nh´Nubj3 )�”}”(hŒ**up_req_list**”h]”hŒ up_req_list”…”�”}”(hj¤�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjœ�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j˜�h´M(hj™�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj}�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j˜�h´M(hj!ˆubj| )�”}”(hŒ“``up_req_work`` Work item to process up requests received from the topology. Needed to avoid blocking hotplug handling and sideband transmissions. ”h]”(j‚ )�”}”(hŒ``up_req_work``”h]”jˆ )�”}”(hjÊ�h]”hŒ up_req_work”…”�”}”(hjÌ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÈ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M.hjÄ�ubjž )�”}”(hhh]”hÎ)�”}”(hŒ‚Work item to process up requests received from the topology. Needed to avoid blocking hotplug handling and sideband transmissions.”h]”hŒ‚Work item to process up requests received from the topology. Needed to avoid blocking hotplug handling and sideband transmissions.”…”�”}”(hjã�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M,hjà�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÄ�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jß�h´M.hj!ˆubj| )�”}”(hŒ±``topology_ref_history_lock`` protects :c:type:`drm_dp_mst_port.topology_ref_history ` and :c:type:`drm_dp_mst_branch.topology_ref_history `.”h]”(j‚ )�”}”(hŒ``topology_ref_history_lock``”h]”jˆ )�”}”(hj‘h]”hŒtopology_ref_history_lock”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M5hjþ�ubjž )�”}”(hhh]”hÎ)�”}”(hŒ“protects :c:type:`drm_dp_mst_port.topology_ref_history ` and :c:type:`drm_dp_mst_branch.topology_ref_history `.”h]”(hŒ protects ”…”�”}”(hj‘h²hh³Nh´Nubh)�”}”(hŒ@:c:type:`drm_dp_mst_port.topology_ref_history `”h]”jˆ )�”}”(hj'‘h]”hŒ$drm_dp_mst_port.topology_ref_history”…”�”}”(hj)‘h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj%‘ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_port”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M4hj‘ubhŒ and ”…”�”}”(hj‘h²hh³Nh´Nubh)�”}”(hŒD:c:type:`drm_dp_mst_branch.topology_ref_history `”h]”jˆ )�”}”(hjK‘h]”hŒ&drm_dp_mst_branch.topology_ref_history”…”�”}”(hjM‘h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjI‘ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_branch”uh1hh³jD‘h´M4hj‘ubhŒ.”…”�”}”(hj‘h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jD‘h´M4hj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjþ�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j‘h´M5hj!ˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÙ‡ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjösh²hh³Nh´NubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj�‘h]”hŒ Description”…”�”}”(hj�‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj‹‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M9hjösh²hubhÎ)�”}”(hŒ™This struct represents the toplevel displayport MST topology manager. There should be one instance of this for every MST capable DP connector on the GPU.”h]”hŒ™This struct represents the toplevel displayport MST topology manager. There should be one instance of this for every MST capable DP connector on the GPU.”…”�”}”(hj£‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Mzhjösh²hubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_dp_mst_mode (C enum)”Œc.drm_dp_mst_mode”hNt”auh1j† hjösh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒdrm_dp_mst_mode”h]”j¤ )�”}”(hŒenum drm_dp_mst_mode”h]”(jª )�”}”(hjÂ7h]”hŒenum”…”�”}”(hjË‘h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjÇ‘h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”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Œdrm_dp_mst_mode”h]”jÓ )�”}”(hjÅ‘h]”hŒdrm_dp_mst_mode”…”�”}”(hjë‘h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjç‘ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÇ‘h²hh³jØ‘h´M�ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œsink's MST mode capability”h]”hŒsink’s MST mode capability”…”�”}”(hj ’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´MChj ’h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÀ‘h²hh³jØ‘h´M�ubeh}”(h]”h ]”(j Œenum”eh"]”h$]”h&]”j" j j# j%’j$ j%’j% ‰j& ‰j' ‰uh1j˜ h²hhjösh³Nh´Nubj) )�”}”(hX,**Constants** ``DRM_DP_SST`` The sink does not support MST nor single stream sideband messaging. ``DRM_DP_MST`` Sink supports MST, more than one stream and single stream sideband messaging. ``DRM_DP_SST_SIDEBAND_MSG`` Sink supports only one stream and single stream sideband messaging.”h]”(hÎ)�”}”(hŒ **Constants**”h]”j3 )�”}”(hj/’h]”hŒ Constants”…”�”}”(hj1’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj-’ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´MGhj)’ubjw )�”}”(hhh]”(j| )�”}”(hŒS``DRM_DP_SST`` The sink does not support MST nor single stream sideband messaging. ”h]”(j‚ )�”}”(hŒ``DRM_DP_SST``”h]”jˆ )�”}”(hjN’h]”hŒ DRM_DP_SST”…”�”}”(hjP’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjL’ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´MKhjH’ubjž )�”}”(hhh]”hÎ)�”}”(hŒCThe sink does not support MST nor single stream sideband messaging.”h]”hŒCThe sink does not support MST nor single stream sideband messaging.”…”�”}”(hjg’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´MJhjd’ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjH’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jc’h´MKhjE’ubj| )�”}”(hŒ]``DRM_DP_MST`` Sink supports MST, more than one stream and single stream sideband messaging. ”h]”(j‚ )�”}”(hŒ``DRM_DP_MST``”h]”jˆ )�”}”(hjˆ’h]”hŒ DRM_DP_MST”…”�”}”(hjŠ’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj†’ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´MOhj‚’ubjž )�”}”(hhh]”hÎ)�”}”(hŒMSink supports MST, more than one stream and single stream sideband messaging.”h]”hŒMSink supports MST, more than one stream and single stream sideband messaging.”…”�”}”(hj¡’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´MNhjž’ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj‚’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j�’h´MOhjE’ubj| )�”•}”(hŒ_``DRM_DP_SST_SIDEBAND_MSG`` Sink supports only one stream and single stream sideband messaging.”h]”(j‚ )�”}”(hŒ``DRM_DP_SST_SIDEBAND_MSG``”h]”jˆ )�”}”(hjÂ’h]”hŒDRM_DP_SST_SIDEBAND_MSG”…”�”}”(hjÄ’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÀ’ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´MRhj¼’ubjž )�”}”(hhh]”hÎ)�”}”(hŒCSink supports only one stream and single stream sideband messaging.”h]”hŒCSink supports only one stream and single stream sideband messaging.”…”�”}”(hjÛ’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j×’h´MRhjØ’ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¼’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j×’h´MRhjE’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj)’ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjösh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ(__drm_dp_mst_state_iter_get (C function)”Œc.__drm_dp_mst_state_iter_get”hNt”auh1j† hjösh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒËbool __drm_dp_mst_state_iter_get (struct drm_atomic_commit *state, struct drm_dp_mst_topology_mgr **mgr, struct drm_dp_mst_topology_state **old_state, struct drm_dp_mst_topology_state **new_state, int i)”h]”j¤ )�”}”(hŒÊbool __drm_dp_mst_state_iter_get(struct drm_atomic_commit *state, struct drm_dp_mst_topology_mgr **mgr, struct drm_dp_mst_topology_state **old_state, struct drm_dp_mst_topology_state **new_state, int i)”h]”(j¦)�”}”(hj£Ih]”hŒbool”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj“h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”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Œ__drm_dp_mst_state_iter_get”h]”jÓ )�”}”(hŒ__drm_dp_mst_state_iter_get”h]”hŒ__drm_dp_mst_state_iter_get”…”�”}”(hj;“h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj7“ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj“h²hh³j(“h´M×ubjÞ)�”}”(hŒª(struct drm_atomic_commit *state, struct drm_dp_mst_topology_mgr **mgr, struct drm_dp_mst_topology_state **old_state, struct drm_dp_mst_topology_state **new_state, int i)”h]”(jä)�”}”(hŒstruct drm_atomic_commit *state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjW“h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjS“ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjd“h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjS“ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_atomic_commit”h]”hŒdrm_atomic_commit”…”�”}”(hju“h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjr“ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jw“Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj=“sbŒc.__drm_dp_mst_state_iter_get”†”asbuh1hhjS“ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•“h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjS“ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj£“h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjS“ubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hj°“h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjS“ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjO“ubjä)�”}”(hŒ$struct drm_dp_mst_topology_mgr **mgr”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Œdrm_dp_mst_topology_mgr”h]”hŒdrm_dp_mst_topology_mgr”…”�”}”(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.__drm_dp_mst_state_iter_get”†”asbuh1hhjÅ“ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÅ“ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÅ“ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj ”h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÅ“ubjÓ )�”}”(hŒmgr”h]”hŒmgr”…”�”}”(hj-”h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÅ“ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjO“ubjä)�”}”(hŒ,struct drm_dp_mst_topology_state **old_state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjF”h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjB”ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjS”h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjB”ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_dp_mst_topology_state”h]”hŒdrm_dp_mst_topology_state”…”�”}”(hjd”h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hja”ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jf”Œmodname”NŒ classname”Njé jì )�”}”jï ]”j‘“Œc.__drm_dp_mst_state_iter_get”†”asbuh1hhjB”ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚”h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjB”ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj�”h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjB”ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj�”h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjB”ubjÓ )�”}”(hŒ old_state”h]”hŒ old_state”…”�”}”(hjª”h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjB”ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjO“ubjä)�”}”(hŒ,struct drm_dp_mst_topology_state **new_state”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Œdrm_dp_mst_topology_state”h]”hŒdrm_dp_mst_topology_state”…”�”}”(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.__drm_dp_mst_state_iter_get”†”asbuh1hhj¿”ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿ”h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¿”ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj •h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¿”ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¿”ubjÓ )�”}”(hŒ new_state”h]”hŒ new_state”…”�”}”(hj'•h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¿”ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjO“ubjä)�”}”(hŒint i”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj@•h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj<•ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjN•h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj<•ubjÓ )�”}”(hŒi”h]”hŒi”…”�”}”(hj\•h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj<•ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjO“ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj“h²hh³j(“h´M×ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ=private atomic state iterator function for macro-internal use”h]”hŒ=private atomic state iterator function for macro-internal use”…”�”}”(hj†•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”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²hhjösh³Nh´Nubj) )�”}”(hXÝ**Parameters** ``struct drm_atomic_commit *state`` :c:type:`struct drm_atomic_commit ` pointer ``struct drm_dp_mst_topology_mgr **mgr`` pointer to the :c:type:`struct drm_dp_mst_topology_mgr ` iteration cursor ``struct drm_dp_mst_topology_state **old_state`` optional pointer to the old :c:type:`struct drm_dp_mst_topology_state ` iteration cursor ``struct drm_dp_mst_topology_state **new_state`` optional pointer to the new :c:type:`struct drm_dp_mst_topology_state ` iteration cursor ``int i`` int iteration cursor, for macro-internal use **Description** Used by for_each_oldnew_mst_mgr_in_state(), for_each_old_mst_mgr_in_state(), and for_each_new_mst_mgr_in_state(). Don't call this directly. **Return** True if the current :c:type:`struct drm_private_obj ` is a :c:type:`struct drm_dp_mst_topology_mgr `, false otherwise.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj¨•h]”hŒ Parameters”…”�”}”(hjª•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¦•ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´MÛhj¢•ubjw )�”}”(hhh]”(j| )�”}”(hŒc``struct drm_atomic_commit *state`` :c:type:`struct drm_atomic_commit ` pointer ”h]”(j‚ )�”}”(hŒ#``struct drm_atomic_commit *state``”h]”jˆ )�”}”(hjÇ•h]”hŒstruct drm_atomic_commit *state”…”�”}”(hjÉ•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÅ•ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´MÙhjÁ•ubjž )�”}”(hhh]”hÎ)�”}”(hŒ>:c:type:`struct drm_atomic_commit ` pointer”h]”(h)�”}”(hŒ6:c:type:`struct drm_atomic_commit `”h]”jˆ )�”}”(hjæ•h]”hŒstruct drm_atomic_commit”…”�”}”(hjè•h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjä•ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_atomic_commit”uh1hh³jÜ•h´MÙhjà•ubhŒ pointer”…”�”}”(hjà•h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÜ•h´MÙhjÝ•ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÁ•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÜ•h´MÙhj¾•ubj| )�”}”(hŒŒ``struct drm_dp_mst_topology_mgr **mgr`` pointer to the :c:type:`struct drm_dp_mst_topology_mgr ` iteration cursor ”h]”(j‚ )�”}”(hŒ(``struct drm_dp_mst_topology_mgr **mgr``”h]”jˆ )�”}”(hj–h]”hŒ$struct drm_dp_mst_topology_mgr **mgr”…”�”}”(hj!–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´MÚhj–ubjž )�”}”(hhh]”hÎ)�”}”(hŒbpointer to the :c:type:`struct drm_dp_mst_topology_mgr ` iteration cursor”h]”(hŒpointer to the ”…”�”}”(hj8–h²hh³Nh´Nubh)�”}”(hŒB:c:type:`struct drm_dp_mst_topology_mgr `”h]”jˆ )�”}”(hjB–h]”hŒstruct drm_dp_mst_topology_mgr”…”�”}”(hjD–h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj@–ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_topology_mgr”uh1hh³j4–h´MÚhj8–ubhŒ iteration cursor”…”�”}”(hj8–h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j4–h´MÚhj5–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j4–h´MÚhj¾•ubj| )�”}”(hŒ¥``struct drm_dp_mst_topology_state **old_state`` optional pointer to the old :c:type:`struct drm_dp_mst_topology_state ` iteration cursor ”h]”(j‚ )�”}”(hŒ0``struct drm_dp_mst_topology_state **old_state``”h]”jˆ )�”}”(hj{–h]”hŒ,struct drm_dp_mst_topology_state **old_state”…”�”}”(hj}–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjy–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´MÜhju–ubjž )�”}”(hhh]”hÎ)�”}”(hŒsoptional pointer to the old :c:type:`struct drm_dp_mst_topology_state ` iteration cursor”h]”(hŒoptional pointer to the old ”…”�”}”(hj”–h²hh³Nh´Nubh)�”}”(hŒF:c:type:`struct drm_dp_mst_topology_state `”h]”jˆ )�”}”(hjž–h]”hŒ struct drm_dp_mst_topology_state”…”�”}”(hj –h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjœ–ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_topology_state”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´MÛhj”–ubhŒ iteration cursor”…”�”}”(hj”–h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j»–h´MÛhj‘–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hju–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j�–h´MÜhj¾•ubj| )�”}”(hŒ¥``struct drm_dp_mst_topology_state **new_state`` optional pointer to the new :c:type:`struct drm_dp_mst_topology_state ` iteration cursor ”h]”(j‚ )�”}”(hŒ0``struct drm_dp_mst_topology_state **new_state``”h]”jˆ )�”}”(hjØ–h]”hŒ,struct drm_dp_mst_topology_state **new_state”…”�”}”(hjÚ–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÖ–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´MÞhjÒ–ubjž )�”}”(hhh]”hÎ)�”}”(hŒsoptional pointer to the new :c:type:`struct drm_dp_mst_topology_state ` iteration cursor”h]”(hŒoptional pointer to the new ”…”�”}”(hjñ–h²hh³Nh´Nubh)�”}”(hŒF:c:type:`struct drm_dp_mst_topology_state `”h]”jˆ )�”}”(hjû–h]”hŒ struct drm_dp_mst_topology_state”…”�”}”(hjý–h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjù–ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_topology_state”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´MÝhjñ–ubhŒ iteration cursor”…”�”}”(hjñ–h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j—h´MÝhjî–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÒ–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jí–h´MÞhj¾•ubj| )�”}”(hŒ7``int i`` int iteration cursor, for macro-internal use ”h]”(j‚ )�”}”(hŒ ``int i``”h]”jˆ )�”}”(hj5—h]”hŒint i”…”�”}”(hj7—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj3—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Mßhj/—ubjž )�”}”(hhh]”hÎ)�”}”(hŒ,int iteration cursor, for macro-internal use”h]”hŒ,int iteration cursor, for macro-internal use”…”�”}”(hjN—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jJ—h´MßhjK—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj/—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jJ—h´Mßhj¾•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj¢•ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjp—h]”hŒ Description”…”�”}”(hjr—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjn—ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Máhj¢•ubhÎ)�”}”(hŒ‹Used by for_each_oldnew_mst_mgr_in_state(), for_each_old_mst_mgr_in_state(), and for_each_new_mst_mgr_in_state(). Don't call this directly.”h]”hŒ�Used by for_each_oldnew_mst_mgr_in_state(), for_each_old_mst_mgr_in_state(), and for_each_new_mst_mgr_in_state(). Don’t call this directly.”…”�”}”(hj†—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Màhj¢•ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj——h]”hŒReturn”…”�”}”(hj™—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj•—ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Mähj¢•ubhÎ)�”}”(hŒ True if the current :c:type:`struct drm_private_obj ` is a :c:type:`struct drm_dp_mst_topology_mgr `, false otherwise.”h]”(hŒTrue if the current ”…”�”}”(hj­—h²hh³Nh´Nubh)�”}”(hŒ2:c:type:`struct drm_private_obj `”h]”jˆ )�”}”(hj·—h]”hŒstruct drm_private_obj”…”�”}”(hj¹—h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjµ—ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_private_obj”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Måhj­—ubhŒ is a ”…”�”}”(hj­—h²hh³Nh´Nubh)�”}”(hŒB:c:type:`struct drm_dp_mst_topology_mgr `”h]”jˆ )�”}”(hjÛ—h]”hŒstruct drm_dp_mst_topology_mgr”…”�”}”(hjÝ—h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÙ—ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_topology_mgr”uh1hh³jÔ—h´Måhj­—ubhŒ, false otherwise.”…”�”}”(hj­—h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÔ—h´Måhj¢•ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjösh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ*for_each_oldnew_mst_mgr_in_state (C macro)”Œ"c.for_each_oldnew_mst_mgr_in_state”hNt”auh1j† hjösh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ for_each_oldnew_mst_mgr_in_state”h]”j¤ )�”}”(hŒ for_each_oldnew_mst_mgr_in_state”h]”jÍ )�”}”(hŒ for_each_oldnew_mst_mgr_in_state”h]”jÓ )�”}”(hj˜h]”hŒ for_each_oldnew_mst_mgr_in_state”…”�”}”(hj&˜h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj"˜ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj˜h²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Mÿubah}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj˜h²hh³j9˜h´Mÿubah}”(h]”j˜ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j9˜h´Mÿhj˜h²hubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j hj˜h²hh³j9˜h´Mÿubeh}”(h]”h ]”(j Œmacro”eh"]”h$]”h&]”j" j j# jR˜j$ jR˜j% ‰j& ‰j' ‰uh1j˜ h²hhjösh³Nh´NubhÎ)�”}”(hŒN``for_each_oldnew_mst_mgr_in_state (__state, mgr, old_state, new_state, __i)``”h]”jˆ )�”}”(hjX˜h]”hŒJfor_each_oldnew_mst_mgr_in_state (__state, mgr, old_state, new_state, __i)”…”�”}”(hjZ˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjV˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Mhjösh²hubj^E)�”}”(hŒ>iterate over all DP MST topology managers in an atomic update ”h]”hÎ)�”}”(hŒ=iterate over all DP MST topology managers in an atomic update”h]”hŒ=iterate over all DP MST topology managers in an atomic update”…”�”}”(hjr˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Mÿhjn˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]Eh³j€˜h´Mÿhjösh²hubj) )�”}”(hX×**Parameters** ``__state`` :c:type:`struct drm_atomic_commit ` pointer ``mgr`` :c:type:`struct drm_dp_mst_topology_mgr ` iteration cursor ``old_state`` :c:type:`struct drm_dp_mst_topology_state ` iteration cursor for the old state ``new_state`` :c:type:`struct drm_dp_mst_topology_state ` iteration cursor for the new state ``__i`` int iteration cursor, for macro-internal use **Description** This iterates over all DRM DP MST topology managers in an atomic update, tracking both old and new state. This is useful in places where the state delta needs to be considered, for example in atomic check functions.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj�˜h]”hŒ Parameters”…”�”}”(hj�˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj‹˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Mhj‡˜ubjw )�”}”(hhh]”(j| )�”}”(hŒK``__state`` :c:type:`struct drm_atomic_commit ` pointer ”h]”(j‚ )�”}”(hŒ ``__state``”h]”jˆ )�”}”(hj¬˜h]”hŒ__state”…”�”}”(hj®˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjª˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Mhj¦˜ubjž )�”}”(hhh]”hÎ)�”}”(hŒ>:c:type:`struct drm_atomic_commit ` pointer”h]”(h)�”}”(hŒ6:c:type:`struct drm_atomic_commit `”h]”jˆ )�”}”(hj˘h]”hŒstruct drm_atomic_commit”…”�”}”(hj͘h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjɘubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_atomic_commit”uh1hh³jÁ˜h´MhjŘubhŒ pointer”…”�”}”(hjŘh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÁ˜h´Mhj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¦˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÁ˜h´Mhj£˜ubj| )�”}”(hŒ\``mgr`` :c:type:`struct drm_dp_mst_topology_mgr ` iteration cursor ”h]”(j‚ )�”}”(hŒ``mgr``”h]”jˆ )�”}”(hj™h]”hŒmgr”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj™ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Mhjþ˜ubjž )�”}”(hhh]”hÎ)�”}”(hŒS:c:type:`struct drm_dp_mst_topology_mgr ` iteration cursor”h]”(h)�”}”(hŒB:c:type:`struct drm_dp_mst_topology_mgr `”h]”jˆ )�”}”(hj#™h]”hŒstruct drm_dp_mst_topology_mgr”…”�”}”(hj%™h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj!™ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_topology_mgr”uh1hh³j™h´Mhj™ubhŒ iteration cursor”…”�”}”(hj™h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j™h´Mhj™ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjþ˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j™h´Mhj£˜ubj| )�”}”(hŒx``old_state`` :c:type:`struct drm_dp_mst_topology_state ` iteration cursor for the old state ”h]”(j‚ )�”}”(hŒ ``old_state``”h]”jˆ )�”}”(hj\™h]”hŒ old_state”…”�”}”(hj^™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjZ™ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´MhjV™ubjž )�”}”(hhh]”hÎ)�”}”(hŒi:c:type:`struct drm_dp_mst_topology_state ` iteration cursor for the old state”h]”(h)�”}”(hŒF:c:type:`struct drm_dp_mst_topology_state `”h]”jˆ )�”}”(hj{™h]”hŒ struct drm_dp_mst_topology_state”…”�”}”(hj}™h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjy™ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_topology_state”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Mhju™ubhŒ# iteration cursor for the old state”…”�”}”(hju™h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j˜™h´Mhjr™ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjV™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jq™h´Mhj£˜ubj| )�”}”(hŒx``new_state`` :c:type:`struct drm_dp_mst_topology_state ` iteration cursor for the new state ”h]”(j‚ )�”}”(hŒ ``new_state``”h]”jˆ )�”}”(hjµ™h]”hŒ new_state”…”�”}”(hj·™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj³™ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Mhj¯™ubjž )�”}”(hhh]”hÎ)�”}”(hŒi:c:type:`struct drm_dp_mst_topology_state ` iteration cursor for the new state”h]”(h)�”}”(hŒF:c:type:`struct drm_dp_mst_topology_state `”h]”jˆ )�”}”(hjÔ™h]”hŒ struct drm_dp_mst_topology_state”…”�”}”(hjÖ™h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÒ™ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_topology_state”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´MhjΙubhŒ# iteration cursor for the new state”…”�”}”(hjΙh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jñ™h´MhjË™ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¯™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÊ™h´Mhj£˜ubj| )�”}”(hŒ5``__i`` int iteration cursor, for macro-internal use ”h]”(j‚ )�”}”(hŒ``__i``”h]”jˆ )�”}”(hjšh]”hŒ__i”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj šubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Mhjšubjž )�”}”(hhh]”hÎ)�”}”(hŒ,int iteration cursor, for macro-internal use”h]”hŒ,int iteration cursor, for macro-internal use”…”�”}”(hj'šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j#šh´Mhj$šubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjšubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j#šh´Mhj£˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj‡˜ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjIšh]”hŒ Description”…”�”}”(hjKšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjGšubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M hj‡˜ubhÎ)�”}”(hŒ×This iterates over all DRM DP MST topology managers in an atomic update, tracking both old and new state. This is useful in places where the state delta needs to be considered, for example in atomic check functions.”h]”hŒ×This iterates over all DRM DP MST topology managers in an atomic update, tracking both old and new state. This is useful in places where the state delta needs to be considered, for example in atomic check functions.”…”�”}”(hj_šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Mhj‡˜ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjösh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ'for_each_old_mst_mgr_in_state (C macro)”Œc.for_each_old_mst_mgr_in_state”hNt”auh1j† hjösh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒfor_each_old_mst_mgr_in_state”h]”j¤ )�”}”(hŒfor_each_old_mst_mgr_in_state”h]”jÍ )�”}”(hŒfor_each_old_mst_mgr_in_state”h]”jÓ )�”}”(hjˆšh]”hŒfor_each_old_mst_mgr_in_state”…”�”}”(hj’šh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjŽšubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjŠšh²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Mubah}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj†šh²hh³j¥šh´Mubah}”(h]”j�šah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j¥šh´Mhjƒšh²hubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j hjƒšh²hh³j¥šh´Mubeh}”(h]”h ]”(j Œmacro”eh"]”h$]”h&]”j" j j# j¾šj$ j¾šj% ‰j& ‰j' ‰uh1j˜ h²hhjösh³Nh´NubhÎ)�”}”(hŒ@``for_each_old_mst_mgr_in_state (__state, mgr, old_state, __i)``”h]”jˆ )�”}”(hjÄšh]”hŒiterate over all DP MST topology managers in an atomic update ”h]”hÎ)�”}”(hŒ=iterate over all DP MST topology managers in an atomic update”h]”hŒ=iterate over all DP MST topology managers in an atomic update”…”�”}”(hjÞšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´MhjÚšubah}”(h]”h ]”h"]”h$]”h&]”uh1j]Eh³jìšh´Mhjösh²hubj) )�”}”(hXC**Parameters** ``__state`` :c:type:`struct drm_atomic_commit ` pointer ``mgr`` :c:type:`struct drm_dp_mst_topology_mgr ` iteration cursor ``old_state`` :c:type:`struct drm_dp_mst_topology_state ` iteration cursor for the old state ``__i`` int iteration cursor, for macro-internal use **Description** This iterates over all DRM DP MST topology managers in an atomic update, tracking only the old state. This is useful in disable functions, where we need the old state the hardware is still in.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjùšh]”hŒ Parameters”…”�”}”(hjûšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj÷šubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Mhjóšubjw )�”}”(hhh]”(j| )�”}”(hŒK``__state`` :c:type:`struct drm_atomic_commit ` pointer ”h]”(j‚ )�”}”(hŒ ``__state``”h]”jˆ )�”}”(hj›h]”hŒ__state”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj›ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Mhj›ubjž )�”}”(hhh]”hÎ)�”}”(hŒ>:c:type:`struct drm_atomic_commit ` pointer”h]”(h)�”}”(hŒ6:c:type:`struct drm_atomic_commit `”h]”jˆ )�”}”(hj7›h]”hŒstruct drm_atomic_commit”…”�”}”(hj9›h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj5›ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_atomic_commit”uh1hh³j-›h´Mhj1›ubhŒ pointer”…”�”}”(hj1›h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j-›h´Mhj.›ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j-›h´Mhj›ubj| )�”}”(hŒ\``mgr`` :c:type:`struct drm_dp_mst_topology_mgr ` iteration cursor ”h]”(j‚ )�”}”(hŒ``mgr``”h]”jˆ )�”}”(hjp›h]”hŒmgr”…”�”}”(hjr›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjn›ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Mhjj›ubjž )�”}”(hhh]”hÎ)�”}”(hŒS:c:type:`struct drm_dp_mst_topology_mgr ` iteration cursor”h]”(h)�”}”(hŒB:c:type:`struct drm_dp_mst_topology_mgr `”h]”jˆ )�”}”(hj�›h]”hŒstruct drm_dp_mst_topology_mgr”…”�”}”(hj‘›h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj�›ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_topology_mgr”uh1hh³j…›h´Mhj‰›ubhŒ iteration cursor”…”�”}”(hj‰›h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j…›h´Mhj†›ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjj›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j…›h´Mhj›ubj| )�”}”(hŒx``old_state`` :c:type:`struct drm_dp_mst_topology_state ` iteration cursor for the old state ”h]”(j‚ )�”}”(hŒ ``old_state``”h]”jˆ )�”}”(hjÈ›h]”hŒ old_state”…”�”}”(hjÊ›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÆ›ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Mhj›ubjž )�”}”(hhh]”hÎ)�”}”(hŒi:c:type:`struct drm_dp_mst_topology_state ` iteration cursor for the old state”h]”(h)�”}”(hŒF:c:type:`struct drm_dp_mst_topology_state `”h]”jˆ )�”}”(hjç›h]”hŒ struct drm_dp_mst_topology_state”…”�”}”(hjé›h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjå›ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_topology_state”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Mhjá›ubhŒ# iteration cursor for the old state”…”�”}”(hjá›h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jœh´MhjÞ›ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÝ›h´Mhj›ubj| )�”}”(hŒ5``__i`` int iteration cursor, for macro-internal use ”h]”(j‚ )�”}”(hŒ``__i``”h]”jˆ )�”}”(hj!œh]”hŒ__i”…”�”}”(hj#œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjœubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Mhjœubjž )�”}”(hhh]”hÎ)�”}”(hŒ,int iteration cursor, for macro-internal use”h]”hŒ,int iteration cursor, for macro-internal use”…”�”}”(hj:œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j6œh´Mhj7œubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjœubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j6œh´Mhj›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjóšubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj\œh]”hŒ Description”…”�”}”(hj^œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjZœubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´MhjóšubhÎ)�”}”(hŒÀThis iterates over all DRM DP MST topology managers in an atomic update, tracking only the old state. This is useful in disable functions, where we need the old state the hardware is still in.”h]”hŒÀThis iterates over all DRM DP MST topology managers in an atomic update, tracking only the old state. This is useful in disable functions, where we need the old state the hardware is still in.”…”�”}”(hjrœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´Mhjóšubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjösh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ'for_each_new_mst_mgr_in_state (C macro)”Œc.for_each_new_mst_mgr_in_state”hNt”auh1j† hjösh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒfor_each_new_mst_mgr_in_state”h]”j¤ )�”}”(hŒfor_each_new_mst_mgr_in_state”h]”jÍ )�”}”(hŒfor_each_new_mst_mgr_in_state”h]”jÓ )�”}”(hj›œh]”hŒfor_each_new_mst_mgr_in_state”…”�”}”(hj¥œh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¡œubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj�œh²hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M#ubah}”(h]”h ]”h"]”h$]”h&]”jê jë 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]”h ]”h"]”h$]”h&]”uh1j hj–œh²hh³j¸œh´M#ubeh}”(h]”h ]”(j Œmacro”eh"]”h$]”h&]”j" j j# jÑœj$ jÑœj% ‰j& ‰j' ‰uh1j˜ h²hhjösh³Nh´NubhÎ)�”}”(hŒ@``for_each_new_mst_mgr_in_state (__state, mgr, new_state, __i)``”h]”jˆ )�”}”(hjלh]”hŒiterate over all DP MST topology managers in an atomic update ”h]”hÎ)�”}”(hŒ=iterate over all DP MST topology managers in an atomic update”h]”hŒ=iterate over all DP MST topology managers in an atomic update”…”�”}”(hjñœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M#hjíœubah}”(h]”h ]”h"]”h$]”h&]”uh1j]Eh³jÿœh´M#hjösh²hubj) )�”}”(hXr**Parameters** ``__state`` :c:type:`struct drm_atomic_commit ` pointer ``mgr`` :c:type:`struct drm_dp_mst_topology_mgr ` iteration cursor ``new_state`` :c:type:`struct drm_dp_mst_topology_state ` iteration cursor for the new state ``__i`` int iteration cursor, for macro-internal use **Description** This iterates over all DRM DP MST topology managers in an atomic update, tracking only the new state. This is useful in enable functions, where we need the new state the hardware should be in when the atomic commit operation has completed.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj �h]”hŒ Parameters”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj �ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M'hj�ubjw )�”}”(hhh]”(j| )�”}”(hŒK``__state`` :c:type:`struct drm_atomic_commit ` pointer ”h]”(j‚ )�”}”(hŒ ``__state``”h]”jˆ )�”}”(hj+�h]”hŒ__state”…”�”}”(hj-�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj)�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M%hj%�ubjž )�”}”(hhh]”hÎ)�”}”(hŒ>:c:type:`struct drm_atomic_commit ` pointer”h]”(h)�”}”(hŒ6:c:type:`struct drm_atomic_commit `”h]”jˆ )�”}”(hjJ�h]”hŒstruct drm_atomic_commit”…”�”}”(hjL�h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjH�ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_atomic_commit”uh1hh³j@�h´M%hjD�ubhŒ pointer”…”�”}”(hjD�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j@�h´M%hjA�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj%�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j@�h´M%hj"�ubj| )�”}”(hŒ\``mgr`` :c:type:`struct drm_dp_mst_topology_mgr ` iteration cursor ”h]”(j‚ )�”}”(hŒ``mgr``”h]”jˆ )�”}”(hjƒ�h]”hŒmgr”…”�”}”(hj…�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj��ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M&hj}�ubjž )�”}”(hhh]”hÎ)�”}”(hŒS:c:type:`struct drm_dp_mst_topology_mgr ` iteration cursor”h]”(h)�”}”(hŒB:c:type:`struct drm_dp_mst_topology_mgr `”h]”jˆ )�”}”(hj¢�h]”hŒstruct drm_dp_mst_topology_mgr”…”�”}”(hj¤�h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj �ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_topology_mgr”uh1hh³j˜�h´M&hjœ�ubhŒ iteration cursor”…”�”}”(hjœ�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j˜�h´M&hj™�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj}�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j˜�h´M&hj"�ubj| )�”}”(hŒx``new_state`` :c:type:`struct drm_dp_mst_topology_state ` iteration cursor for the new state ”h]”(j‚ )�”}”(hŒ ``new_state``”h]”jˆ )�”}”(hjÛ�h]”hŒ new_state”…”�”}”(hjÝ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÙ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M(hjÕ�ubjž )�”}”(hhh]”hÎ)�”}”(hŒi:c:type:`struct drm_dp_mst_topology_state ` iteration cursor for the new state”h]”(h)�”}”(hŒF:c:type:`struct drm_dp_mst_topology_state `”h]”jˆ )�”}”(hjú�h]”hŒ struct drm_dp_mst_topology_state”…”�”}”(hjü�h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjø�ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_topology_state”uh1hh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M'hjô�ubhŒ# iteration cursor for the new state”…”�”}”(hjô�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jžh´M'hjñ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÕ�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jð�h´M(hj"�ubj| )�”}”(hŒ5``__i`` int iteration cursor, for macro-internal use ”h]”(j‚ )�”}”(hŒ``__i``”h]”jˆ )�”}”(hj4žh]”hŒ__i”…”�”}”(hj6žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj2žubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M)hj.žubjž )�”}”(hhh]”hÎ)�”}”(hŒ,int iteration cursor, for macro-internal use”h]”hŒ,int iteration cursor, for macro-internal use”…”�”}”(hjMžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jIžh´M)hjJžubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj.žubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jIžh´M)hj"�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj�ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjožh]”hŒ Description”…”�”}”(hjqžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjmžubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M+hj�ubhÎ)�”}”(hŒïThis iterates over all DRM DP MST topology managers in an atomic update, tracking only the new state. This is useful in enable functions, where we need the new state the hardware should be in when the atomic commit operation has completed.”h]”hŒïThis iterates over all DRM DP MST topology managers in an atomic update, tracking only the new state. This is useful in enable functions, where we need the new state the hardware should be in when the atomic commit operation has completed.”…”�”}”(hj…žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œl/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:316: ./include/drm/display/drm_dp_mst_helper.h”h´M*hj�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjösh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ'drm_dp_mst_get_port_malloc (C function)”Œc.drm_dp_mst_get_port_malloc”hNt”auh1j† hjösh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ>void drm_dp_mst_get_port_malloc (struct drm_dp_mst_port *port)”h]”j¤ )�”}”(hŒ=void drm_dp_mst_get_port_malloc(struct drm_dp_mst_port *port)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj´žh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj°žh²hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.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Œdrm_dp_mst_get_port_malloc”h]”jÓ )�”}”(hŒdrm_dp_mst_get_port_malloc”h]”hŒdrm_dp_mst_get_port_malloc”…”�”}”(hjÕžh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÑžubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj°žh²hh³jžh´MØubjÞ)�”}”(hŒ(struct drm_dp_mst_port *port)”h]”jä)�”}”(hŒstruct drm_dp_mst_port *port”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Œdrm_dp_mst_port”h]”hŒdrm_dp_mst_port”…”�”}”(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%)�”}”jjמsbŒc.drm_dp_mst_get_port_malloc”†”asbuh1hhjížubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/Ÿh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjížubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj=Ÿh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjížubjÓ )�”}”(hŒport”h]”hŒport”…”�”}”(hjJŸh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjížubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjéžubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj°žh²hh³jžh´MØubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ,Increment the malloc refcount of an MST port”h]”hŒ,Increment the malloc refcount of an MST port”…”�”}”(hjtŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MØhjqŸ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²hhjösh³Nh´Nubj) )�”}”(hXÛ**Parameters** ``struct drm_dp_mst_port *port`` The :c:type:`struct drm_dp_mst_port ` to increment the malloc refcount of **Description** Increments :c:type:`drm_dp_mst_port.malloc_kref `. When :c:type:`drm_dp_mst_port.malloc_kref ` reaches 0, the memory allocation for **port** will be released and **port** may no longer be used. Because **port** could potentially be freed at any time by the DP MST helpers if :c:type:`drm_dp_mst_port.malloc_kref ` reaches 0, including during a call to this function, drivers that which to make use of :c:type:`struct drm_dp_mst_port ` should ensure that they grab at least one main malloc reference to their MST ports in :c:type:`drm_dp_mst_topology_cbs.add_connector `. This callback is called before there is any chance for :c:type:`drm_dp_mst_port.malloc_kref ` to reach 0. See also: drm_dp_mst_put_port_malloc()”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj–Ÿh]”hŒ Parameters”…”�”}”(hj˜Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj”Ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MÜhj�Ÿubjw )�”}”(hhh]”j| )�”}”(hŒ|``struct drm_dp_mst_port *port`` The :c:type:`struct drm_dp_mst_port ` to increment the malloc refcount of ”h]”(j‚ )�”}”(hŒ ``struct drm_dp_mst_port *port``”h]”jˆ )�”}”(hjµŸh]”hŒstruct drm_dp_mst_port *port”…”�”}”(hj·Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj³Ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MÙhj¯Ÿubjž )�”}”(hhh]”hÎ)�”}”(hŒZThe :c:type:`struct drm_dp_mst_port ` to increment the malloc refcount of”h]”(hŒThe ”…”�”}”(hjΟh²hh³Nh´Nubh)�”}”(hŒ2:c:type:`struct drm_dp_mst_port `”h]”jˆ )�”}”(hjØŸh]”hŒstruct drm_dp_mst_port”…”�”}”(hjÚŸh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÖŸubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_port”uh1hh³jÊŸh´MÙhjΟubhŒ$ to increment the malloc refcount of”…”�”}”(hjΟh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÊŸh´MÙhjËŸubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¯Ÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÊŸh´MÙhj¬Ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj�ŸubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj h]”hŒ Description”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MÛhj�ŸubhÎ)�”}”(hŒãIncrements :c:type:`drm_dp_mst_port.malloc_kref `. When :c:type:`drm_dp_mst_port.malloc_kref ` reaches 0, the memory allocation for **port** will be released and **port** may no longer be used.”h]”(hŒ Increments ”…”�”}”(hj) h²hh³Nh´Nubh)�”}”(hŒ7:c:type:`drm_dp_mst_port.malloc_kref `”h]”jˆ )�”}”(hj3 h]”hŒdrm_dp_mst_port.malloc_kref”…”�”}”(hj5 h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj1 ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_port”uh1hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MÚhj) ubhŒ. When ”…”�”}”(hj) h²hh³Nh´Nubh)�”}”(hŒ7:c:type:`drm_dp_mst_port.malloc_kref `”h]”jˆ )�”}”(hjW h]”hŒdrm_dp_mst_port.malloc_kref”…”�”}”(hjY h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjU ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_port”uh1hh³jP h´MÚhj) ubhŒ& reaches 0, the memory allocation for ”…”�”}”(hj) h²hh³Nh´Nubj3 )�”}”(hŒ**port**”h]”hŒport”…”�”}”(hjx h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj) ubhŒ will be released and ”…”�”}”(hj) h²hh³Nh´Nubj3 )�”}”(hŒ**port**”h]”hŒport”…”�”}”(hjŠ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj) ubhŒ may no longer be used.”…”�”}”(hj) h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jP h´MÚhj�ŸubhÎ)�”}”(hX.Because **port** could potentially be freed at any time by the DP MST helpers if :c:type:`drm_dp_mst_port.malloc_kref ` reaches 0, including during a call to this function, drivers that which to make use of :c:type:`struct drm_dp_mst_port ` should ensure that they grab at least one main malloc reference to their MST ports in :c:type:`drm_dp_mst_topology_cbs.add_connector `. This callback is called before there is any chance for :c:type:`drm_dp_mst_port.malloc_kref ` to reach 0.”h]”(hŒBecause ”…”�”}”(hj¢ h²hh³Nh´Nubj3 )�”}”(hŒ**port**”h]”hŒport”…”�”}”(hjª h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¢ ubhŒA could potentially be freed at any time by the DP MST helpers if ”…”�”}”(hj¢ h²hh³Nh´Nubh)�”}”(hŒ7:c:type:`drm_dp_mst_port.malloc_kref `”h]”jˆ )�”}”(hj¾ h]”hŒdrm_dp_mst_port.malloc_kref”…”�”}”(hjÀ h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj¼ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_port”uh1hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MÞhj¢ ubhŒX reaches 0, including during a call to this function, drivers that which to make use of ”…”�”}”(hj¢ h²hh³Nh´Nubh)�”}”(hŒ2:c:type:`struct drm_dp_mst_port `”h]”jˆ )�”}”(hjâ h]”hŒstruct drm_dp_mst_port”…”�”}”(hjä h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjà ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_port”uh1hh³jÛ h´MÞhj¢ ubhŒW should ensure that they grab at least one main malloc reference to their MST ports in ”…”�”}”(hj¢ h²hh³Nh´Nubh)�”}”(hŒI:c:type:`drm_dp_mst_topology_cbs.add_connector `”h]”jˆ )�”}”(hj¡h]”hŒ%drm_dp_mst_topology_cbs.add_connector”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj¡ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_topology_cbs”uh1hh³jÛ h´MÞhj¢ ubhŒ9. This callback is called before there is any chance for ”…”�”}”(hj¢ h²hh³Nh´Nubh)�”}”(hŒ7:c:type:`drm_dp_mst_port.malloc_kref `”h]”jˆ )�”}”(hj(¡h]”hŒdrm_dp_mst_port.malloc_kref”…”�”}”(hj*¡h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj&¡ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_port”uh1hh³jÛ h´MÞhj¢ ubhŒ to reach 0.”…”�”}”(hj¢ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÛ h´MÞhj�ŸubhÎ)�”}”(hŒ&See also: drm_dp_mst_put_port_malloc()”h]”hŒ&See also: drm_dp_mst_put_port_malloc()”…”�”}”(hjO¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Måhj�Ÿubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjösh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ'drm_dp_mst_put_port_malloc (C function)”Œc.drm_dp_mst_put_port_malloc”hNt”auh1j† hjösh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ>void drm_dp_mst_put_port_malloc (struct drm_dp_mst_port *port)”h]”j¤ )�”}”(hŒ=void drm_dp_mst_put_port_malloc(struct drm_dp_mst_port *port)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj~¡h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjz¡h²hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mñubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�¡h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjz¡h²hh³jŒ¡h´MñubjÍ )�”}”(hŒdrm_dp_mst_put_port_malloc”h]”jÓ )�”}”(hŒdrm_dp_mst_put_port_malloc”h]”hŒdrm_dp_mst_put_port_malloc”…”�”}”(hjŸ¡h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj›¡ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjz¡h²hh³jŒ¡h´MñubjÞ)�”}”(hŒ(struct drm_dp_mst_port *port)”h]”jä)�”}”(hŒstruct drm_dp_mst_port *port”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Œdrm_dp_mst_port”h]”hŒdrm_dp_mst_port”…”�”}”(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%)�”}”jj¡¡sbŒc.drm_dp_mst_put_port_malloc”†”asbuh1hhj·¡ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjù¡h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj·¡ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj·¡ubjÓ )�”}”(hŒport”h]”hŒport”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj·¡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj³¡ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjz¡h²hh³jŒ¡h´Mñubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjv¡h²hh³jŒ¡h´Mñubah}”(h]”jq¡ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jŒ¡h´Mñhjs¡h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ,Decrement the malloc refcount of an MST port”h]”hŒ,Decrement the malloc refcount of an MST port”…”�”}”(hj>¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mñhj;¢h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjs¡h²hh³jŒ¡h´Mñubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jV¢j$ jV¢j% ‰j& ‰j' ‰uh1j˜ h²hhjösh³Nh´Nubj) )�”}”(hX«**Parameters** ``struct drm_dp_mst_port *port`` The :c:type:`struct drm_dp_mst_port ` to decrement the malloc refcount of **Description** Decrements :c:type:`drm_dp_mst_port.malloc_kref `. When :c:type:`drm_dp_mst_port.malloc_kref ` reaches 0, the memory allocation for **port** will be released and **port** may no longer be used. See also: drm_dp_mst_get_port_malloc()”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj`¢h]”hŒ Parameters”…”�”}”(hjb¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj^¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MõhjZ¢ubjw )�”}”(hhh]”j| )�”}”(hŒ|``struct drm_dp_mst_port *port`` The :c:type:`struct drm_dp_mst_port ` to decrement the malloc refcount of ”h]”(j‚ )�”}”(hŒ ``struct drm_dp_mst_port *port``”h]”jˆ )�”}”(hj¢h]”hŒstruct drm_dp_mst_port *port”…”�”}”(hj�¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj}¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mòhjy¢ubjž )�”}”(hhh]”hÎ)�”}”(hŒZThe :c:type:`struct drm_dp_mst_port ` to decrement the malloc refcount of”h]”(hŒThe ”…”�”}”(hj˜¢h²hh³Nh´Nubh)�”}”(hŒ2:c:type:`struct drm_dp_mst_port `”h]”jˆ )�”}”(hj¢¢h]”hŒstruct drm_dp_mst_port”…”�”}”(hj¤¢h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj ¢ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_port”uh1hh³j”¢h´Mòhj˜¢ubhŒ$ to decrement the malloc refcount of”…”�”}”(hj˜¢h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j”¢h´Mòhj•¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjy¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j”¢h´Mòhjv¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjZ¢ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjÝ¢h]”hŒ Description”…”�”}”(hjߢh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÛ¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MôhjZ¢ubhÎ)�”}”(hŒãDecrements :c:type:`drm_dp_mst_port.malloc_kref `. When :c:type:`drm_dp_mst_port.malloc_kref ` reaches 0, the memory allocation for **port** will be released and **port** may no longer be used.”h]”(hŒ Decrements ”…”�”}”(hjó¢h²hh³Nh´Nubh)�”}”(hŒ7:c:type:`drm_dp_mst_port.malloc_kref `”h]”jˆ )�”}”(hjý¢h]”hŒdrm_dp_mst_port.malloc_kref”…”�”}”(hjÿ¢h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjû¢ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_port”uh1hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Móhjó¢ubhŒ. When ”…”�”}”(hjó¢h²hh³Nh´Nubh)�”}”(hŒ7:c:type:`drm_dp_mst_port.malloc_kref `”h]”jˆ )�”}”(hj!£h]”hŒdrm_dp_mst_port.malloc_kref”…”�”}”(hj#£h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj£ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_port”uh1hh³j£h´Móhjó¢ubhŒ& reaches 0, the memory allocation for ”…”�”}”(hjó¢h²hh³Nh´Nubj3 )�”}”(hŒ**port**”h]”hŒport”…”�”}”(hjB£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjó¢ubhŒ will be released and ”…”�”}”(hjó¢h²hh³Nh´Nubj3 )�”}”(hŒ**port**”h]”hŒport”…”�”}”(hjT£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjó¢ubhŒ may no longer be used.”…”�”}”(hjó¢h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j£h´MóhjZ¢ubhÎ)�”}”(hŒ&See also: drm_dp_mst_get_port_malloc()”h]”hŒ&See also: drm_dp_mst_get_port_malloc()”…”�”}”(hjl£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M÷hjZ¢ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjösh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ/drm_dp_mst_connector_late_register (C function)”Œ$c.drm_dp_mst_connector_late_register”hNt”auh1j† hjösh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒfint drm_dp_mst_connector_late_register (struct drm_connector *connector, struct drm_dp_mst_port *port)”h]”j¤ )�”}”(hŒeint drm_dp_mst_connector_late_register(struct drm_connector *connector, struct drm_dp_mst_port *port)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj›£h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj—£h²hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.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Œ"drm_dp_mst_connector_late_register”h]”jÓ )�”}”(hŒ"drm_dp_mst_connector_late_register”h]”hŒ"drm_dp_mst_connector_late_register”…”�”}”(hj¼£h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¸£ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj—£h²hh³j©£h´M»ubjÞ)�”}”(hŒ?(struct drm_connector *connector, struct drm_dp_mst_port *port)”h]”(jä)�”}”(hŒstruct drm_connector *connector”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Œ drm_connector”h]”hŒ drm_connector”…”�”}”(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%)�”}”jj¾£sbŒ$c.drm_dp_mst_connector_late_register”†”asbuh1hhjÔ£ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÔ£ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj$¤h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÔ£ubjÓ )�”}”(hŒ connector”h]”hŒ connector”…”�”}”(hj1¤h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÔ£ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjУubjä)�”}”(hŒstruct drm_dp_mst_port *port”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjJ¤h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjF¤ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjW¤h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjF¤ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_dp_mst_port”h]”hŒdrm_dp_mst_port”…”�”}”(hjh¤h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hje¤ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jj¤Œmodname”NŒ classname”Njé jì )�”}”jï ]”j¤Œ$c.drm_dp_mst_connector_late_register”†”asbuh1hhjF¤ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†¤h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjF¤ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj”¤h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjF¤ubjÓ )�”}”(hŒport”h]”hŒport”…”�”}”(hj¡¤h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjF¤ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjУubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj—£h²hh³j©£h´M»ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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ŒLate MST connector registration”h]”hŒLate MST connector registration”…”�”}”(hjˤh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.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²hhjösh³Nh´Nubj) )�”}”(hXv**Parameters** ``struct drm_connector *connector`` The MST connector ``struct drm_dp_mst_port *port`` The MST port for this connector **Description** Helper to register the remote aux device for this MST port. Drivers should call this from their mst connector's late_register hook to enable MST aux devices. **Return** 0 on success, negative error code on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjí¤h]”hŒ Parameters”…”�”}”(hjï¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjë¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M¿hjç¤ubjw )�”}”(hhh]”(j| )�”}”(hŒ6``struct drm_connector *connector`` The MST connector ”h]”(j‚ )�”}”(hŒ#``struct drm_connector *connector``”h]”jˆ )�”}”(hj ¥h]”hŒstruct drm_connector *connector”…”�”•$}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj ¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M¼hj¥ubjž )�”}”(hhh]”hÎ)�”}”(hŒThe MST connector”h]”hŒThe MST connector”…”�”}”(hj%¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j!¥h´M¼hj"¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j!¥h´M¼hj¥ubj| )�”}”(hŒA``struct drm_dp_mst_port *port`` The MST port for this connector ”h]”(j‚ )�”}”(hŒ ``struct drm_dp_mst_port *port``”h]”jˆ )�”}”(hjE¥h]”hŒstruct drm_dp_mst_port *port”…”�”}”(hjG¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjC¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M½hj?¥ubjž )�”}”(hhh]”hÎ)�”}”(hŒThe MST port for this connector”h]”hŒThe MST port for this connector”…”�”}”(hj^¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jZ¥h´M½hj[¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj?¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jZ¥h´M½hj¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjç¤ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj€¥h]”hŒ Description”…”�”}”(hj‚¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj~¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M¿hjç¤ubhÎ)�”}”(hŒ�Helper to register the remote aux device for this MST port. Drivers should call this from their mst connector's late_register hook to enable MST aux devices.”h]”hŒŸHelper to register the remote aux device for this MST port. Drivers should call this from their mst connector’s late_register hook to enable MST aux devices.”…”�”}”(hj–¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M¾hjç¤ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj§¥h]”hŒReturn”…”�”}”(hj©¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¥¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MÂhjç¤ubhÎ)�”}”(hŒ-0 on success, negative error code on failure.”h]”hŒ-0 on success, negative error code on failure.”…”�”}”(hj½¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MÃhjç¤ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjösh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ2drm_dp_mst_connector_early_unregister (C function)”Œ'c.drm_dp_mst_connector_early_unregister”hNt”auh1j† hjösh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒjvoid drm_dp_mst_connector_early_unregister (struct drm_connector *connector, struct drm_dp_mst_port *port)”h]”j¤ )�”}”(hŒivoid drm_dp_mst_connector_early_unregister(struct drm_connector *connector, struct drm_dp_mst_port *port)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjì¥h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjè¥h²hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.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Œ%drm_dp_mst_connector_early_unregister”h]”jÓ )�”}”(hŒ%drm_dp_mst_connector_early_unregister”h]”hŒ%drm_dp_mst_connector_early_unregister”…”�”}”(hj ¦h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj ¦ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjè¥h²hh³jú¥h´MÑubjÞ)�”}”(hŒ?(struct drm_connector *connector, struct drm_dp_mst_port *port)”h]”(jä)�”}”(hŒstruct drm_connector *connector”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj)¦h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj%¦ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6¦h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj%¦ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_connector”h]”hŒ drm_connector”…”�”}”(hjG¦h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjD¦ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jI¦Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj¦sbŒ'c.drm_dp_mst_connector_early_unregister”†”asbuh1hhj%¦ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjg¦h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj%¦ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hju¦h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj%¦ubjÓ )�”}”(hŒ connector”h]”hŒ connector”…”�”}”(hj‚¦h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj%¦ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj!¦ubjä)�”}”(hŒstruct drm_dp_mst_port *port”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Œdrm_dp_mst_port”h]”hŒdrm_dp_mst_port”…”�”}”(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ï ]”jc¦Œ'c.drm_dp_mst_connector_early_unregister”†”asbuh1hhj—¦ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjצh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj—¦ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjå¦h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj—¦ubjÓ )�”}”(hŒport”h]”hŒport”…”�”}”(hjò¦h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj—¦ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj!¦ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjè¥h²hh³jú¥h´MÑubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ"Early MST connector unregistration”h]”hŒ"Early MST connector unregistration”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.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# j4§j$ j4§j% ‰j& ‰j' ‰uh1j˜ h²hhjösh³Nh´Nubj) )�”}”(hXZ**Parameters** ``struct drm_connector *connector`` The MST connector ``struct drm_dp_mst_port *port`` The MST port for this connector **Description** Helper to unregister the remote aux device for this MST port, registered by drm_dp_mst_connector_late_register(). Drivers should call this from their mst connector's early_unregister hook.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj>§h]”hŒ Parameters”…”�”}”(hj@§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj<§ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MÕhj8§ubjw )�”}”(hhh]”(j| )�”}”(hŒ6``struct drm_connector *connector`` The MST connector ”h]”(j‚ )�”}”(hŒ#``struct drm_connector *connector``”h]”jˆ )�”}”(hj]§h]”hŒstruct drm_connector *connector”…”�”}”(hj_§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj[§ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MÒhjW§ubjž )�”}”(hhh]”hÎ)�”}”(hŒThe MST connector”h]”hŒThe MST connector”…”�”}”(hjv§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jr§h´MÒhjs§ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjW§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jr§h´MÒhjT§ubj| )�”}”(hŒA``struct drm_dp_mst_port *port`` The MST port for this connector ”h]”(j‚ )�”}”(hŒ ``struct drm_dp_mst_port *port``”h]”jˆ )�”}”(hj–§h]”hŒstruct drm_dp_mst_port *port”…”�”}”(hj˜§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj”§ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MÓhj�§ubjž )�”}”(hhh]”hÎ)�”}”(hŒThe MST port for this connector”h]”hŒThe MST port for this connector”…”�”}”(hj¯§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j«§h´MÓhj¬§ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj�§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j«§h´MÓhjT§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj8§ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjѧh]”hŒ Description”…”�”}”(hjÓ§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjϧubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MÕhj8§ubhÎ)�”}”(hŒ¼Helper to unregister the remote aux device for this MST port, registered by drm_dp_mst_connector_late_register(). Drivers should call this from their mst connector's early_unregister hook.”h]”hŒ¾Helper to unregister the remote aux device for this MST port, registered by drm_dp_mst_connector_late_register(). Drivers should call this from their mst connector’s early_unregister hook.”…”�”}”(hjç§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MÔhj8§ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjösh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ%drm_dp_add_payload_part1 (C function)”Œc.drm_dp_add_payload_part1”hNt”auh1j† hjösh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒšint drm_dp_add_payload_part1 (struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_topology_state *mst_state, struct drm_dp_mst_atomic_payload *payload)”h]”j¤ )�”}”(hŒ™int drm_dp_add_payload_part1(struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_topology_state *mst_state, struct drm_dp_mst_atomic_payload *payload)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj¨h²hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.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Œdrm_dp_add_payload_part1”h]”jÓ )�”}”(hŒdrm_dp_add_payload_part1”h]”hŒdrm_dp_add_payload_part1”…”�”}”(hj7¨h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj3¨ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj¨h²hh³j$¨h´Mî ubjÞ)�”}”(hŒ}(struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_topology_state *mst_state, struct drm_dp_mst_atomic_payload *payload)”h]”(jä)�”}”(hŒ#struct drm_dp_mst_topology_mgr *mgr”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjS¨h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjO¨ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`¨h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjO¨ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_dp_mst_topology_mgr”h]”hŒdrm_dp_mst_topology_mgr”…”�”}”(hjq¨h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjn¨ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”js¨Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj9¨sbŒc.drm_dp_add_payload_part1”†”asbuh1hhjO¨ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘¨h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjO¨ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjŸ¨h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjO¨ubjÓ )�”}”(hŒmgr”h]”hŒmgr”…”�”}”(hj¬¨h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjO¨ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjK¨ubjä)�”}”(hŒ+struct drm_dp_mst_topology_state *mst_state”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Œdrm_dp_mst_topology_state”h]”hŒdrm_dp_mst_topology_state”…”�”}”(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.drm_dp_add_payload_part1”†”asbuh1hhjÁ¨ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÁ¨ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÁ¨ubjÓ )�”}”(hŒ mst_state”h]”hŒ mst_state”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÁ¨ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjK¨ubjä)�”}”(hŒ)struct drm_dp_mst_atomic_payload *payload”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj5©h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj1©ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjB©h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj1©ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_dp_mst_atomic_payload”h]”hŒdrm_dp_mst_atomic_payload”…”�”}”(hjS©h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjP©ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jU©Œmodname”NŒ classname”Njé jì )�”}”jï ]”j�¨Œc.drm_dp_add_payload_part1”†”asbuh1hhj1©ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjq©h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj1©ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj1©ubjÓ )�”}”(hŒpayload”h]”hŒpayload”…”�”}”(hjŒ©h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj1©ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjK¨ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj¨h²hh³j$¨h´Mî ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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ŒExecute payload update part 1”h]”hŒExecute payload update part 1”…”�”}”(hj¶©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.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²hhjösh³Nh´Nubj) )�”}”(hXÚ**Parameters** ``struct drm_dp_mst_topology_mgr *mgr`` Manager to use. ``struct drm_dp_mst_topology_state *mst_state`` The MST atomic state ``struct drm_dp_mst_atomic_payload *payload`` The payload to write **Description** Determines the starting time slot for the given payload, and programs the VCPI for this payload into the DPCD of DPRX. After calling this, the driver should generate ACT and payload packets. **Return** 0 on success, error code on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjØ©h]”hŒ Parameters”…”�”}”(hjÚ©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÖ©ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mò hjÒ©ubjw )�”}”(hhh]”(j| )�”}”(hŒ8``struct drm_dp_mst_topology_mgr *mgr`` Manager to use. ”h]”(j‚ )�”}”(hŒ'``struct drm_dp_mst_topology_mgr *mgr``”h]”jˆ )�”}”(hj÷©h]”hŒ#struct drm_dp_mst_topology_mgr *mgr”…”�”}”(hjù©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjõ©ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mï hjñ©ubjž )�”}”(hhh]”hÎ)�”}”(hŒManager to use.”h]”hŒManager to use.”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j ªh´Mï hj ªubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjñ©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j ªh´Mï hjî©ubj| )�”}”(hŒE``struct drm_dp_mst_topology_state *mst_state`` The MST atomic state ”h]”(j‚ )�”}”(hŒ/``struct drm_dp_mst_topology_state *mst_state``”h]”jˆ )�”}”(hj0ªh]”hŒ+struct drm_dp_mst_topology_state *mst_state”…”�”}”(hj2ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj.ªubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mð hj*ªubjž )�”}”(hhh]”hÎ)�”}”(hŒThe MST atomic state”h]”hŒThe MST atomic state”…”�”}”(hjIªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jEªh´Mð hjFªubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj*ªubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jEªh´Mð hjî©ubj| )�”}”(hŒC``struct drm_dp_mst_atomic_payload *payload`` The payload to write ”h]”(j‚ )�”}”(hŒ-``struct drm_dp_mst_atomic_payload *payload``”h]”jˆ )�”}”(hjiªh]”hŒ)struct drm_dp_mst_atomic_payload *payload”…”�”}”(hjkªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjgªubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mñ hjcªubjž )�”}”(hhh]”hÎ)�”}”(hŒThe payload to write”h]”hŒThe payload to write”…”�”}”(hj‚ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j~ªh´Mñ hjªubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjcªubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j~ªh´Mñ hjî©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÒ©ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj¤ªh]”hŒ Description”…”�”}”(hj¦ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¢ªubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mó hjÒ©ubhÎ)�”}”(hŒ¾Determines the starting time slot for the given payload, and programs the VCPI for this payload into the DPCD of DPRX. After calling this, the driver should generate ACT and payload packets.”h]”hŒ¾Determines the starting time slot for the given payload, and programs the VCPI for this payload into the DPCD of DPRX. After calling this, the driver should generate ACT and payload packets.”…”�”}”(hjºªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mò hjÒ©ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj˪h]”hŒReturn”…”�”}”(hjͪh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjɪubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mõ hjÒ©ubhÎ)�”}”(hŒ$0 on success, error code on failure.”h]”hŒ$0 on success, error code on failure.”…”�”}”(hjáªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mö hjÒ©ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjösh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ(drm_dp_remove_payload_part1 (C function)”Œc.drm_dp_remove_payload_part1”hNt”auh1j† hjösh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒžvoid drm_dp_remove_payload_part1 (struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_topology_state *mst_state, struct drm_dp_mst_atomic_payload *payload)”h]”j¤ )�”}”(hŒ�void drm_dp_remove_payload_part1(struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_topology_state *mst_state, struct drm_dp_mst_atomic_payload *payload)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj «h²hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.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Œdrm_dp_remove_payload_part1”h]”jÓ )�”}”(hŒdrm_dp_remove_payload_part1”h]”hŒdrm_dp_remove_payload_part1”…”�”}”(hj1«h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj-«ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj «h²hh³j«h´M$ ubjÞ)�”}”(hŒ}(struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_topology_state *mst_state, struct drm_dp_mst_atomic_payload *payload)”h]”(jä)�”}”(hŒ#struct drm_dp_mst_topology_mgr *mgr”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjM«h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjI«ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZ«h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjI«ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_dp_mst_topology_mgr”h]”hŒdrm_dp_mst_topology_mgr”…”�”}”(hjk«h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjh«ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jm«Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj3«sbŒc.drm_dp_remove_payload_part1”†”asbuh1hhjI«ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹«h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjI«ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj™«h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjI«ubjÓ )�”}”(hŒmgr”h]”hŒmgr”…”�”}”(hj¦«h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjI«ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjE«ubjä)�”}”(hŒ+struct drm_dp_mst_topology_state *mst_state”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Œdrm_dp_mst_topology_state”h]”hŒdrm_dp_mst_topology_state”…”�”}”(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.drm_dp_remove_payload_part1”†”asbuh1hhj»«ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjû«h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj»«ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj ¬h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj»«ubjÓ )�”}”(hŒ mst_state”h]”hŒ mst_state”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj»«ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjE«ubjä)�”}”(hŒ)struct drm_dp_mst_atomic_payload *payload”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Œdrm_dp_mst_atomic_payload”h]”hŒdrm_dp_mst_atomic_payload”…”�”}”(hjM¬h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjJ¬ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jO¬Œmodname”NŒ classname”Njé jì )�”}”jï ]”j‡«Œc.drm_dp_remove_payload_part1”†”asbuh1hhj+¬ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjk¬h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj+¬ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjy¬h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj+¬ubjÓ )�”}”(hŒpayload”h]”hŒpayload”…”�”}”(hj†¬h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj+¬ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjE«ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj «h²hh³j«h´M$ ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ/Remove an MST payload along the virtual channel”h]”hŒ/Remove an MST payload along the virtual channel”…”�”}”(hj°¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.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²hhjösh³Nh´Nubj) )�”}”(hX¦**Parameters** ``struct drm_dp_mst_topology_mgr *mgr`` Manager to use. ``struct drm_dp_mst_topology_state *mst_state`` The MST atomic state ``struct drm_dp_mst_atomic_payload *payload`` The payload to remove **Description** Removes a payload along the virtual channel if it was successfully allocated. After calling this, the driver should set HW to generate ACT and then switch to new payload allocation state.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjÒ¬h]”hŒ Parameters”…”�”}”(hjÔ¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjЬubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M( hj̬ubjw )�”}”(hhh]”(j| )�”}”(hŒ8``struct drm_dp_mst_topology_mgr *mgr`` Manager to use. ”h]”(j‚ )�”}”(hŒ'``struct drm_dp_mst_topology_mgr *mgr``”h]”jˆ )�”}”(hjñ¬h]”hŒ#struct drm_dp_mst_topology_mgr *mgr”…”�”}”(hjó¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjï¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M% hjë¬ubjž )�”}”(hhh]”hÎ)�”}”(hŒManager to use.”h]”hŒManager to use.”…”�”}”(hj ­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j­h´M% hj­ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjë¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j­h´M% hjè¬ubj| )�”}”(hŒE``struct drm_dp_mst_topology_state *mst_state`` The MST atomic state ”h]”(j‚ )�”}”(hŒ/``struct drm_dp_mst_topology_state *mst_state``”h]”jˆ )�”}”(hj*­h]”hŒ+struct drm_dp_mst_topology_state *mst_state”…”�”}”(hj,­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj(­ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M& hj$­ubjž )�”}”(hhh]”hÎ)�”}”(hŒThe MST atomic state”h]”hŒThe MST atomic state”…”�”}”(hjC­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j?­h´M& hj@­ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj$­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j?­h´M& hjè¬ubj| )�”}”(hŒD``struct drm_dp_mst_atomic_payload *payload`` The payload to remove ”h]”(j‚ )�”}”(hŒ-``struct drm_dp_mst_atomic_payload *payload``”h]”jˆ )�”}”(hjc­h]”hŒ)struct drm_dp_mst_atomic_payload *payload”…”�”}”(hje­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hja­ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M' hj]­ubjž )�”}”(hhh]”hÎ)�”}”(hŒThe payload to remove”h]”hŒThe payload to remove”…”�”}”(hj|­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jx­h´M' hjy­ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj]­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jx­h´M' hjè¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj̬ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjž­h]”hŒ Description”…”�”}”(hj ­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjœ­ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M) hj̬ubhÎ)�”}”(hŒ»Removes a payload along the virtual channel if it was successfully allocated. After calling this, the driver should set HW to generate ACT and then switch to new payload allocation state.”h]”hŒ»Removes a payload along the virtual channel if it was successfully allocated. After calling this, the driver should set HW to generate ACT and then switch to new payload allocation state.”…”�”}”(hj´­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M( hj̬ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjösh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ(drm_dp_remove_payload_part2 (C function)”Œc.drm_dp_remove_payload_part2”hNt”auh1j† hjösh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ×void drm_dp_remove_payload_part2 (struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_topology_state *mst_state, const struct drm_dp_mst_atomic_payload *old_payload, struct drm_dp_mst_atomic_payload *new_payload)”h]”j¤ )�”}”(hŒÖvoid drm_dp_remove_payload_part2(struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_topology_state *mst_state, const struct drm_dp_mst_atomic_payload *old_payload, struct drm_dp_mst_atomic_payload *new_payload)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjã­h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjß­h²hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MC ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjò­h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjß­h²hh³jñ­h´MC ubjÍ )�”}”(hŒdrm_dp_remove_payload_part2”h]”jÓ )�”}”(hŒdrm_dp_remove_payload_part2”h]”hŒdrm_dp_remove_payload_part2”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj®ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjß­h²hh³jñ­h´MC ubjÞ)�”}”(hŒ¶(struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_topology_state *mst_state, const struct drm_dp_mst_atomic_payload *old_payload, struct drm_dp_mst_atomic_payload *new_payload)”h]”(jä)�”}”(hŒ#struct drm_dp_mst_topology_mgr *mgr”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Œdrm_dp_mst_topology_mgr”h]”hŒdrm_dp_mst_topology_mgr”…”�”}”(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%)�”}”jj®sbŒc.drm_dp_remove_payload_part2”†”asbuh1hhj®ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^®h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj®ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjl®h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj®ubjÓ )�”}”(hŒmgr”h]”hŒmgr”…”�”}”(hjy®h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj®ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj®ubjä)�”}”(hŒ+struct drm_dp_mst_topology_state *mst_state”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Œdrm_dp_mst_topology_state”h]”hŒdrm_dp_mst_topology_state”…”�”}”(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ï ]”jZ®Œc.drm_dp_remove_payload_part2”†”asbuh1hhjŽ®ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjήh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjŽ®ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÜ®h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŽ®ubjÓ )�”}”(hŒ mst_state”h]”hŒ mst_state”…”�”}”(hjé®h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjŽ®ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj®ubjä)�”}”(hŒ3const struct drm_dp_mst_atomic_payload *old_payload”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(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Œdrm_dp_mst_atomic_payload”h]”hŒdrm_dp_mst_atomic_payload”…”�”}”(hj;¯h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj8¯ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j=¯Œmodname”NŒ classname”Njé jì )�”}”jï ]”jZ®Œc.drm_dp_remove_payload_part2”†”asbuh1hhjþ®ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjY¯h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjþ®ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjg¯h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjþ®ubjÓ )�”}”(hŒ old_payload”h]”hŒ old_payload”…”�”}”(hjt¯h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjþ®ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj®ubjä)�”}”(hŒ-struct drm_dp_mst_atomic_payload *new_payload”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Œdrm_dp_mst_atomic_payload”h]”hŒdrm_dp_mst_atomic_payload”…”�”}”(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ï ]”jZ®Œc.drm_dp_remove_payload_part2”†”asbuh1hhj‰¯ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjɯh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj‰¯ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjׯh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‰¯ubjÓ )�”}”(hŒ new_payload”h]”hŒ new_payload”…”�”}”(hjä¯h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj‰¯ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj®ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjß­h²hh³jñ­h´MC ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjÛ­h²hh³jñ­h´MC ubah}”(h]”jÖ­ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jñ­h´MC hjØ­h²hubj )�”}”(hhh]”hÎ)�”}”(hŒRemove an MST payload locally”h]”hŒRemove an MST payload locally”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MC hj °h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjØ­h²hh³jñ­h´MC ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j&°j$ j&°j% ‰j& ‰j' ‰uh1j˜ h²hhjösh³Nh´Nubj) )�”}”(hX®**Parameters** ``struct drm_dp_mst_topology_mgr *mgr`` Manager to use. ``struct drm_dp_mst_topology_state *mst_state`` The MST atomic state ``const struct drm_dp_mst_atomic_payload *old_payload`` The payload with its old state ``struct drm_dp_mst_atomic_payload *new_payload`` The payload with its latest state **Description** Updates the starting time slots of all other payloads which would have been shifted towards the start of the payload ID table as a result of removing a payload. Driver should call this function whenever it removes a payload in its HW. It's independent to the result of payload allocation/deallocation at branch devices along the virtual channel.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj0°h]”hŒ Parameters”…”�”}”(hj2°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj.°ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MG hj*°ubjw )�”}”(hhh]”(j| )�”}”(hŒ8``struct drm_dp_mst_topology_mgr *mgr`` Manager to use. ”h]”(j‚ )�”}”(hŒ'``struct drm_dp_mst_topology_mgr *mgr``”h]”jˆ )�”}”(hjO°h]”hŒ#struct drm_dp_mst_topology_mgr *mgr”…”�”}”(hjQ°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjM°ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MD hjI°ubjž )�”}”(hhh]”hÎ)�”}”(hŒManager to use.”h]”hŒManager to use.”…”�”}”(hjh°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jd°h´MD hje°ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjI°ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jd°h´MD hjF°ubj| )�”}”(hŒE``struct drm_dp_mst_topology_state *mst_state`` The MST atomic state ”h]”(j‚ )�”}”(hŒ/``struct drm_dp_mst_topology_state *mst_state``”h]”jˆ )�”}”(hjˆ°h]”hŒ+struct drm_dp_mst_topology_state *mst_state”…”�”}”(hjаh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj†°ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´ME hj‚°ubjž )�”}”(hhh]”hÎ)�”}”(hŒThe MST atomic state”h]”hŒThe MST atomic state”…”�”}”(hj¡°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j�°h´ME hjž°ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj‚°ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j�°h´ME hjF°ubj| )�”}”(hŒW``const struct drm_dp_mst_atomic_payload *old_payload`` The payload with its old state ”h]”(j‚ )�”}”(hŒ7``const struct drm_dp_mst_atomic_payload *old_payload``”h]”jˆ )�”}”(hjÁ°h]”hŒ3const struct drm_dp_mst_atomic_payload *old_payload”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¿°ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MF hj»°ubjž )�”}”(hhh]”hÎ)�”}”(hŒThe payload with its old state”h]”hŒThe payload with its old state”…”�”}”(hjÚ°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÖ°h´MF hj×°ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj»°ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÖ°h´MF hjF°ubj| )�”}”(hŒT``struct drm_dp_mst_atomic_payload *new_payload`` The payload with its latest state ”h]”(j‚ )�”}”(hŒ1``struct drm_dp_mst_atomic_payload *new_payload``”h]”jˆ )�”}”(hjú°h]”hŒ-struct drm_dp_mst_atomic_payload *new_payload”…”�”}”(hjü°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjø°ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MG hjô°ubjž )�”}”(hhh]”hÎ)�”}”(hŒ!The payload with its latest state”h]”hŒ!The payload with its latest state”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j±h´MG hj±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjô°ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j±h´MG hjF°ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj*°ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj5±h]”hŒ Description”…”�”}”(hj7±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj3±ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MI hj*°ubhÎ)�”}”(hXYUpdates the starting time slots of all other payloads which would have been shifted towards the start of the payload ID table as a result of removing a payload. Driver should call this function whenever it removes a payload in its HW. It's independent to the result of payload allocation/deallocation at branch devices along the virtual channel.”h]”hX[Updates the starting time slots of all other payloads which would have been shifted towards the start of the payload ID table as a result of removing a payload. Driver should call this function whenever it removes a payload in its HW. It’s independent to the result of payload allocation/deallocation at branch devices along the virtual channel.”…”�”}”(hjK±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MH hj*°ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjösh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ%drm_dp_add_payload_part2 (C function)”Œc.drm_dp_add_payload_part2”hNt”auh1j† hjösh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒmint drm_dp_add_payload_part2 (struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_atomic_payload *payload)”h]”j¤ )�”}”(hŒlint drm_dp_add_payload_part2(struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_atomic_payload *payload)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjz±h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjv±h²hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mf ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰±h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjv±h²hh³jˆ±h´Mf ubjÍ )�”}”(hŒdrm_dp_add_payload_part2”h]”jÓ )�”}”(hŒdrm_dp_add_payload_part2”h]”hŒdrm_dp_add_payload_part2”…”�”}”(hj›±h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj—±ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjv±h²hh³jˆ±h´Mf ubjÞ)�”}”(hŒP(struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_atomic_payload *payload)”h]”(jä)�”}”(hŒ#struct drm_dp_mst_topology_mgr *mgr”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Œdrm_dp_mst_topology_mgr”h]”hŒdrm_dp_mst_topology_mgr”…”�”}”(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%)�”}”jj�±sbŒc.drm_dp_add_payload_part2”†”asbuh1hhj³±ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõ±h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj³±ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj³±ubjÓ )�”}”(hŒmgr”h]”hŒmgr”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj³±ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¯±ubjä)�”}”(hŒ)struct drm_dp_mst_atomic_payload *payload”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj)²h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj%²ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6²h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj%²ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_dp_mst_atomic_payload”h]”hŒdrm_dp_mst_atomic_payload”…”�”}”(hjG²h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjD²ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jI²Œmodname”NŒ classname”Njé jì )�”}”jï ]”jñ±Œc.drm_dp_add_payload_part2”†”asbuh1hhj%²ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hje²h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj%²ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjs²h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj%²ubjÓ )�”}”(hŒpayload”h]”hŒpayload”…”�”}”(hj€²h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj%²ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¯±ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjv±h²hh³jˆ±h´Mf ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjr±h²hh³jˆ±h´Mf ubah}”(h]”jm±ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jˆ±h´Mf hjo±h²hubj )�”}”(hhh]”hÎ)�”}”(hŒExecute payload update part 2”h]”hŒExecute payload update part 2”…”�”}”(hjª²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mf hj§²h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjo±h²hh³jˆ±h´Mf ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j²j$ j²j% ‰j& ‰j' ‰uh1j˜ h²hhjösh³Nh´Nubj) )�”}”(hX‹**Parameters** ``struct drm_dp_mst_topology_mgr *mgr`` Manager to use. ``struct drm_dp_mst_atomic_payload *payload`` The payload to update **Description** If **payload** was successfully assigned a starting time slot by drm_dp_add_payload_part1(), this function will send the sideband messages to finish allocating this payload. **Return** 0 on success, negative error code on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj̲h]”hŒ Parameters”…”�”}”(hjβh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjʲubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mj hjƲubjw )�”}”(hhh]”(j| )�”}”(hŒ8``struct drm_dp_mst_topology_mgr *mgr`` Manager to use. ”h]”(j‚ )�”}”(hŒ'``struct drm_dp_mst_topology_mgr *mgr``”h]”jˆ )�”}”(hjë²h]”hŒ#struct drm_dp_mst_topology_mgr *mgr”…”�”}”(hjí²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjé²ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mg hjå²ubjž )�”}”(hhh]”hÎ)�”}”(hŒManager to use.”h]”hŒManager to use.”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j³h´Mg hj³ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjå²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j³h´Mg hjâ²ubj| )�”}”(hŒD``struct drm_dp_mst_atomic_payload *payload`` The payload to update ”h]”(j‚ )�”}”(hŒ-``struct drm_dp_mst_atomic_payload *payload``”h]”jˆ )�”}”(hj$³h]”hŒ)struct drm_dp_mst_atomic_payload *payload”…”�”}”(hj&³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj"³ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mh hj³ubjž )�”}”(hhh]”hÎ)�”}”(hŒThe payload to update”h]”hŒThe payload to update”…”�”}”(hj=³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j9³h´Mh hj:³ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj³ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j9³h´Mh hjâ²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjƲubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj_³h]”hŒ Description”…”�”}”(hja³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj]³ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mj hjƲubhÎ)�”}”(hŒ­If **payload** was successfully assigned a starting time slot by drm_dp_add_payload_part1(), this function will send the sideband messages to finish allocating this payload.”h]”(hŒIf ”…”�”}”(hju³h²hh³Nh´Nubj3 )�”}”(hŒ **payload**”h]”hŒpayload”…”�”}”(hj}³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hju³ubhŒŸ was successfully assigned a starting time slot by drm_dp_add_payload_part1(), this function will send the sideband messages to finish allocating this payload.”…”�”}”(hju³h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mi hjƲubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj˜³h]”hŒReturn”…”�”}”(hjš³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj–³ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Ml hjƲubhÎ)�”}”(hŒ-0 on success, negative error code on failure.”h]”hŒ-0 on success, negative error code on failure.”…”�”}”(hj®³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mm hjƲubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjösh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ%drm_dp_get_vc_payload_bw (C function)”Œc.drm_dp_get_vc_payload_bw”hNt”auh1j† hjösh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒHfixed20_12 drm_dp_get_vc_payload_bw (int link_rate, int link_lane_count)”h]”j¤ )�”}”(hŒGfixed20_12 drm_dp_get_vc_payload_bw(int link_rate, int link_lane_count)”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒ fixed20_12”h]”hŒ fixed20_12”…”�”}”(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Œdrm_dp_get_vc_payload_bw”sbŒc.drm_dp_get_vc_payload_bw”†”asbuh1hhjÙ³h²hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÙ³h²hh³j´h´MubjÍ )�”}”(hŒdrm_dp_get_vc_payload_bw”h]”jÓ )�”}”(hjþ³h]”hŒdrm_dp_get_vc_payload_bw”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj´ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÙ³h²hh³j´h´MubjÞ)�”}”(hŒ$(int link_rate, int link_lane_count)”h]”(jä)�”}”(hŒ int link_rate”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(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Œ link_rate”h]”hŒ link_rate”…”�”}”(hjK´h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj+´ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj'´ubjä)�”}”(hŒint link_lane_count”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjd´h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj`´ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjr´h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj`´ubjÓ )�”}”(hŒlink_lane_count”h]”hŒlink_lane_count”…”�”}”(hj€´h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj`´ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj'´ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjÙ³h²hh³j´h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjÕ³h²hh³j´h´Mubah}”(h]”jгah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j´h´MhjÒ³h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ%get the VC payload BW for an MTP link”h]”hŒ%get the VC payload BW for an MTP link”…”�”}”(hjª´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mhj§´h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÒ³h²hh³j´h´Mubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j´j$ j´j% ‰j& ‰j' ‰uh1j˜ h²hhjösh³Nh´Nubj) )�”}”(hX½**Parameters** ``int link_rate`` link rate in 10kbits/s units ``int link_lane_count`` lane count **Description** Calculate the total bandwidth of a MultiStream Transport link. The returned value is in units of PBNs/(timeslots/1 MTP). This value can be used to convert the number of PBNs required for a given stream to the number of timeslots this stream requires in each MTP. Returns the BW / timeslot value in 20.12 fixed point format.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjÌ´h]”hŒ Parameters”…”�”}”(hjδh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÊ´ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MhjÆ´ubjw )�”}”(hhh]”(j| )�”}”(hŒ/``int link_rate`` link rate in 10kbits/s units ”h]”(j‚ )�”}”(hŒ``int link_rate``”h]”jˆ )�”}”(hjë´h]”hŒ int link_rate”…”�”}”(hjí´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjé´ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mhjå´ubjž )�”}”(hhh]”hÎ)�”}”(hŒlink rate in 10kbits/s units”h]”hŒlink rate in 10kbits/s units”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jµh´Mhjµubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjå´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jµh´Mhjâ´ubj| )�”}”(hŒ#``int link_lane_count`` lane count ”h]”(j‚ )�”}”(hŒ``int link_lane_count``”h]”jˆ )�”}”(hj$µh]”hŒint link_lane_count”…”�”}”(hj&µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj"µubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mhjµubjž )�”}”(hhh]”hÎ)�”}”(hŒ lane count”h]”hŒ lane count”…”�”}”(hj=µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j9µh´Mhj:µubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjµubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j9µh´Mhjâ´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÆ´ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj_µh]”hŒ Description”…”�”}”(hjaµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj]µubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MhjÆ´ubhÎ)�”}”(hXCalculate the total bandwidth of a MultiStream Transport link. The returned value is in units of PBNs/(timeslots/1 MTP). This value can be used to convert the number of PBNs required for a given stream to the number of timeslots this stream requires in each MTP.”h]”hXCalculate the total bandwidth of a MultiStream Transport link. The returned value is in units of PBNs/(timeslots/1 MTP). This value can be used to convert the number of PBNs required for a given stream to the number of timeslots this stream requires in each MTP.”…”�”}”(hjuµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MhjÆ´ubhÎ)�”}”(hŒ¶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.drm_dp_read_mst_cap”†”asbuh1hhj¶ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\¶h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¶ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjj¶h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¶ubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hjw¶h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¶ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¶ubjä)�”}”(hŒ#const u8 dpcd[DP_RECEIVER_CAP_SIZE]”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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Œu8”h]”hŒu8”…”�”}”(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.drm_dp_read_mst_cap”†”asbuh1hhjŒ¶ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj̶h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjŒ¶ubjÓ )�”}”(hŒdpcd”h]”hŒdpcd”…”�”}”(hjÚ¶h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjŒ¶ubj9)�”}”(hjMh]”hŒ[”…”�”}”(hjè¶h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŒ¶ubh)�”}”(hhh]”jÓ )�”}”(hŒDP_RECEIVER_CAP_SIZE”h]”hŒDP_RECEIVER_CAP_SIZE”…”�”}”(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.drm_dp_read_mst_cap”†”asbuh1hhjŒ¶ubj9)�”}”(hj=Mh]”hŒ]”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŒ¶ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¶ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj¯µh²hh³jÀµh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj«µh²hh³jÀµh´Mubah}”(h]”j¦µah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jÀµh´Mhj¨µh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ#Read the sink's MST mode capability”h]”hŒ%Read the sink’s MST mode capability”…”�”}”(hj?·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mhj<·h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¨µh²hh³jÀµh´Mubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jW·j$ jW·j% ‰j& ‰j' ‰uh1j˜ h²hhjösh³Nh´Nubj) )�”}”(hŒè**Parameters** ``struct drm_dp_aux *aux`` The DP AUX channel to use ``const u8 dpcd[DP_RECEIVER_CAP_SIZE]`` A cached copy of the DPCD capabilities for this sink **Return** enum drm_dp_mst_mode to indicate MST mode capability”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hja·h]”hŒ Parameters”…”�”}”(hjc·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj_·ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mhj[·ubjw )�”}”(hhh]”(j| )�”}”(hŒ5``struct drm_dp_aux *aux`` The DP AUX channel to use ”h]”(j‚ )�”}”(hŒ``struct drm_dp_aux *aux``”h]”jˆ )�”}”(hj€·h]”hŒstruct drm_dp_aux *aux”…”�”}”(hj‚·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj~·ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mhjz·ubjž )�”}”(hhh]”hÎ)�”}”(hŒThe DP AUX channel to use”h]”hŒThe DP AUX channel to use”…”�”}”(hj™·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j•·h´Mhj–·ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjz·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j•·h´Mhjw·ubj| )�”}”(hŒ]``const u8 dpcd[DP_RECEIVER_CAP_SIZE]`` A cached copy of the DPCD capabilities for this sink ”h]”(j‚ )�”}”(hŒ'``const u8 dpcd[DP_RECEIVER_CAP_SIZE]``”h]”jˆ )�”}”(hj¹·h]”hŒ#const u8 dpcd[DP_RECEIVER_CAP_SIZE]”…”�”}”(hj»·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj··ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mhj³·ubjž )�”}”(hhh]”hÎ)�”}”(hŒ4A cached copy of the DPCD capabilities for this sink”h]”hŒ4A cached copy of the DPCD capabilities for this sink”…”�”}”(hjÒ·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jηh´MhjÏ·ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj³·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jηh´Mhjw·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj[·ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjô·h]”hŒReturn”…”�”}”(hjö·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjò·ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mhj[·ubhÎ)�”}”(hŒ4enum drm_dp_mst_mode to indicate MST mode capability”h]”hŒ4enum drm_dp_mst_mode to indicate MST mode capability”…”�”}”(hj ¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mhj[·ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjösh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ,drm_dp_mst_topology_mgr_set_mst (C function)”Œ!c.drm_dp_mst_topology_mgr_set_mst”hNt”auh1j† hjösh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒYint drm_dp_mst_topology_mgr_set_mst (struct drm_dp_mst_topology_mgr *mgr, bool mst_state)”h]”j¤ )�”}”(hŒXint drm_dp_mst_topology_mgr_set_mst(struct drm_dp_mst_topology_mgr *mgr, bool mst_state)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj9¸h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj5¸h²hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M7ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjH¸h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj5¸h²hh³jG¸h´M7ubjÍ )�”}”(hŒdrm_dp_mst_topology_mgr_set_mst”h]”jÓ )�”}”(hŒdrm_dp_mst_topology_mgr_set_mst”h]”hŒdrm_dp_mst_topology_mgr_set_mst”…”�”}”(hjZ¸h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjV¸ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj5¸h²hh³jG¸h´M7ubjÞ)�”}”(hŒ5(struct drm_dp_mst_topology_mgr *mgr, bool mst_state)”h]”(jä)�”}”(hŒ#struct drm_dp_mst_topology_mgr *mgr”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjv¸h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjr¸ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒ¸h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjr¸ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_dp_mst_topology_mgr”h]”hŒdrm_dp_mst_topology_mgr”…”�”}”(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%)�”}”jj\¸sbŒ!c.drm_dp_mst_topology_mgr_set_mst”†”asbuh1hhjr¸ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´¸h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjr¸ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjr¸ubjÓ )�”}”(hŒmgr”h]”hŒmgr”…”�”}”(hjϸh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjr¸ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjn¸ubjä)�”}”(hŒbool mst_state”h]”(j¦)�”}”(hj£Ih]”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Œ mst_state”h]”hŒ mst_state”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjä¸ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjn¸ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj5¸h²hh³jG¸h´M7ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj1¸h²hh³jG¸h´M7ubah}”(h]”j,¸ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jG¸h´M7hj.¸h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ(Set the MST state for a topology manager”h]”hŒ(Set the MST state for a topology manager”…”�”}”(hj-¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M7hj*¹h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj.¸h²hh³jG¸h´M7ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jE¹j$ jE¹j% ‰j& ‰j' ‰uh1j˜ h²hhjösh³Nh´Nubj) )�”}”(hXH**Parameters** ``struct drm_dp_mst_topology_mgr *mgr`` manager to set state for ``bool mst_state`` true to enable MST on this connector - false to disable. **Description** This is called by the driver when it detects an MST capable device plugged into a DP MST capable port, or when a DP MST capable device is unplugged.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjO¹h]”hŒ Parameters”…”�”}”(hjQ¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjM¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M;hjI¹ubjw )�”}”(hhh]”(j| )�”}”(hŒA``struct drm_dp_mst_topology_mgr *mgr`` manager to set state for ”h]”(j‚ )�”}”(hŒ'``struct drm_dp_mst_topology_mgr *mgr``”•)h]”jˆ )�”}”(hjn¹h]”hŒ#struct drm_dp_mst_topology_mgr *mgr”…”�”}”(hjp¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjl¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M8hjh¹ubjž )�”}”(hhh]”hÎ)�”}”(hŒmanager to set state for”h]”hŒmanager to set state for”…”�”}”(hj‡¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jƒ¹h´M8hj„¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjh¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jƒ¹h´M8hje¹ubj| )�”}”(hŒL``bool mst_state`` true to enable MST on this connector - false to disable. ”h]”(j‚ )�”}”(hŒ``bool mst_state``”h]”jˆ )�”}”(hj§¹h]”hŒbool mst_state”…”�”}”(hj©¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¥¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M9hj¡¹ubjž )�”}”(hhh]”hÎ)�”}”(hŒ8true to enable MST on this connector - false to disable.”h]”hŒ8true to enable MST on this connector - false to disable.”…”�”}”(hjÀ¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¼¹h´M9hj½¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¡¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¼¹h´M9hje¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjI¹ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjâ¹h]”hŒ Description”…”�”}”(hjä¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjà¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M;hjI¹ubhÎ)�”}”(hŒ”This is called by the driver when it detects an MST capable device plugged into a DP MST capable port, or when a DP MST capable device is unplugged.”h]”hŒ”This is called by the driver when it detects an MST capable device plugged into a DP MST capable port, or when a DP MST capable device is unplugged.”…”�”}”(hjø¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M:hjI¹ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjösh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ,drm_dp_mst_topology_queue_probe (C function)”Œ!c.drm_dp_mst_topology_queue_probe”hNt”auh1j† hjösh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒJvoid drm_dp_mst_topology_queue_probe (struct drm_dp_mst_topology_mgr *mgr)”h]”j¤ )�”}”(hŒIvoid drm_dp_mst_topology_queue_probe(struct drm_dp_mst_topology_mgr *mgr)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj'ºh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj#ºh²hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M�ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6ºh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj#ºh²hh³j5ºh´M�ubjÍ )�”}”(hŒdrm_dp_mst_topology_queue_probe”h]”jÓ )�”}”(hŒdrm_dp_mst_topology_queue_probe”h]”hŒdrm_dp_mst_topology_queue_probe”…”�”}”(hjHºh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjDºubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj#ºh²hh³j5ºh´M�ubjÞ)�”}”(hŒ%(struct drm_dp_mst_topology_mgr *mgr)”h]”jä)�”}”(hŒ#struct drm_dp_mst_topology_mgr *mgr”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjdºh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj`ºubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjqºh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj`ºubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_dp_mst_topology_mgr”h]”hŒdrm_dp_mst_topology_mgr”…”�”}”(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%)�”}”jjJºsbŒ!c.drm_dp_mst_topology_queue_probe”†”asbuh1hhj`ºubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢ºh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj`ºubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj°ºh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj`ºubjÓ )�”}”(hŒmgr”h]”hŒmgr”…”�”}”(hj½ºh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj`ºubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj\ºubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj#ºh²hh³j5ºh´M�ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjºh²hh³j5ºh´M�ubah}”(h]”jºah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j5ºh´M�hjºh²hubj )�”}”(hhh]”hÎ)�”}”(hŒQueue a topology probe”h]”hŒQueue a topology probe”…”�”}”(hjçºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M�hjäºh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjºh²hh³j5ºh´M�ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jÿºj$ jÿºj% ‰j& ‰j' ‰uh1j˜ h²hhjösh³Nh´Nubj) )�”}”(hX[**Parameters** ``struct drm_dp_mst_topology_mgr *mgr`` manager to probe **Description** Queue a work to probe the MST topology. Driver's should call this only to sync the topology's HW->SW state after the MST link's parameters have changed in a way the state could've become out-of-sync. This is the case for instance when the link rate between the source and first downstream branch device has switched between UHBR and non-UHBR rates. Except of those cases - for instance when a sink gets plugged/unplugged to a port - the SW state will get updated automatically via MST UP message notifications.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj »h]”hŒ Parameters”…”�”}”(hj »h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj»ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M”hj»ubjw )�”}”(hhh]”j| )�”}”(hŒ9``struct drm_dp_mst_topology_mgr *mgr`` manager to probe ”h]”(j‚ )�”}”(hŒ'``struct drm_dp_mst_topology_mgr *mgr``”h]”jˆ )�”}”(hj(»h]”hŒ#struct drm_dp_mst_topology_mgr *mgr”…”�”}”(hj*»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj&»ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M‘hj"»ubjž )�”}”(hhh]”hÎ)�”}”(hŒmanager to probe”h]”hŒmanager to probe”…”�”}”(hjA»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j=»h´M‘hj>»ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj"»ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j=»h´M‘hj»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj»ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjc»h]”hŒ Description”…”�”}”(hje»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hja»ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M“hj»ubhÎ)�”}”(hXþQueue a work to probe the MST topology. Driver's should call this only to sync the topology's HW->SW state after the MST link's parameters have changed in a way the state could've become out-of-sync. This is the case for instance when the link rate between the source and first downstream branch device has switched between UHBR and non-UHBR rates. Except of those cases - for instance when a sink gets plugged/unplugged to a port - the SW state will get updated automatically via MST UP message notifications.”h]”hXQueue a work to probe the MST topology. Driver’s should call this only to sync the topology’s HW->SW state after the MST link’s parameters have changed in a way the state could’ve become out-of-sync. This is the case for instance when the link rate between the source and first downstream branch device has switched between UHBR and non-UHBR rates. Except of those cases - for instance when a sink gets plugged/unplugged to a port - the SW state will get updated automatically via MST UP message notifications.”…”�”}”(hjy»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M’hj»ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjösh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ,drm_dp_mst_topology_mgr_suspend (C function)”Œ!c.drm_dp_mst_topology_mgr_suspend”hNt”auh1j† hjösh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒJvoid drm_dp_mst_topology_mgr_suspend (struct drm_dp_mst_topology_mgr *mgr)”h]”j¤ )�”}”(hŒIvoid drm_dp_mst_topology_mgr_suspend(struct drm_dp_mst_topology_mgr *mgr)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¨»h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj¤»h²hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.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Œdrm_dp_mst_topology_mgr_suspend”h]”jÓ )�”}”(hŒdrm_dp_mst_topology_mgr_suspend”h]”hŒdrm_dp_mst_topology_mgr_suspend”…”�”}”(hjÉ»h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÅ»ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj¤»h²hh³j¶»h´M­ubjÞ)�”}”(hŒ%(struct drm_dp_mst_topology_mgr *mgr)”h]”jä)�”}”(hŒ#struct drm_dp_mst_topology_mgr *mgr”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Œdrm_dp_mst_topology_mgr”h]”hŒdrm_dp_mst_topology_mgr”…”�”}”(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%)�”}”jjË»sbŒ!c.drm_dp_mst_topology_mgr_suspend”†”asbuh1hhjá»ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#¼h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjá»ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj1¼h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjá»ubjÓ )�”}”(hŒmgr”h]”hŒmgr”…”�”}”(hj>¼h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjá»ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÝ»ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj¤»h²hh³j¶»h´M­ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œsuspend the MST manager”h]”hŒsuspend the MST manager”…”�”}”(hjh¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M­hje¼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²hhjösh³Nh´Nubj) )�”}”(hŒè**Parameters** ``struct drm_dp_mst_topology_mgr *mgr`` manager to suspend **Description** This function tells the MST device that we can't handle UP messages anymore. This should stop it from sending any since we are suspended.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjмh]”hŒ Parameters”…”�”}”(hjŒ¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjˆ¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M±hj„¼ubjw )�”}”(hhh]”j| )�”}”(hŒ;``struct drm_dp_mst_topology_mgr *mgr`` manager to suspend ”h]”(j‚ )�”}”(hŒ'``struct drm_dp_mst_topology_mgr *mgr``”h]”jˆ )�”}”(hj©¼h]”hŒ#struct drm_dp_mst_topology_mgr *mgr”…”�”}”(hj«¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj§¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M®hj£¼ubjž )�”}”(hhh]”hÎ)�”}”(hŒmanager to suspend”h]”hŒmanager to suspend”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¾¼h´M®hj¿¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj£¼ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¾¼h´M®hj ¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj„¼ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjä¼h]”hŒ Description”…”�”}”(hjæ¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjâ¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M°hj„¼ubhÎ)�”}”(hŒ‰This function tells the MST device that we can't handle UP messages anymore. This should stop it from sending any since we are suspended.”h]”hŒ‹This function tells the MST device that we can’t handle UP messages anymore. This should stop it from sending any since we are suspended.”…”�”}”(hjú¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M¯hj„¼ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjösh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ+drm_dp_mst_topology_mgr_resume (C function)”Œ c.drm_dp_mst_topology_mgr_resume”hNt”auh1j† hjösh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒSint drm_dp_mst_topology_mgr_resume (struct drm_dp_mst_topology_mgr *mgr, bool sync)”h]”j¤ )�”}”(hŒRint drm_dp_mst_topology_mgr_resume(struct drm_dp_mst_topology_mgr *mgr, bool sync)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj)½h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj%½h²hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MÅubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8½h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj%½h²hh³j7½h´MÅubjÍ )�”}”(hŒdrm_dp_mst_topology_mgr_resume”h]”jÓ )�”}”(hŒdrm_dp_mst_topology_mgr_resume”h]”hŒdrm_dp_mst_topology_mgr_resume”…”�”}”(hjJ½h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjF½ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj%½h²hh³j7½h´MÅubjÞ)�”}”(hŒ0(struct drm_dp_mst_topology_mgr *mgr, bool sync)”h]”(jä)�”}”(hŒ#struct drm_dp_mst_topology_mgr *mgr”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjf½h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjb½ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjs½h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjb½ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_dp_mst_topology_mgr”h]”hŒdrm_dp_mst_topology_mgr”…”�”}”(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%)�”}”jjL½sbŒ c.drm_dp_mst_topology_mgr_resume”†”asbuh1hhjb½ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤½h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjb½ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj²½h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjb½ubjÓ )�”}”(hŒmgr”h]”hŒmgr”…”�”}”(hj¿½h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjb½ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj^½ubjä)�”}”(hŒ bool sync”h]”(j¦)�”}”(hj£Ih]”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Œsync”h]”hŒsync”…”�”}”(hjó½h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÔ½ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj^½ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj%½h²hh³j7½h´MÅubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj!½h²hh³j7½h´MÅubah}”(h]”j½ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j7½h´MÅhj½h²hubj )�”}”(hhh]”hÎ)�”}”(hŒresume the MST manager”h]”hŒresume the MST manager”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MÅhj¾h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj½h²hh³j7½h´MÅubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j5¾j$ j5¾j% ‰j& ‰j' ‰uh1j˜ h²hhjösh³Nh´Nubj) )�”}”(hXT**Parameters** ``struct drm_dp_mst_topology_mgr *mgr`` manager to resume ``bool sync`` whether or not to perform topology reprobing synchronously **Description** This will fetch DPCD and see if the device is still there, if it is, it will rewrite the MSTM control bits, and return. If the device fails this returns -1, and the driver should do a full MST reprobe, in case we were undocked. During system resume (where it is assumed that the driver will be calling drm_atomic_helper_resume()) this function should be called beforehand with **sync** set to true. In contexts like runtime resume where the driver is not expected to be calling drm_atomic_helper_resume(), this function should be called with **sync** set to false in order to avoid deadlocking. **Return** -1 if the MST topology was removed while we were suspended, 0 otherwise.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj?¾h]”hŒ Parameters”…”�”}”(hjA¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj=¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MÉhj9¾ubjw )�”}”(hhh]”(j| )�”}”(hŒ:``struct drm_dp_mst_topology_mgr *mgr`` manager to resume ”h]”(j‚ )�”}”(hŒ'``struct drm_dp_mst_topology_mgr *mgr``”h]”jˆ )�”}”(hj^¾h]”hŒ#struct drm_dp_mst_topology_mgr *mgr”…”�”}”(hj`¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj\¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MÆhjX¾ubjž )�”}”(hhh]”hÎ)�”}”(hŒmanager to resume”h]”hŒmanager to resume”…”�”}”(hjw¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³js¾h´MÆhjt¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjX¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³js¾h´MÆhjU¾ubj| )�”}”(hŒI``bool sync`` whether or not to perform topology reprobing synchronously ”h]”(j‚ )�”}”(hŒ ``bool sync``”h]”jˆ )�”}”(hj—¾h]”hŒ bool sync”…”�”}”(hj™¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj•¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MÇhj‘¾ubjž )�”}”(hhh]”hÎ)�”}”(hŒ:whether or not to perform topology reprobing synchronously”h]”hŒ:whether or not to perform topology reprobing synchronously”…”�”}”(hj°¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¬¾h´MÇhj­¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj‘¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¬¾h´MÇhjU¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj9¾ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjÒ¾h]”hŒ Description”…”�”}”(hjÔ¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjоubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MÉhj9¾ubhÎ)�”}”(hŒwThis will fetch DPCD and see if the device is still there, if it is, it will rewrite the MSTM control bits, and return.”h]”hŒwThis will fetch DPCD and see if the device is still there, if it is, it will rewrite the MSTM control bits, and return.”…”�”}”(hjè¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MÈhj9¾ubhÎ)�”}”(hŒkIf the device fails this returns -1, and the driver should do a full MST reprobe, in case we were undocked.”h]”hŒkIf the device fails this returns -1, and the driver should do a full MST reprobe, in case we were undocked.”…”�”}”(hj÷¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MËhj9¾ubhÎ)�”}”(hXnDuring system resume (where it is assumed that the driver will be calling drm_atomic_helper_resume()) this function should be called beforehand with **sync** set to true. In contexts like runtime resume where the driver is not expected to be calling drm_atomic_helper_resume(), this function should be called with **sync** set to false in order to avoid deadlocking.”h]”(hŒ•During system resume (where it is assumed that the driver will be calling drm_atomic_helper_resume()) this function should be called beforehand with ”…”�”}”(hj¿h²hh³Nh´Nubj3 )�”}”(hŒ**sync**”h]”hŒsync”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¿ubhŒ� set to true. In contexts like runtime resume where the driver is not expected to be calling drm_atomic_helper_resume(), this function should be called with ”…”�”}”(hj¿h²hh³Nh´Nubj3 )�”}”(hŒ**sync**”h]”hŒsync”…”�”}”(hj ¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¿ubhŒ, set to false in order to avoid deadlocking.”…”�”}”(hj¿h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MÎhj9¾ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj;¿h]”hŒReturn”…”�”}”(hj=¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj9¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MÔhj9¾ubhÎ)�”}”(hŒH-1 if the MST topology was removed while we were suspended, 0 otherwise.”h]”hŒH-1 if the MST topology was removed while we were suspended, 0 otherwise.”…”�”}”(hjQ¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MÕhj9¾ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjösh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ,drm_dp_mst_hpd_irq_handle_event (C function)”Œ!c.drm_dp_mst_hpd_irq_handle_event”hNt”auh1j† hjösh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒpint drm_dp_mst_hpd_irq_handle_event (struct drm_dp_mst_topology_mgr *mgr, const u8 *esi, u8 *ack, bool *handled)”h]”j¤ )�”}”(hŒoint drm_dp_mst_hpd_irq_handle_event(struct drm_dp_mst_topology_mgr *mgr, const u8 *esi, u8 *ack, bool *handled)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj€¿h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj|¿h²hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mxubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�¿h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj|¿h²hh³jŽ¿h´MxubjÍ )�”}”(hŒdrm_dp_mst_hpd_irq_handle_event”h]”jÓ )�”}”(hŒdrm_dp_mst_hpd_irq_handle_event”h]”hŒdrm_dp_mst_hpd_irq_handle_event”…”�”}”(hj¡¿h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj�¿ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj|¿h²hh³jŽ¿h´MxubjÞ)�”}”(hŒL(struct drm_dp_mst_topology_mgr *mgr, const u8 *esi, u8 *ack, bool *handled)”h]”(jä)�”}”(hŒ#struct drm_dp_mst_topology_mgr *mgr”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Œdrm_dp_mst_topology_mgr”h]”hŒdrm_dp_mst_topology_mgr”…”�”}”(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%)�”}”jj£¿sbŒ!c.drm_dp_mst_hpd_irq_handle_event”†”asbuh1hhj¹¿ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjû¿h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¹¿ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj Àh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¹¿ubjÓ )�”}”(hŒmgr”h]”hŒmgr”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¹¿ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjµ¿ubjä)�”}”(hŒ const u8 *esi”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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Œu8”h]”hŒu8”…”�”}”(hjMÀh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjJÀubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jOÀŒmodname”NŒ classname”Njé jì )�”}”jï ]”j÷¿Œ!c.drm_dp_mst_hpd_irq_handle_event”†”asbuh1hhj+Àubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjkÀh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj+Àubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjyÀh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj+ÀubjÓ )�”}”(hŒesi”h]”hŒesi”…”�”}”(hj†Àh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj+Àubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjµ¿ubjä)�”}”(hŒu8 *ack”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(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.drm_dp_mst_hpd_irq_handle_event”†”asbuh1hhj›Àubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀÀh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj›Àubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÎÀh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj›ÀubjÓ )�”}”(hŒack”h]”hŒack”…”�”}”(hjÛÀh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj›Àubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjµ¿ubjä)�”}”(hŒ bool *handled”h]”(j¦)�”}”(hj£Ih]”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ðÀubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjðÀubjÓ )�”}”(hŒhandled”h]”hŒhandled”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjðÀubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjµ¿ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj|¿h²hh³jŽ¿h´Mxubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjx¿h²hh³jŽ¿h´Mxubah}”(h]”js¿ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jŽ¿h´Mxhju¿h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ MST hotplug IRQ handle MST event”h]”hŒ MST hotplug IRQ handle MST event”…”�”}”(hjFÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MxhjCÁh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hju¿h²hh³jŽ¿h´Mxubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j^Áj$ j^Áj% ‰j& ‰j' ‰uh1j˜ h²hhjösh³Nh´Nubj) )�”}”(hXn**Parameters** ``struct drm_dp_mst_topology_mgr *mgr`` manager to notify irq for. ``const u8 *esi`` 4 bytes from SINK_COUNT_ESI ``u8 *ack`` 4 bytes used to ack events starting from SINK_COUNT_ESI ``bool *handled`` whether the hpd interrupt was consumed or not **Description** This should be called from the driver when it detects a HPD IRQ, along with the value of the DEVICE_SERVICE_IRQ_VECTOR_ESI0. The topology manager will process the sideband messages received as indicated in the DEVICE_SERVICE_IRQ_VECTOR_ESI0 and set the corresponding flags that Driver has to ack the DP receiver later. Note that driver shall also call drm_dp_mst_hpd_irq_send_new_request() if the 'handled' is set after calling this function, to try to kick off a new request in the queue if the previous message transaction is completed. See also: drm_dp_mst_hpd_irq_send_new_request()”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjhÁh]”hŒ Parameters”…”�”}”(hjjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjfÁubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M|hjbÁubjw )�”}”(hhh]”(j| )�”}”(hŒC``struct drm_dp_mst_topology_mgr *mgr`` manager to notify irq for. ”h]”(j‚ )�”}”(hŒ'``struct drm_dp_mst_topology_mgr *mgr``”h]”jˆ )�”}”(hj‡Áh]”hŒ#struct drm_dp_mst_topology_mgr *mgr”…”�”}”(hj‰Áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj…Áubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Myhj�Áubjž )�”}”(hhh]”hÎ)�”}”(hŒmanager to notify irq for.”h]”hŒmanager to notify irq for.”…”�”}”(hj Áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jœÁh´Myhj�Áubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj�Áubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jœÁh´Myhj~Áubj| )�”}”(hŒ.``const u8 *esi`` 4 bytes from SINK_COUNT_ESI ”h]”(j‚ )�”}”(hŒ``const u8 *esi``”h]”jˆ )�”}”(hjÀÁh]”hŒ const u8 *esi”…”�”}”(hjÂÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¾Áubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MzhjºÁubjž )�”}”(hhh]”hÎ)�”}”(hŒ4 bytes from SINK_COUNT_ESI”h]”hŒ4 bytes from SINK_COUNT_ESI”…”�”}”(hjÙÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÕÁh´MzhjÖÁubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjºÁubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÕÁh´Mzhj~Áubj| )�”}”(hŒD``u8 *ack`` 4 bytes used to ack events starting from SINK_COUNT_ESI ”h]”(j‚ )�”}”(hŒ ``u8 *ack``”h]”jˆ )�”}”(hjùÁh]”hŒu8 *ack”…”�”}”(hjûÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj÷Áubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M{hjóÁubjž )�”}”(hhh]”hÎ)�”}”(hŒ74 bytes used to ack events starting from SINK_COUNT_ESI”h]”hŒ74 bytes used to ack events starting from SINK_COUNT_ESI”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÂh´M{hjÂubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjóÁubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÂh´M{hj~Áubj| )�”}”(hŒ@``bool *handled`` whether the hpd interrupt was consumed or not ”h]”(j‚ )�”}”(hŒ``bool *handled``”h]”jˆ )�”}”(hj2Âh]”hŒ bool *handled”…”�”}”(hj4Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj0Âubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M|hj,Âubjž )�”}”(hhh]”hÎ)�”}”(hŒ-whether the hpd interrupt was consumed or not”h]”hŒ-whether the hpd interrupt was consumed or not”…”�”}”(hjKÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jGÂh´M|hjHÂubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj,Âubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jGÂh´M|hj~Áubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjbÁubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjmÂh]”hŒ Description”…”�”}”(hjoÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjkÂubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M~hjbÁubhÎ)�”}”(hX>This should be called from the driver when it detects a HPD IRQ, along with the value of the DEVICE_SERVICE_IRQ_VECTOR_ESI0. The topology manager will process the sideband messages received as indicated in the DEVICE_SERVICE_IRQ_VECTOR_ESI0 and set the corresponding flags that Driver has to ack the DP receiver later.”h]”hX>This should be called from the driver when it detects a HPD IRQ, along with the value of the DEVICE_SERVICE_IRQ_VECTOR_ESI0. The topology manager will process the sideband messages received as indicated in the DEVICE_SERVICE_IRQ_VECTOR_ESI0 and set the corresponding flags that Driver has to ack the DP receiver later.”…”�”}”(hjƒÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M}hjbÁubhÎ)�”}”(hŒÛNote that driver shall also call drm_dp_mst_hpd_irq_send_new_request() if the 'handled' is set after calling this function, to try to kick off a new request in the queue if the previous message transaction is completed.”h]”hŒßNote that driver shall also call drm_dp_mst_hpd_irq_send_new_request() if the ‘handled’ is set after calling this function, to try to kick off a new request in the queue if the previous message transaction is completed.”…”�”}”(hj’Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MƒhjbÁubhÎ)�”}”(hŒ/See also: drm_dp_mst_hpd_irq_send_new_request()”h]”hŒ/See also: drm_dp_mst_hpd_irq_send_new_request()”…”�”}”(hj¡Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MˆhjbÁubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjösh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ0drm_dp_mst_hpd_irq_send_new_request (C function)”Œ%c.drm_dp_mst_hpd_irq_send_new_request”hNt”auh1j† hjösh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒNvoid drm_dp_mst_hpd_irq_send_new_request (struct drm_dp_mst_topology_mgr *mgr)”h]”j¤ )�”}”(hŒMvoid drm_dp_mst_hpd_irq_send_new_request(struct drm_dp_mst_topology_mgr *mgr)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÐÂh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjÌÂh²hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.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Œ#drm_dp_mst_hpd_irq_send_new_request”h]”jÓ )�”}”(hŒ#drm_dp_mst_hpd_irq_send_new_request”h]”hŒ#drm_dp_mst_hpd_irq_send_new_request”…”�”}”(hjñÂh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjíÂubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÌÂh²hh³jÞÂh´M¬ubjÞ)�”}”(hŒ%(struct drm_dp_mst_topology_mgr *mgr)”h]”jä)�”}”(hŒ#struct drm_dp_mst_topology_mgr *mgr”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Œdrm_dp_mst_topology_mgr”h]”hŒdrm_dp_mst_topology_mgr”…”�”}”(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%)�”}”jjóÂsbŒ%c.drm_dp_mst_hpd_irq_send_new_request”†”asbuh1hhj Ãubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKÃh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj Ãubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjYÃh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ÃubjÓ )�”}”(hŒmgr”h]”hŒmgr”…”�”}”(hjfÃh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj Ãubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÃubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjÌÂh²hh³jÞÂh´M¬ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ$MST hotplug IRQ kick off new request”h]”hŒ$MST hotplug IRQ kick off new request”…”�”}”(hj�Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.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²hhjösh³Nh´Nubj) )�”}”(hXY**Parameters** ``struct drm_dp_mst_topology_mgr *mgr`` manager to notify irq for. **Description** This should be called from the driver when mst irq event is handled and acked. Note that new down request should only be sent when previous message transaction is completed. Source is not supposed to generate interleaved message transactions.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj²Ãh]”hŒ Parameters”…”�”}”(hj´Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj°Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M°hj¬Ãubjw )�”}”(hhh]”j| )�”}”(hŒC``struct drm_dp_mst_topology_mgr *mgr`` manager to notify irq for. ”h]”(j‚ )�”}”(hŒ'``struct drm_dp_mst_topology_mgr *mgr``”h]”jˆ )�”}”(hjÑÃh]”hŒ#struct drm_dp_mst_topology_mgr *mgr”…”�”}”(hjÓÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÏÃubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M­hjËÃubjž )�”}”(hhh]”hÎ)�”}”(hŒmanager to notify irq for.”h]”hŒmanager to notify irq for.”…”�”}”(hjêÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jæÃh´M­hjçÃubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjËÃubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jæÃh´M­hjÈÃubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj¬ÃubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj Äh]”hŒ Description”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj Äubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M¯hj¬ÃubhÎ)�”}”(hŒòThis should be called from the driver when mst irq event is handled and acked. Note that new down request should only be sent when previous message transaction is completed. Source is not supposed to generate interleaved message transactions.”h]”hŒòThis should be called from the driver when mst irq event is handled and acked. Note that new down request should only be sent when previous message transaction is completed. Source is not supposed to generate interleaved message transactions.”…”�”}”(hj"Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M®hj¬Ãubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjösh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ#drm_dp_mst_detect_port (C function)”Œc.drm_dp_mst_detect_port”hNt”auh1j† hjösh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ¤int drm_dp_mst_detect_port (struct drm_connector *connector, struct drm_modeset_acquire_ctx *ctx, struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_port *port)”h]”j¤ )�”}”(hŒ£int drm_dp_mst_detect_port(struct drm_connector *connector, struct drm_modeset_acquire_ctx *ctx, struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_port *port)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjQÄh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjMÄh²hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MÈubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`Äh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjMÄh²hh³j_Äh´MÈubjÍ )�”}”(hŒdrm_dp_mst_detect_port”h]”jÓ )�”}”(hŒdrm_dp_mst_detect_port”h]”hŒdrm_dp_mst_detect_port”…”�”}”(hjrÄh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjnÄubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjMÄh²hh³j_Äh´MÈubjÞ)�”}”(hŒ‰(struct drm_connector *connector, struct drm_modeset_acquire_ctx *ctx, struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_port *port)”h]”(jä)�”}”(hŒstruct drm_connector *connector”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Œ drm_connector”h]”hŒ drm_connector”…”�”}”(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%)�”}”jjtÄsbŒc.drm_dp_mst_detect_port”†”asbuh1hhjŠÄubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌÄh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjŠÄubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÚÄh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjŠÄubjÓ )�”}”(hŒ connector”h]”hŒ connector”…”�”}”(hjçÄh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjŠÄubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj†Äubjä)�”}”(hŒ#struct drm_modeset_acquire_ctx *ctx”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Œdrm_modeset_acquire_ctx”h]”hŒdrm_modeset_acquire_ctx”…”�”}”(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.drm_dp_mst_detect_port”†”asbuh1hhjüÄubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<Åh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjüÄubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjJÅh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjüÄubjÓ )�”}”(hŒctx”h]”hŒctx”…”�”}”(hjWÅh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjüÄubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj†Äubjä)�”}”(hŒ#struct drm_dp_mst_topology_mgr *mgr”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjpÅh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjlÅubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}Åh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjlÅubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_dp_mst_topology_mgr”h]”hŒdrm_dp_mst_topology_mgr”…”�”}”(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.drm_dp_mst_detect_port”†”asbuh1hhjlÅubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬Åh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjlÅubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjºÅh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjlÅubjÓ )�”}”(hŒmgr”h]”hŒmgr”…”�”}”(hjÇÅh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjlÅubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj†Äubjä)�”}”(hŒstruct drm_dp_mst_port *port”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Œdrm_dp_mst_port”h]”hŒdrm_dp_mst_port”…”�”}”(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.drm_dp_mst_detect_port”†”asbuh1hhjÜÅubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÜÅubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj*Æh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÜÅubjÓ )�”}”(hŒport”h]”hŒport”…”�”}”(hj7Æh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÜÅubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj†Äubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjMÄh²hh³j_Äh´MÈubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjIÄh²hh³j_Äh´MÈubah}”(h]”jDÄah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j_Äh´MÈhjFÄh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ%get connection status for an MST port”h]”hŒ%get connection status for an MST port”…”�”}”(hjaÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MÈhj^Æh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjFÄh²hh³j_Äh´MÈubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jyÆj$ jyÆj% ‰j& ‰j' ‰uh1j˜ h²hhjösh³Nh´Nubj) )�”}”(hXm**Parameters** ``struct drm_connector *connector`` DRM connector for this port ``struct drm_modeset_acquire_ctx *ctx`` The acquisition context to use for grabbing locks ``struct drm_dp_mst_topology_mgr *mgr`` manager for this port ``struct drm_dp_mst_port *port`` pointer to a port **Description** This returns the current connection state for a port.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjƒÆh]”hŒ Parameters”…”�”}”(hj…Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj�Æubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MÌhj}Æubjw )�”}”(hhh]”(j| )�”}”(hŒ@``struct drm_connector *connector`` DRM connector for this port ”h]”(j‚ )�”}”(hŒ#``struct drm_connector *connector``”h]”jˆ )�”}”(hj¢Æh]”hŒstruct drm_connector *connector”…”�”}”(hj¤Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj Æubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MÉhjœÆubjž )�”}”(hhh]”hÎ)�”}”(hŒDRM connector for this port”h]”hŒDRM connector for this port”…”�”}”(hj»Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j·Æh´MÉhj¸Æubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjœÆubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j·Æh´MÉhj™Æubj| )�”}”(hŒZ``struct drm_modeset_acquire_ctx *ctx`` The acquisition context to use for grabbing locks ”h]”(j‚ )�”}”(hŒ'``struct drm_modeset_acquire_ctx *ctx``”h]”jˆ )�”}”(hjÛÆh]”hŒ#struct drm_modeset_acquire_ctx *ctx”…”�”}”(hjÝÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÙÆubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MÊhjÕÆubjž )�”}”(hhh]”hÎ)�”}”(hŒ1The acquisition context to use for grabbing locks”h]”hŒ1The acquisition context to use for grabbing locks”…”�”}”(hjôÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jðÆh´MÊhjñÆubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÕÆubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jðÆh´MÊhj™Æubj| )�”}”(hŒ>``struct drm_dp_mst_topology_mgr *mgr`` manager for this port ”h]”(j‚ )�”}”(hŒ'``struct drm_dp_mst_topology_mgr *mgr``”h]”jˆ )�”}”(hjÇh]”hŒ#struct drm_dp_mst_topology_mgr *mgr”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÇubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MËhjÇubjž )�”}”(hhh]”hÎ)�”}”(hŒmanager for this port”h]”hŒmanager for this port”…”�”}”(hj-Çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j)Çh´MËhj*Çubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÇubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j)Çh´MËhj™Æubj| )�”}”(hŒ3``struct drm_dp_mst_port *port`` pointer to a port ”h]”(j‚ )�”}”(hŒ ``struct drm_dp_mst_port *port``”h]”jˆ )�”}”(hjMÇh]”hŒstruct drm_dp_mst_port *port”…”�”}”(hjOÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjKÇubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MÌhjGÇubjž )�”}”(hhh]”hÎ)�”}”(hŒpointer to a port”h]”hŒpointer to a port”…”�”}”(hjfÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jbÇh´MÌhjcÇubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjGÇubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jbÇh´MÌhj™Æubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj}ÆubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjˆÇh]”hŒ Description”…”�”}”(hjŠÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj†Çubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MÎhj}ÆubhÎ)�”}”(hŒ5This returns the current connection state for a port.”h]”hŒ5This returns the current connection state for a port.”…”�”}”(hjžÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MÍhj}Æubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjösh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ!drm_dp_mst_edid_read (C function)”Œc.drm_dp_mst_edid_read”hNt”auh1j† hjösh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ‘const struct drm_edid * drm_dp_mst_edid_read (struct drm_connector *connector, struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_port *port)”h]”j¤ )�”}”(hŒ�const struct drm_edid *drm_dp_mst_edid_read(struct drm_connector *connector, struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_port *port)”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hjÍÇh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjÉÇh²hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛÇh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÉÇh²hh³jÚÇh´Mubjª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjéÇh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjÉÇh²hh³jÚÇh´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjöÇh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÉÇh²hh³jÚÇh´Mubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_edid”h]”hŒdrm_edid”…”�”}”(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Œdrm_dp_mst_edid_read”sbŒc.drm_dp_mst_edid_read”†”asbuh1hhjÉÇh²hh³jÚÇh´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(Èh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÉÇh²hh³jÚÇh´Mubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj6Èh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÉÇh²hh³jÚÇh´MubjÍ )�”}”(hŒdrm_dp_mst_edid_read”h]”jÓ )�”}”(hj%Èh]”hŒdrm_dp_mst_edid_read”…”�”}”(hjGÈh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjCÈubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÉÇh²hh³jÚÇh´MubjÞ)�”}”(hŒd(struct drm_connector *connector, struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_port *port)”h]”(jä)�”}”(hŒstruct drm_connector *connector”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjbÈh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj^Èubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjoÈh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj^Èubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_connector”h]”hŒ drm_connector”…”�”}”(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.drm_dp_mst_edid_read”†”asbuh1hhj^Èubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjžÈh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj^Èubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj¬Èh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj^ÈubjÓ )�”}”(hŒ connector”h]”hŒ connector”…”�”}”(hj¹Èh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj^Èubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjZÈubjä)�”}”(hŒ#struct drm_dp_mst_topology_mgr *mgr”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Œdrm_dp_mst_topology_mgr”h]”hŒdrm_dp_mst_topology_mgr”…”�”}”(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.drm_dp_mst_edid_read”†”asbuh1hhjÎÈubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÎÈubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÎÈubjÓ )�”}”(hŒmgr”h]”hŒmgr”…”�”}”(hj)Éh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÎÈubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjZÈubjä)�”}”(hŒstruct drm_dp_mst_port *port”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjBÉh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj>Éubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjOÉh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj>Éubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_dp_mst_port”h]”hŒdrm_dp_mst_port”…”�”}”(hj`Éh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj]Éubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jbÉŒmodname”NŒ classname”Njé jì )�”}”jï ]”j#ÈŒc.drm_dp_mst_edid_read”†”asbuh1hhj>Éubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~Éh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj>Éubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjŒÉh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj>ÉubjÓ )�”}”(hŒport”h]”hŒport”…”�”}”(hj™Éh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj>Éubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjZÈubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjÉÇh²hh³jÚÇh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjÅÇh²hh³jÚÇh´Mubah}”(h]”jÀÇah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jÚÇh´MhjÂÇh²hubj )�”}”(hhh]”hÎ)�”}”(hŒget EDID for an MST port”h]”hŒget EDID for an MST port”…”�”}”(hjÃÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MhjÀÉh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÂÇh²hh³jÚÇh´Mubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jÛÉj$ jÛÉj% ‰j& ‰j' ‰uh1j˜ h²hhjösh³Nh´Nubj) )�”}”(hXz**Parameters** ``struct drm_connector *connector`` toplevel connector to get EDID for ``struct drm_dp_mst_topology_mgr *mgr`` manager for this port ``struct drm_dp_mst_port *port`` unverified pointer to a port. **Description** This returns an EDID for the port connected to a connector, It validates the pointer still exists so the caller doesn't require a reference.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjåÉh]”hŒ Parameters”…”�”}”(hjçÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjãÉubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MhjßÉubjw )�”}”(hhh]”(j| )�”}”(hŒG``struct drm_connector *connector`` toplevel connector to get EDID for ”h]”(j‚ )�”}”(hŒ#``struct drm_connector *connector``”h]”jˆ )�”}”(hjÊh]”hŒstruct drm_connector *connector”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MhjþÉubjž )�”}”(hhh]”hÎ)�”}”(hŒ"toplevel connector to get EDID for”h]”hŒ"toplevel connector to get EDID for”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÊh´MhjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjþÉubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÊh´MhjûÉubj| )�”}”(hŒ>``struct drm_dp_mst_topology_mgr *mgr`` manager for this port ”h]”(j‚ )�”}”(hŒ'``struct drm_dp_mst_topology_mgr *mgr``”h]”jˆ )�”}”(hj=Êh]”hŒ#struct drm_dp_mst_topology_mgr *mgr”…”�”}”(hj?Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj;Êubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mhj7Êubjž )�”}”(hhh]”hÎ)�”}”(hŒmanager for this port”h]”hŒmanager for this port”…”�”}”(hjVÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jRÊh´MhjSÊubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj7Êubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jRÊh´MhjûÉubj| )�”}”(hŒ?``struct drm_dp_mst_port *port`` unverified pointer to a port. ”h]”(j‚ )�”}”(hŒ ``struct drm_dp_mst_port *port``”h]”jˆ )�”}”(hjvÊh]”hŒstruct drm_dp_mst_port *port”…”�”}”(hjxÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjtÊubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MhjpÊubjž )�”}”(hhh]”hÎ)�”}”(hŒunverified pointer to a port.”h]”hŒunverified pointer to a port.”…”�”}”(hj�Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j‹Êh´MhjŒÊubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjpÊubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j‹Êh´MhjûÉubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjßÉubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj±Êh]”hŒ Description”…”�”}”(hj³Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¯Êubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MhjßÉubhÎ)�”}”(hŒŒThis returns an EDID for the port connected to a connector, It validates the pointer still exists so the caller doesn't require a reference.”h]”hŒŽThis returns an EDID for the port connected to a connector, It validates the pointer still exists so the caller doesn’t require a reference.”…”�”}”(hjÇÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MhjßÉubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjösh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ drm_dp_mst_get_edid (C function)”Œc.drm_dp_mst_get_edid”hNt”auh1j† hjösh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ†struct edid * drm_dp_mst_get_edid (struct drm_connector *connector, struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_port *port)”h]”j¤ )�”}”(hŒ„struct edid *drm_dp_mst_get_edid(struct drm_connector *connector, struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_port *port)”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjöÊh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjòÊh²hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.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 ubh)�”}”(hhh]”jÓ )�”}”(hŒedid”h]”hŒedid”…”�”}”(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Œdrm_dp_mst_get_edid”sbŒc.drm_dp_mst_get_edid”†”asbuh1hhjòÊh²hh³jËh´M ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6Ëh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjòÊh²hh³jËh´M ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjDËh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjòÊh²hh³jËh´M ubjÍ )�”}”(hŒdrm_dp_mst_get_edid”h]”jÓ )�”}”(hj3Ëh]”hŒdrm_dp_mst_get_edid”…”�”}”(hjUËh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjQËubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjòÊh²hh³jËh´M ubjÞ)�”}”(hŒd(struct drm_connector *connector, struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_port *port)”h]”(jä)�”}”(hŒstruct drm_connector *connector”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjpËh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjlËubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}Ëh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjlËubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_connector”h]”hŒ drm_connector”…”�”}”(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ï ]”j1ËŒc.drm_dp_mst_get_edid”†”asbuh1hhjlËubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬Ëh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjlËubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjºËh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjlËubjÓ )�”}”(hŒ connector”h]”hŒ connector”…”�”}”(hjÇËh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjlËubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjhËubjä)�”}”(hŒ#struct drm_dp_mst_topology_mgr *mgr”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Œdrm_dp_mst_topology_mgr”h]”hŒdrm_dp_mst_topology_mgr”…”�”}”(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ï ]”j1ËŒc.drm_dp_mst_get_edid”†”asbuh1hhjÜËubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÜËubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj*Ìh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÜËubjÓ )�”}”(hŒmgr”h]”hŒmgr”…”�”}”(hj7Ìh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÜËubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjhËubjä)�”}”(hŒstruct drm_dp_mst_port *port”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjPÌh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjLÌubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]Ìh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjLÌubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_dp_mst_port”h]”hŒdrm_dp_mst_port”…”�”}”(hjnÌh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjkÌubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jpÌŒmodname”NŒ classname”Njé jì )�”}”jï ]”j1ËŒc.drm_dp_mst_get_edid”†”asbuh1hhjLÌubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒÌh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjLÌubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjšÌh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjLÌubjÓ )�”}”(hŒport”h]”hŒport”…”�”}”(hj§Ìh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjLÌubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjhËubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjòÊh²hh³jËh´M ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œget EDID for an MST port”h]”hŒget EDID for an MST port”…”�”}”(hjÑÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.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²hhjösh³Nh´Nubj) )�”}”(hXÃ**Parameters** ``struct drm_connector *connector`` toplevel connector to get EDID for ``struct drm_dp_mst_topology_mgr *mgr`` manager for this port ``struct drm_dp_mst_port *port`` unverified pointer to a port. **Description** This function is deprecated; please use drm_dp_mst_edid_read() instead. This returns an EDID for the port connected to a connector, It validates the pointer still exists so the caller doesn't require a reference.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjóÌh]”hŒ Parameters”…”�”}”(hjõÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjñÌubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M$hjíÌubjw )�”}”(hhh]”(j| )�”}”(hŒG``struct drm_connector *connector`` toplevel connector to get EDID for ”h]”(j‚ )�”}”(hŒ#``struct drm_connector *connector``”h]”jˆ )�”}”(hjÍh]”hŒstruct drm_connector *connector”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÍubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M!hj Íubjž )�”}”(hhh]”hÎ)�”}”(hŒ"toplevel connector to get EDID for”h]”hŒ"toplevel connector to get EDID for”…”�”}”(hj+Íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j'Íh´M!hj(Íubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj Íubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j'Íh´M!hj Íubj| )�”}”(hŒ>``struct drm_dp_mst_topology_mgr *mgr`` manager for this port ”•ûh]”(j‚ )�”}”(hŒ'``struct drm_dp_mst_topology_mgr *mgr``”h]”jˆ )�”}”(hjKÍh]”hŒ#struct drm_dp_mst_topology_mgr *mgr”…”�”}”(hjMÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjIÍubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M"hjEÍubjž )�”}”(hhh]”hÎ)�”}”(hŒmanager for this port”h]”hŒmanager for this port”…”�”}”(hjdÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j`Íh´M"hjaÍubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjEÍubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j`Íh´M"hj Íubj| )�”}”(hŒ?``struct drm_dp_mst_port *port`` unverified pointer to a port. ”h]”(j‚ )�”}”(hŒ ``struct drm_dp_mst_port *port``”h]”jˆ )�”}”(hj„Íh]”hŒstruct drm_dp_mst_port *port”…”�”}”(hj†Íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj‚Íubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M#hj~Íubjž )�”}”(hhh]”hÎ)�”}”(hŒunverified pointer to a port.”h]”hŒunverified pointer to a port.”…”�”}”(hj�Íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j™Íh´M#hjšÍubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj~Íubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j™Íh´M#hj Íubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjíÌubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj¿Íh]”hŒ Description”…”�”}”(hjÁÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj½Íubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M%hjíÌubhÎ)�”}”(hŒGThis function is deprecated; please use drm_dp_mst_edid_read() instead.”h]”hŒGThis function is deprecated; please use drm_dp_mst_edid_read() instead.”…”�”}”(hjÕÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M$hjíÌubhÎ)�”}”(hŒŒThis returns an EDID for the port connected to a connector, It validates the pointer still exists so the caller doesn't require a reference.”h]”hŒŽThis returns an EDID for the port connected to a connector, It validates the pointer still exists so the caller doesn’t require a reference.”…”�”}”(hjäÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M&hjíÌubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjösh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ*drm_dp_atomic_find_time_slots (C function)”Œc.drm_dp_atomic_find_time_slots”hNt”auh1j† hjösh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ�int drm_dp_atomic_find_time_slots (struct drm_atomic_commit *state, struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_port *port, int pbn)”h]”j¤ )�”}”(hŒŽint drm_dp_atomic_find_time_slots(struct drm_atomic_commit *state, struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_port *port, int pbn)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjÎh²hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.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Œdrm_dp_atomic_find_time_slots”h]”jÓ )�”}”(hŒdrm_dp_atomic_find_time_slots”h]”hŒdrm_dp_atomic_find_time_slots”…”�”}”(hj4Îh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj0Îubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÎh²hh³j!Îh´M=ubjÞ)�”}”(hŒm(struct drm_atomic_commit *state, struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_port *port, int pbn)”h]”(jä)�”}”(hŒstruct drm_atomic_commit *state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjPÎh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjLÎubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]Îh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjLÎubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_atomic_commit”h]”hŒdrm_atomic_commit”…”�”}”(hjnÎh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjkÎubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jpÎŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj6ÎsbŒc.drm_dp_atomic_find_time_slots”†”asbuh1hhjLÎubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽÎh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjLÎubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjœÎh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjLÎubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hj©Îh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjLÎubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjHÎubjä)�”}”(hŒ#struct drm_dp_mst_topology_mgr *mgr”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Œdrm_dp_mst_topology_mgr”h]”hŒdrm_dp_mst_topology_mgr”…”�”}”(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.drm_dp_atomic_find_time_slots”†”asbuh1hhj¾Îubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþÎh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¾Îubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj Ïh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¾ÎubjÓ )�”}”(hŒmgr”h]”hŒmgr”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¾Îubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjHÎubjä)�”}”(hŒstruct drm_dp_mst_port *port”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj2Ï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Œdrm_dp_mst_port”h]”hŒdrm_dp_mst_port”…”�”}”(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.drm_dp_atomic_find_time_slots”†”asbuh1hhj.Ïubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnÏh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj.Ïubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj|Ïh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj.ÏubjÓ )�”}”(hŒport”h]”hŒport”…”�”}”(hj‰Ïh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj.Ïubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjHÎubjä)�”}”(hŒint pbn”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(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Œpbn”h]”hŒpbn”…”�”}”(hj¾Ïh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjžÏubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjHÎubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjÎh²hh³j!Îh´M=ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ$Find and add time slots to the state”h]”hŒ$Find and add time slots to the state”…”�”}”(hjèÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.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²hhjösh³Nh´Nubj) )�”}”(hXî**Parameters** ``struct drm_atomic_commit *state`` global atomic state ``struct drm_dp_mst_topology_mgr *mgr`` MST topology manager for the port ``struct drm_dp_mst_port *port`` port to find time slots for ``int pbn`` bandwidth required for the mode in PBN **Description** Allocates time slots to **port**, replacing any previous time slot allocations it may have had. Any atomic drivers which support MST must call this function in their :c:type:`drm_encoder_helper_funcs.atomic_check\(\) ` callback unconditionally to change the current time slot allocation for the new state, and ensure the MST atomic state is added whenever the state of payloads in the topology changes. Allocations set by this function are not checked against the bandwidth restraints of **mgr** until the driver calls drm_dp_mst_atomic_check(). Additionally, it is OK to call this function multiple times on the same **port** as needed. It is not OK however, to call this function and drm_dp_atomic_release_time_slots() in the same atomic check phase. See also: drm_dp_atomic_release_time_slots() drm_dp_mst_atomic_check() **Return** Total slots in the atomic state assigned for this port, or a negative error code if the port no longer exists”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj Ðh]”hŒ Parameters”…”�”}”(hj Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÐubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MAhjÐubjw )�”}”(hhh]”(j| )�”}”(hŒ8``struct drm_atomic_commit *state`` global atomic state ”h]”(j‚ )�”}”(hŒ#``struct drm_atomic_commit *state``”h]”jˆ )�”}”(hj)Ðh]”hŒstruct drm_atomic_commit *state”…”�”}”(hj+Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj'Ðubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M>hj#Ðubjž )�”}”(hhh]”hÎ)�”}”(hŒglobal atomic state”h]”hŒglobal atomic state”…”�”}”(hjBÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j>Ðh´M>hj?Ðubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj#Ðubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j>Ðh´M>hj Ðubj| )�”}”(hŒJ``struct drm_dp_mst_topology_mgr *mgr`` MST topology manager for the port ”h]”(j‚ )�”}”(hŒ'``struct drm_dp_mst_topology_mgr *mgr``”h]”jˆ )�”}”(hjbÐh]”hŒ#struct drm_dp_mst_topology_mgr *mgr”…”�”}”(hjdÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj`Ðubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M?hj\Ðubjž )�”}”(hhh]”hÎ)�”}”(hŒ!MST topology manager for the port”h]”hŒ!MST topology manager for the port”…”�”}”(hj{Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jwÐh´M?hjxÐubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj\Ðubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jwÐh´M?hj Ðubj| )�”}”(hŒ=``struct drm_dp_mst_port *port`` port to find time slots for ”h]”(j‚ )�”}”(hŒ ``struct drm_dp_mst_port *port``”h]”jˆ )�”}”(hj›Ðh]”hŒstruct drm_dp_mst_port *port”…”�”}”(hj�Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj™Ðubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M@hj•Ðubjž )�”}”(hhh]”hÎ)�”}”(hŒport to find time slots for”h]”hŒport to find time slots for”…”�”}”(hj´Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j°Ðh´M@hj±Ðubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj•Ðubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j°Ðh´M@hj Ðubj| )�”}”(hŒ3``int pbn`` bandwidth required for the mode in PBN ”h]”(j‚ )�”}”(hŒ ``int pbn``”h]”jˆ )�”}”(hjÔÐh]”hŒint pbn”…”�”}”(hjÖÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÒÐubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MAhjÎÐubjž )�”}”(hhh]”hÎ)�”}”(hŒ&bandwidth required for the mode in PBN”h]”hŒ&bandwidth required for the mode in PBN”…”�”}”(hjíÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jéÐh´MAhjêÐubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÎÐubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jéÐh´MAhj Ðubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÐubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjÑh]”hŒ Description”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj Ñubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MChjÐubhÎ)�”}”(hX¬Allocates time slots to **port**, replacing any previous time slot allocations it may have had. Any atomic drivers which support MST must call this function in their :c:type:`drm_encoder_helper_funcs.atomic_check\(\) ` callback unconditionally to change the current time slot allocation for the new state, and ensure the MST atomic state is added whenever the state of payloads in the topology changes.”h]”(hŒAllocates time slots to ”…”�”}”(hj%Ñh²hh³Nh´Nubj3 )�”}”(hŒ**port**”h]”hŒport”…”�”}”(hj-Ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj%ÑubhŒ†, replacing any previous time slot allocations it may have had. Any atomic drivers which support MST must call this function in their ”…”�”}”(hj%Ñh²hh³Nh´Nubh)�”}”(hŒN:c:type:`drm_encoder_helper_funcs.atomic_check\(\) `”h]”jˆ )�”}”(hjAÑh]”hŒ'drm_encoder_helper_funcs.atomic_check()”…”�”}”(hjCÑh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj?Ñubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_encoder_helper_funcs”uh1hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MBhj%ÑubhŒ¸ callback unconditionally to change the current time slot allocation for the new state, and ensure the MST atomic state is added whenever the state of payloads in the topology changes.”…”�”}”(hj%Ñh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j^Ñh´MBhjÐubhÎ)�”}”(hŒŽAllocations set by this function are not checked against the bandwidth restraints of **mgr** until the driver calls drm_dp_mst_atomic_check().”h]”(hŒUAllocations set by this function are not checked against the bandwidth restraints of ”…”�”}”(hjiÑh²hh³Nh´Nubj3 )�”}”(hŒ**mgr**”h]”hŒmgr”…”�”}”(hjqÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjiÑubhŒ2 until the driver calls drm_dp_mst_atomic_check().”…”�”}”(hjiÑh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MHhjÐubhÎ)�”}”(hŒÎAdditionally, it is OK to call this function multiple times on the same **port** as needed. It is not OK however, to call this function and drm_dp_atomic_release_time_slots() in the same atomic check phase.”h]”(hŒHAdditionally, it is OK to call this function multiple times on the same ”…”�”}”(hjŠÑh²hh³Nh´Nubj3 )�”}”(hŒ**port**”h]”hŒport”…”�”}”(hj’Ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjŠÑubhŒ~ as needed. It is not OK however, to call this function and drm_dp_atomic_release_time_slots() in the same atomic check phase.”…”�”}”(hjŠÑh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MKhjÐubhÎ)�”}”(hŒFSee also: drm_dp_atomic_release_time_slots() drm_dp_mst_atomic_check()”h]”hŒFSee also: drm_dp_atomic_release_time_slots() drm_dp_mst_atomic_check()”…”�”}”(hj«Ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MOhjÐubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj¼Ñh]”hŒReturn”…”�”}”(hj¾Ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjºÑubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MShjÐubhÎ)�”}”(hŒmTotal slots in the atomic state assigned for this port, or a negative error code if the port no longer exists”h]”hŒmTotal slots in the atomic state assigned for this port, or a negative error code if the port no longer exists”…”�”}”(hjÒÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MThjÐubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjösh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ-drm_dp_atomic_release_time_slots (C function)”Œ"c.drm_dp_atomic_release_time_slots”hNt”auh1j† hjösh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ‰int drm_dp_atomic_release_time_slots (struct drm_atomic_commit *state, struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_port *port)”h]”j¤ )�”}”(hŒˆint drm_dp_atomic_release_time_slots(struct drm_atomic_commit *state, struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_port *port)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjýÑh²hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.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Œ drm_dp_atomic_release_time_slots”h]”jÓ )�”}”(hŒ drm_dp_atomic_release_time_slots”h]”hŒ drm_dp_atomic_release_time_slots”…”�”}”(hj"Òh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÒubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjýÑh²hh³jÒh´M˜ubjÞ)�”}”(hŒd(struct drm_atomic_commit *state, struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_port *port)”h]”(jä)�”}”(hŒstruct drm_atomic_commit *state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj>Òh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj:Òubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKÒh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj:Òubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_atomic_commit”h]”hŒdrm_atomic_commit”…”�”}”(hj\Òh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjYÒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j^ÒŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj$ÒsbŒ"c.drm_dp_atomic_release_time_slots”†”asbuh1hhj:Òubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|Òh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj:Òubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjŠÒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj:ÒubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hj—Òh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj:Òubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj6Òubjä)�”}”(hŒ#struct drm_dp_mst_topology_mgr *mgr”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Œdrm_dp_mst_topology_mgr”h]”hŒdrm_dp_mst_topology_mgr”…”�”}”(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ï ]”jxÒŒ"c.drm_dp_atomic_release_time_slots”†”asbuh1hhj¬Òubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjìÒh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¬Òubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjúÒh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¬ÒubjÓ )�”}”(hŒmgr”h]”hŒmgr”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¬Òubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj6Òubjä)�”}”(hŒstruct drm_dp_mst_port *port”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Œdrm_dp_mst_port”h]”hŒdrm_dp_mst_port”…”�”}”(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ï ]”jxÒŒ"c.drm_dp_atomic_release_time_slots”†”asbuh1hhjÓubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\Óh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÓubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjjÓh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÓubjÓ )�”}”(hŒport”h]”hŒport”…”�”}”(hjwÓh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÓubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj6Òubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjýÑh²hh³jÒh´M˜ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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ŒRelease allocated time slots”h]”hŒRelease allocated time slots”…”�”}”(hj¡Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.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²hhjösh³Nh´Nubj) )�”}”(hX•**Parameters** ``struct drm_atomic_commit *state`` global atomic state ``struct drm_dp_mst_topology_mgr *mgr`` MST topology manager for the port ``struct drm_dp_mst_port *port`` The port to release the time slots from **Description** Releases any time slots that have been allocated to a port in the atomic state. Any atomic drivers which support MST must call this function unconditionally in their :c:type:`drm_connector_helper_funcs.atomic_check\(\) ` callback. This helper will check whether time slots would be released by the new state and respond accordingly, along with ensuring the MST state is always added to the atomic state whenever a new state would modify the state of payloads on the topology. It is OK to call this even if **port** has been removed from the system. Additionally, it is OK to call this function multiple times on the same **port** as needed. It is not OK however, to call this function and drm_dp_atomic_find_time_slots() on the same **port** in a single atomic check phase. See also: drm_dp_atomic_find_time_slots() drm_dp_mst_atomic_check() **Return** 0 on success, negative error code otherwise”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjÃÓh]”hŒ Parameters”…”�”}”(hjÅÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÁÓubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mœhj½Óubjw )�”}”(hhh]”(j| )�”}”(hŒ8``struct drm_atomic_commit *state`` global atomic state ”h]”(j‚ )�”}”(hŒ#``struct drm_atomic_commit *state``”h]”jˆ )�”}”(hjâÓh]”hŒstruct drm_atomic_commit *state”…”�”}”(hjäÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjàÓubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M™hjÜÓubjž )�”}”(hhh]”hÎ)�”}”(hŒglobal atomic state”h]”hŒglobal atomic state”…”�”}”(hjûÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j÷Óh´M™hjøÓubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÜÓubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j÷Óh´M™hjÙÓubj| )�”}”(hŒJ``struct drm_dp_mst_topology_mgr *mgr`` MST topology manager for the port ”h]”(j‚ )�”}”(hŒ'``struct drm_dp_mst_topology_mgr *mgr``”h]”jˆ )�”}”(hjÔh]”hŒ#struct drm_dp_mst_topology_mgr *mgr”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÔubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MšhjÔubjž )�”}”(hhh]”hÎ)�”}”(hŒ!MST topology manager for the port”h]”hŒ!MST topology manager for the port”…”�”}”(hj4Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j0Ôh´Mšhj1Ôubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÔubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j0Ôh´MšhjÙÓubj| )�”}”(hŒI``struct drm_dp_mst_port *port`` The port to release the time slots from ”h]”(j‚ )�”}”(hŒ ``struct drm_dp_mst_port *port``”h]”jˆ )�”}”(hjTÔh]”hŒstruct drm_dp_mst_port *port”…”�”}”(hjVÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjRÔubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M›hjNÔubjž )�”}”(hhh]”hÎ)�”}”(hŒ'The port to release the time slots from”h]”hŒ'The port to release the time slots from”…”�”}”(hjmÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jiÔh´M›hjjÔubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjNÔubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jiÔh´M›hjÙÓubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj½ÓubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj�Ôh]”hŒ Description”…”�”}”(hj‘Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj�Ôubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M�hj½ÓubhÎ)�”}”(hX÷Releases any time slots that have been allocated to a port in the atomic state. Any atomic drivers which support MST must call this function unconditionally in their :c:type:`drm_connector_helper_funcs.atomic_check\(\) ` callback. This helper will check whether time slots would be released by the new state and respond accordingly, along with ensuring the MST state is always added to the atomic state whenever a new state would modify the state of payloads on the topology.”h]”(hŒ¦Releases any time slots that have been allocated to a port in the atomic state. Any atomic drivers which support MST must call this function unconditionally in their ”…”�”}”(hj¥Ôh²hh³Nh´Nubh)�”}”(hŒR:c:type:`drm_connector_helper_funcs.atomic_check\(\) `”h]”jˆ )�”}”(hj¯Ôh]”hŒ)drm_connector_helper_funcs.atomic_check()”…”�”}”(hj±Ôh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj­Ôubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_connector_helper_funcs”uh1hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mœhj¥ÔubhŒÿ callback. This helper will check whether time slots would be released by the new state and respond accordingly, along with ensuring the MST state is always added to the atomic state whenever a new state would modify the state of payloads on the topology.”…”�”}”(hj¥Ôh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÌÔh´Mœhj½ÓubhÎ)�”}”(hX)It is OK to call this even if **port** has been removed from the system. Additionally, it is OK to call this function multiple times on the same **port** as needed. It is not OK however, to call this function and drm_dp_atomic_find_time_slots() on the same **port** in a single atomic check phase.”h]”(hŒIt is OK to call this even if ”…”�”}”(hj×Ôh²hh³Nh´Nubj3 )�”}”(hŒ**port**”h]”hŒport”…”�”}”(hjßÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj×ÔubhŒk has been removed from the system. Additionally, it is OK to call this function multiple times on the same ”…”�”}”(hj×Ôh²hh³Nh´Nubj3 )�”}”(hŒ**port**”h]”hŒport”…”�”}”(hjñÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj×ÔubhŒh as needed. It is not OK however, to call this function and drm_dp_atomic_find_time_slots() on the same ”…”�”}”(hj×Ôh²hh³Nh´Nubj3 )�”}”(hŒ**port**”h]”hŒport”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj×ÔubhŒ in a single atomic check phase.”…”�”}”(hj×Ôh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M¤hj½ÓubhÎ)�”}”(hŒCSee also: drm_dp_atomic_find_time_slots() drm_dp_mst_atomic_check()”h]”hŒCSee also: drm_dp_atomic_find_time_slots() drm_dp_mst_atomic_check()”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mªhj½ÓubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj-Õh]”hŒReturn”…”�”}”(hj/Õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj+Õubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M®hj½ÓubhÎ)�”}”(hŒ+0 on success, negative error code otherwise”h]”hŒ+0 on success, negative error code otherwise”…”�”}”(hjCÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M¯hj½Óubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjösh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ+drm_dp_mst_atomic_setup_commit (C function)”Œ c.drm_dp_mst_atomic_setup_commit”hNt”auh1j† hjösh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒDint drm_dp_mst_atomic_setup_commit (struct drm_atomic_commit *state)”h]”j¤ )�”}”(hŒCint drm_dp_mst_atomic_setup_commit(struct drm_atomic_commit *state)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjrÕh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjnÕh²hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mìubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Õh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjnÕh²hh³j€Õh´MìubjÍ )�”}”(hŒdrm_dp_mst_atomic_setup_commit”h]”jÓ )�”}”(hŒdrm_dp_mst_atomic_setup_commit”h]”hŒdrm_dp_mst_atomic_setup_commit”…”�”}”(hj“Õh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj�Õubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjnÕh²hh³j€Õh´MìubjÞ)�”}”(hŒ!(struct drm_atomic_commit *state)”h]”jä)�”}”(hŒstruct drm_atomic_commit *state”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Œdrm_atomic_commit”h]”hŒdrm_atomic_commit”…”�”}”(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%)�”}”jj•ÕsbŒ c.drm_dp_mst_atomic_setup_commit”†”asbuh1hhj«Õubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjíÕh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj«Õubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjûÕh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj«ÕubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj«Õubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj§Õubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjnÕh²hh³j€Õh´Mìubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjjÕh²hh³j€Õh´Mìubah}”(h]”jeÕah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j€Õh´MìhjgÕh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ!setup_commit hook for MST helpers”h]”hŒ!setup_commit hook for MST helpers”…”�”}”(hj2Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mìhj/Öh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjgÕh²hh³j€Õh´Mìubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jJÖj$ jJÖj% ‰j& ‰j' ‰uh1j˜ h²hhjösh³Nh´Nubj) )�”}”(hXÐ**Parameters** ``struct drm_atomic_commit *state`` global atomic state **Description** This function saves all of the :c:type:`drm_crtc_commit` structs in an atomic state that touch any CRTCs currently assigned to an MST topology. Drivers must call this hook from their :c:type:`drm_mode_config_helper_funcs.atomic_commit_setup ` hook. **Return** 0 if all CRTC commits were retrieved successfully, negative error code otherwise”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjTÖh]”hŒ Parameters”…”�”}”(hjVÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjRÖubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MðhjNÖubjw )�”}”(hhh]”j| )�”}”(hŒ8``struct drm_atomic_commit *state`` global atomic state ”h]”(j‚ )�”}”(hŒ#``struct drm_atomic_commit *state``”h]”jˆ )�”}”(hjsÖh]”hŒstruct drm_atomic_commit *state”…”�”}”(hjuÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjqÖubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MíhjmÖubjž )�”}”(hhh]”hÎ)�”}”(hŒglobal atomic state”h]”hŒglobal atomic state”…”�”}”(hjŒÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jˆÖh´Míhj‰Öubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjmÖubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jˆÖh´MíhjjÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjNÖubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj®Öh]”hŒ Description”…”�”}”(hj°Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¬Öubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MïhjNÖubhÎ)�”}”(hXThis function saves all of the :c:type:`drm_crtc_commit` structs in an atomic state that touch any CRTCs currently assigned to an MST topology. Drivers must call this hook from their :c:type:`drm_mode_config_helper_funcs.atomic_commit_setup ` hook.”h]”(hŒThis function saves all of the ”…”�”}”(hjÄÖh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_crtc_commit`”h]”jˆ )�”}”(hjÎÖh]”hŒdrm_crtc_commit”…”�”}”(hjÐÖh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÌÖubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_crtc_commit”uh1hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MîhjÄÖubhŒ structs in an atomic state that touch any CRTCs currently assigned to an MST topology. Drivers must call this hook from their ”…”�”}”(hjÄÖh²hh³Nh´Nubh)�”}”(hŒY:c:type:`drm_mode_config_helper_funcs.atomic_commit_setup `”h]”jˆ )�”}”(hjòÖh]”hŒ0drm_mode_config_helper_funcs.atomic_commit_setup”…”�”}”(hjôÖh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjðÖubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_mode_config_helper_funcs”uh1hh³jëÖh´MîhjÄÖubhŒ hook.”…”�”}”(hjÄÖh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jëÖh´MîhjNÖubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj×h]”hŒReturn”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj×ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MòhjNÖubhÎ)�”}”(hŒP0 if all CRTC commits were retrieved successfully, negative error code otherwise”h]”hŒP0 if all CRTC commits were retrieved successfully, negative error code otherwise”…”�”}”(hj1×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MóhjNÖubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjösh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ4drm_dp_mst_atomic_wait_for_dependencies (C function)”Œ)c.drm_dp_mst_atomic_wait_for_dependencies”hNt”auh1j† hjösh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒNvoid drm_dp_mst_atomic_wait_for_dependencies (struct drm_atomic_commit *state)”h]”j¤ )�”}”(hŒMvoid drm_dp_mst_atomic_wait_for_dependencies(struct drm_atomic_commit *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj`×h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj\×h²hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjo×h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj\×h²hh³jn×h´MubjÍ )�”}”(hŒ'drm_dp_mst_atomic_wait_for_dependencies”h]”jÓ )�”}”(hŒ'drm_dp_mst_atomic_wait_for_dependencies”h]”hŒ'drm_dp_mst_atomic_wait_for_dependencies”…”�”}”(hj�×h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj}×ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj\×h²hh³jn×h´MubjÞ)�”}”(hŒ!(struct drm_atomic_commit *state)”h]”jä)�”}”(hŒstruct drm_atomic_commit *state”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Œdrm_atomic_commit”h]”hŒdrm_atomic_commit”…”�”}”(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%)�”}”jjƒ×sbŒ)c.drm_dp_mst_atomic_wait_for_dependencies”†”asbuh1hhj™×ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛ×h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj™×ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjé×h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj™×ubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hjö×h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj™×ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj•×ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj\×h²hh³jn×h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjX×h²hh³jn×h´Mubah}”(h]”jS×ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jn×h´MhjU×h²hubj )�”}”(hhh]”hÎ)�”}”(hŒPWait for all pending commits on MST topologies, prepare new MST state for commit”h]”hŒPWait for all pending commits on MST topologies, prepare new MST state for commit”…”�”}”(hj Øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MhjØh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjU×h²hh³jn×h´Mubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j8Øj$ j8Øj% ‰j& ‰j' ‰uh1j˜ h²hhjösh³Nh´Nubj) )�”}”(hXœ**Parameters** ``struct drm_atomic_commit *state`` global atomic state **Description** Goes through any MST topologies in this atomic state, and waits for any pending commits which touched CRTCs that were/are on an MST topology to be programmed to hardware and flipped to before returning. This is to prevent multiple non-blocking commits affecting an MST topology from racing with eachother by forcing them to be executed sequentially in situations where the only resources the modeset objects in these commits share are an MST topology. This function also prepares the new MST state for commit by performing some state preparation which can't be done until this point, such as reading back the final VC start slots (which are determined at commit-time) from the previous state. All MST drivers must call this function after calling drm_atomic_helper_wait_for_dependencies(), or whatever their equivalent of that is.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjBØh]”hŒ Parameters”…”�”}”(hjDØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj@Øubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mhj<Øubjw )�”}”(hhh]”j| )�”}”(hŒ8``struct drm_atomic_commit *state`` global atomic state ”h]”(j‚ )�”}”(hŒ#``struct drm_atomic_commit *state``”h]”jˆ )�”}”(hjaØh]”hŒstruct drm_atomic_commit *state”…”�”}”(hjcØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj_Øubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mhj[Øubjž )�”}”(hhh]”hÎ)�”}”(hŒglobal atomic state”h]”hŒglobal atomic state”…”�”}”(hjzØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jvØh´MhjwØubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj[Øubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jvØh´MhjXØubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj<ØubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjœØh]”hŒ Description”…”�”}”(hjžØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjšØubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mhj<ØubhÎ)�”}”(hXÃGoes through any MST topologies in this atomic state, and waits for any pending commits which touched CRTCs that were/are on an MST topology to be programmed to hardware and flipped to before returning. This is to prevent multiple non-blocking commits affecting an MST topology from racing with eachother by forcing them to be executed sequentially in situations where the only resources the modeset objects in these commits share are an MST topology.”h]”hXÃGoes through any MST topologies in this atomic state, and waits for any pending commits which touched CRTCs that were/are on an MST topology to be programmed to hardware and flipped to before returning. This is to prevent multiple non-blocking commits affecting an MST topology from racing with eachother by forcing them to be executed sequentially in situations where the only resources the modeset objects in these commits share are an MST topology.”…”�”}”(hj²Øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mhj<ØubhÎ)�”}”(hŒðThis function also prepares the new MST state for commit by performing some state preparation which can't be done until this point, such as reading back the final VC start slots (which are determined at commit-time) from the previous state.”h]”hŒòThis function also prepares the new MST state for commit by performing some state preparation which can’t be done until this point, such as reading back the final VC start slots (which are determined at commit-time) from the previous state.”…”�”}”(hjÁØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M hj<ØubhÎ)�”}”(hŒ‰All MST drivers must call this function after calling drm_atomic_helper_wait_for_dependencies(), or whatever their equivalent of that is.”h]”hŒ‰All MST drivers must call this function after calling drm_atomic_helper_wait_for_dependencies(), or whatever their equivalent of that is.”…”�”}”(hjÐØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M$hj<Øubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjösh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ.drm_dp_mst_root_conn_atomic_check (C function)”Œ#c.drm_dp_mst_root_conn_atomic_check”hNt”auh1j† hjösh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒwint drm_dp_mst_root_conn_atomic_check (struct drm_connector_state *new_conn_state, struct drm_dp_mst_topology_mgr *mgr)”h]”j¤ )�”}”(hŒvint drm_dp_mst_root_conn_atomic_check(struct drm_connector_state *new_conn_state, struct drm_dp_mst_topology_mgr *mgr)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjÿØh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjûØh²hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MIubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjûØh²hh³j Ùh´MIubjÍ )�”}”(hŒ!drm_dp_mst_root_conn_atomic_check”h]”jÓ )�”}”(hŒ!drm_dp_mst_root_conn_atomic_check”h]”hŒ!drm_dp_mst_root_conn_atomic_check”…”�”}”(hj Ùh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÙubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjûØh²hh³j Ùh´MIubjÞ)�”}”(hŒQ(struct drm_connector_state *new_conn_state, struct drm_dp_mst_topology_mgr *mgr)”h]”(jä)�”}”(hŒ*struct drm_connector_state *new_conn_state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj<Ùh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj8Ùubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIÙh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj8Ùubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_connector_state”h]”hŒdrm_connector_state”…”�”}”(hjZÙh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjWÙubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j\ÙŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj"ÙsbŒ#c.drm_dp_mst_root_conn_atomic_check”†”asbuh1hhj8Ùubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjzÙh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj8Ùubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjˆÙh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj8ÙubjÓ )�”}”(hŒnew_conn_state”h]”hŒnew_conn_state”…”�”}”(hj•Ùh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj8Ùubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj4Ùubjä)�”}”(hŒ#struct drm_dp_mst_topology_mgr *mgr”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Œdrm_dp_mst_topology_mgr”h]”hŒdrm_dp_mst_topology_mgr”…”�”}”(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ï ]”jvÙŒ#c.drm_dp_mst_root_conn_atomic_check”†”asbuh1hhjªÙubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjêÙh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjªÙubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjøÙh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjªÙubjÓ )�”}”(hŒmgr”h]”hŒmgr”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjªÙubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj4Ùubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjûØh²hh³j Ùh´MIubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj÷Øh²hh³j Ùh´MIubah}”(h]”jòØah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j Ùh´MIhjôØh²hubj )�”}”(hhh]”hÎ)�”}”(hŒFSerialize CRTC commits on MST-capable connectors operating in SST mode”h]”hŒFSerialize CRTC commits on MST-capable connectors operating in SST mode”…”�”}”(hj/Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MIhj,Úh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjôØh²hh³j Ùh´MIubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jGÚj$ jGÚj% ‰j& ‰j' ‰uh1j˜ h²hhjösh³Nh´Nubj) )�”}”(hX¤**Parameters** ``struct drm_connector_state *new_conn_state`` The new connector state of the :c:type:`drm_connector` ``struct drm_dp_mst_topology_mgr *mgr`` The MST topology manager for the :c:type:`drm_connector` **Description** Since MST uses fake :c:type:`drm_encoder` structs, the generic atomic modesetting code isn't able to serialize non-blocking commits happening on the real DP connector of an MST topology switching into/away from MST mode - as the CRTC on the real DP connector and the CRTCs on the connector's MST topology will never share the same :c:type:`drm_encoder`. This function takes care of this serialization issue, by checking a root MST connector's atomic state to determine if it is about to have a modeset - and then pulling in the MST topology state if so, along with adding any relevant CRTCs to :c:type:`drm_dp_mst_topology_state.pending_crtc_mask `. Drivers implementing MST must call this function from the :c:type:`drm_connector_helper_funcs.atomic_check ` hook of any physical DP :c:type:`drm_connector` capable of driving MST sinks. **Return** 0 on success, negative error code otherwise”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjQÚh]”hŒ Parameters”…”�”}”(hjSÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjOÚubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MMhjKÚubjw )�”}”(hhh]”(j| )�”}”(hŒf``struct drm_connector_state *new_conn_state`` The new connector state of the :c:type:`drm_connector` ”h]”(j‚ )�”}”(hŒ.``struct drm_connector_state *new_conn_state``”h]”jˆ )�”}”(hjpÚh]”hŒ*struct drm_connector_state *new_conn_state”…”�”}”(hjrÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjnÚubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MKhjjÚubjž )�”}”(hhh]”hÎ)�”}”(hŒ6The new connector state of the :c:type:`drm_connector`”h]”(hŒThe new connector state of the ”…”�”}”(hj‰Úh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_connector`”h]”jˆ )�”}”(hj“Úh]”hŒ drm_connector”…”�”}”(hj•Úh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj‘Úubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œ drm_connector”uh1hh³j…Úh´MKhj‰Úubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j…Úh´MKhj†Úubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjjÚubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j…Úh´MKhjgÚubj| )�”}”(hŒa``struct drm_dp_mst_topology_mgr *mgr`` The MST topology manager for the :c:type:`drm_connector` ”h]”(j‚ )�”}”(hŒ'``struct drm_dp_mst_topology_mgr *mgr``”h]”jˆ )�”}”(hjÈÚh]”hŒ#struct drm_dp_mst_topology_mgr *mgr”…”�”}”(hjÊÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÆÚubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MLhjÂÚubjž )�”}”(hhh]”hÎ)�”}”(hŒ8The MST topology manager for the :c:type:`drm_connector`”h]”(hŒ!The MST topology manager for the ”…”�”}”(hjáÚh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_connector`”h]”jˆ )�”}”(hjëÚh]”hŒ drm_connector”…”�”}”(hjíÚh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjéÚubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œ drm_connector”uh1hh³jÝÚh´MLhjáÚubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÝÚh´MLhjÞÚubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÂÚubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÝÚh´MLhjgÚubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjKÚubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj"Ûh]”hŒ Description”…”�”}”(hj$Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj Ûubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MNhjKÚubhÎ)�”}”(hXaSince MST uses fake :c:type:`drm_encoder` structs, the generic atomic modesetting code isn't able to serialize non-blocking commits happening on the real DP connector of an MST topology switching into/away from MST mode - as the CRTC on the real DP connector and the CRTCs on the connector's MST topology will never share the same :c:type:`drm_encoder`.”h]”(hŒSince MST uses fake ”…”�”}”(hj8Ûh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_encoder`”h]”jˆ )�”}”(hjBÛh]”hŒ drm_encoder”…”�”}”(hjDÛh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj@Ûubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œ drm_encoder”uh1hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MMhj8ÛubhX& structs, the generic atomic modesetting code isn’t able to serialize non-blocking commits happening on the real DP connector of an MST topology switching into/away from MST mode - as the CRTC on the real DP connector and the CRTCs on the connector’s MST topology will never share the same ”…”�”}”(hj8Ûh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_encoder`”h]”jˆ )�”}”(hjfÛh]”hŒ drm_encoder”…”�”}”(hjhÛh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjdÛubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œ drm_encoder”uh1hh³j_Ûh´MMhj8ÛubhŒ.”…”�”}”(hj8Ûh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j_Ûh´MMhjKÚubhÎ)�”}”(hXBThis function takes care of this serialization issue, by checking a root MST connector's atomic state to determine if it is about to have a modeset - and then pulling in the MST topology state if so, along with adding any relevant CRTCs to :c:type:`drm_dp_mst_topology_state.pending_crtc_mask `.”h]”(hŒòThis function takes care of this serialization issue, by checking a root MST connector’s atomic state to determine if it is about to have a modeset - and then pulling in the MST topology state if so, along with adding any relevant CRTCs to ”…”�”}”(hj�Ûh²hh³Nh´Nubh)�”}”(hŒQ:c:type:`drm_dp_mst_topology_state.pending_crtc_mask `”h]”jˆ )�”}”(hj—Ûh]”hŒ+drm_dp_mst_topology_state.pending_crtc_mask”…”�”}”(hj™Ûh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj•Ûubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_topology_state”uh1hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MRhj�ÛubhŒ.”…”�”}”(hj�Ûh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j´Ûh´MRhjKÚubhÎ)�”}”(hŒÖDrivers implementing MST must call this function from the :c:type:`drm_connector_helper_funcs.atomic_check ` hook of any physical DP :c:type:`drm_connector` capable of driving MST sinks.”h]”(hŒ:Drivers implementing MST must call this function from the ”…”�”}”(hj¿Ûh²hh³Nh´Nubh)�”}”(hŒN:c:type:`drm_connector_helper_funcs.atomic_check `”h]”jˆ )�”}”(hjÉÛh]”hŒ'drm_connector_helper_funcs.atomic_check”…”�”}”(hjËÛh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÇÛubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_connector_helper_funcs”uh1hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MVhj¿ÛubhŒ hook of any physical DP ”…”�”}”(hj¿Ûh²hh³Nh´Nubh)�”}”(hŒ:c:type:`drm_connector`”h]”jˆ )�”}”(hjíÛh]”hŒ drm_connector”…”�”}”(hjïÛh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjëÛubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œ drm_connector”uh1hh³jæÛh´MVhj¿ÛubhŒ capable of driving MST sinks.”…”�”}”(hj¿Ûh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jæÛh´MVhjKÚubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjÜh]”hŒReturn”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÜubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MZhjKÚubhÎ)�”}”(hŒ+0 on success, negative error code otherwise”h]”hŒ+0 on success, negative error code otherwise”…”�”}”(hj,Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M[hjKÚubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjösh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ$drm_dp_mst_update_slots (C function)”Œc.drm_dp_mst_update_slots”hNt”auh1j† hjösh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒevoid drm_dp_mst_update_slots (struct drm_dp_mst_topology_state *mst_state, uint8_t link_encoding_cap)”h]”j¤ )�”}”(hŒdvoid drm_dp_mst_update_slots(struct drm_dp_mst_topology_state *mst_state, uint8_t link_encoding_cap)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj[Üh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjWÜh²hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M„ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjjÜh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjWÜh²hh³jiÜh´M„ubjÍ )�”}”(hŒdrm_dp_mst_update_slots”h]”jÓ )�”}”(hŒdrm_dp_mst_update_slots”h]”hŒdrm_dp_mst_update_slots”…”�”}”(hj|Üh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjxÜubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjWÜh²hh³jiÜh´M„ubjÞ)�”}”(hŒH(struct drm_dp_mst_topology_state *mst_state, uint8_t link_encoding_cap)”h]”(jä)�”}”(hŒ+struct drm_dp_mst_topology_state *mst_state”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Œdrm_dp_mst_topology_state”h]”hŒdrm_dp_mst_topology_state”…”�”}”(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%)�”}”jj~ÜsbŒc.drm_dp_mst_update_slots”†”asbuh1hhj”Üubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖÜh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj”Üubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjäÜh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj”ÜubjÓ )�”}”(hŒ mst_state”h]”hŒ mst_state”…”�”}”(hjñÜh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj”Üubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj�Üubjä)�”}”(hŒuint8_t link_encoding_cap”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒuint8_t”h]”hŒuint8_t”…”�”}”(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.drm_dp_mst_update_slots”†”asbuh1hhjÝubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+Ýh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÝubjÓ )�”}”(hŒlink_encoding_cap”h]”hŒlink_encoding_cap”…”�”}”(hj9Ýh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÝubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj�Üubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjWÜh²hh³jiÜh´M„ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjSÜh²hh³jiÜh´M„ubah}”(h]”jNÜah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jiÜh´M„hjPÜh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ8updates the slot info depending on the DP ecoding format”h]”hŒ8updates the slot info depending on the DP ecoding format”…”�”}”(hjcÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M„hj`Ýh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjPÜh²hh³jiÜh´M„ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j{Ýj$ j{Ýj% ‰j& ‰j' ‰uh1j˜ h²hhjösh³Nh´Nubj) )�”}”(hŒ•**Parameters** ``struct drm_dp_mst_topology_state *mst_state`` mst_state to update ``uint8_t link_encoding_cap`` the ecoding format on the link”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj…Ýh]”hŒ Parameters”…”�”}”(hj‡Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjƒÝubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MˆhjÝubjw )�”}”(hhh]”(j| )�”}”(hŒD``struct drm_dp_mst_topology_state *mst_state`` mst_state to update ”h]”(j‚ )�”}”(hŒ/``struct drm_dp_mst_topology_state *mst_state``”h]”jˆ )�”}”(hj¤Ýh]”hŒ+struct drm_dp_mst_topology_state *mst_state”…”�”}”(hj¦Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¢Ýubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M…hjžÝubjž )�”}”(hhh]”hÎ)�”}”(hŒmst_state to update”h]”hŒmst_state to update”…”�”}”(hj½Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¹Ýh´M…hjºÝubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjžÝubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¹Ýh´M…hj›Ýubj| )�”}”(hŒ<``uint8_t link_encoding_cap`` the ecoding format on the link”h]”(j‚ )�”}”(hŒ``uint8_t link_encoding_cap``”h]”jˆ )�”}”(hjÝÝh]”hŒuint8_t link_encoding_cap”…”�”}”(hjßÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÛÝubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M‡hj×Ýubjž )�”}”(hhh]”hÎ)�”}”(hŒthe ecoding format on the link”h]”hŒthe ecoding format on the link”…”�”}”(hjöÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M†hjóÝubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj×Ýubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jòÝh´M‡hj›Ýubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÝubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjösh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ$drm_dp_check_act_status (C function)”Œc.drm_dp_check_act_status”hNt”auh1j† hjösh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒAint drm_dp_check_act_status (struct drm_dp_mst_topology_mgr *mgr)”h]”j¤ )�”}”(hŒ@int drm_dp_check_act_status(struct drm_dp_mst_topology_mgr *mgr)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj7Þh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj3Þh²hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M™ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFÞh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj3Þh²hh³jEÞh´M™ubjÍ )�”}”(hŒdrm_dp_check_act_status”h]”jÓ )�”}”(hŒdrm_dp_check_act_status”h]”hŒdrm_dp_check_act_status”…”�”}”(hjXÞh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjTÞubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj3Þh²hh³jEÞh´M™ubjÞ)�”}”(hŒ%(struct drm_dp_mst_topology_mgr *mgr)”h]”jä)�”}”(hŒ#struct drm_dp_mst_topology_mgr *mgr”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjtÞh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjpÞubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Þh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjpÞubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_dp_mst_topology_mgr”h]”hŒdrm_dp_mst_topology_mgr”…”�”}”(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%)�”}”jjZÞsbŒc.drm_dp_check_act_status”†”asbuh1hhjpÞubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²Þh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjpÞubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÀÞh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjpÞubjÓ )�”}”(hŒmgr”h]”hŒmgr”…”�”}”(hjÍÞh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjpÞubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjlÞubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj3Þh²hh³jEÞh´M™ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj/Þh²hh³jEÞh´M™ubah}”(h]”j*Þah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jEÞh´M™hj,Þh²hubj )�”}”(hhh]”hÎ)�”}”(hŒPolls for ACT handled status.”h]”hŒPolls for ACT handled status.”…”�”}”(hj÷Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M™hjôÞh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj,Þh²hh³jEÞh´M™ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jßj$ jßj% ‰j& ‰j' ‰uh1j˜ h²hhjösh³Nh´Nubj) )�”}”(hXK**Parameters** ``struct drm_dp_mst_topology_mgr *mgr`` manager to use **Description** Tries waiting for the MST hub to finish updating it's payload table by polling for the ACT handled bit for up to 3 seconds (yes-some hubs really take that long). **Return** 0 if the ACT was handled in time, negative error code on failure.”•[h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjßh]”hŒ Parameters”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjßubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M�hjßubjw )�”}”(hhh]”j| )�”}”(hŒ7``struct drm_dp_mst_topology_mgr *mgr`` manager to use ”h]”(j‚ )�”}”(hŒ'``struct drm_dp_mst_topology_mgr *mgr``”h]”jˆ )�”}”(hj8ßh]”hŒ#struct drm_dp_mst_topology_mgr *mgr”…”�”}”(hj:ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj6ßubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mšhj2ßubjž )�”}”(hhh]”hÎ)�”}”(hŒmanager to use”h]”hŒmanager to use”…”�”}”(hjQßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jMßh´MšhjNßubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj2ßubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jMßh´Mšhj/ßubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjßubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjsßh]”hŒ Description”…”�”}”(hjußh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjqßubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MœhjßubhÎ)�”}”(hŒ¡Tries waiting for the MST hub to finish updating it's payload table by polling for the ACT handled bit for up to 3 seconds (yes-some hubs really take that long).”h]”hŒ£Tries waiting for the MST hub to finish updating it’s payload table by polling for the ACT handled bit for up to 3 seconds (yes-some hubs really take that long).”…”�”}”(hj‰ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M›hjßubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjšßh]”hŒReturn”…”�”}”(hjœßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj˜ßubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MŸhjßubhÎ)�”}”(hŒA0 if the ACT was handled in time, negative error code on failure.”h]”hŒA0 if the ACT was handled in time, negative error code on failure.”…”�”}”(hj°ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M hjßubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjösh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ!drm_dp_calc_pbn_mode (C function)”Œc.drm_dp_calc_pbn_mode”hNt”auh1j† hjösh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ-int drm_dp_calc_pbn_mode (int clock, int bpp)”h]”j¤ )�”}”(hŒ,int drm_dp_calc_pbn_mode(int clock, int bpp)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjßßh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjÛßh²hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.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Œdrm_dp_calc_pbn_mode”h]”jÓ )�”}”(hŒdrm_dp_calc_pbn_mode”h]”hŒdrm_dp_calc_pbn_mode”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjüßubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÛßh²hh³jíßh´M°ubjÞ)�”}”(hŒ(int clock, int bpp)”h]”(jä)�”}”(hŒ int clock”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(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Œclock”h]”hŒclock”…”�”}”(hj8àh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjàubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjàubjä)�”}”(hŒint bpp”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjQàh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjMàubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_àh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjMàubjÓ )�”}”(hŒbpp”h]”hŒbpp”…”�”}”(hjmàh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjMàubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjàubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjÛßh²hh³jíßh´M°ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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ŒCalculate the PBN for a mode.”h]”hŒCalculate the PBN for a mode.”…”�”}”(hj—àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.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²hhjösh³Nh´Nubj) )�”}”(hŒ°**Parameters** ``int clock`` dot clock ``int bpp`` bpp as .4 binary fixed point **Description** This uses the formula in the spec to calculate the PBN value for a mode.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj¹àh]”hŒ Parameters”…”�”}”(hj»àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj·àubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M´hj³àubjw )�”}”(hhh]”(j| )�”}”(hŒ``int clock`` dot clock ”h]”(j‚ )�”}”(hŒ ``int clock``”h]”jˆ )�”}”(hjØàh]”hŒ int clock”…”�”}”(hjÚàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÖàubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M±hjÒàubjž )�”}”(hhh]”hÎ)�”}”(hŒ dot clock”h]”hŒ dot clock”…”�”}”(hjñàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jíàh´M±hjîàubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÒàubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jíàh´M±hjÏàubj| )�”}”(hŒ)``int bpp`` bpp as .4 binary fixed point ”h]”(j‚ )�”}”(hŒ ``int bpp``”h]”jˆ )�”}”(hjáh]”hŒint bpp”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjáubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M²hj áubjž )�”}”(hhh]”hÎ)�”}”(hŒbpp as .4 binary fixed point”h]”hŒbpp as .4 binary fixed point”…”�”}”(hj*áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j&áh´M²hj'áubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj áubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j&áh´M²hjÏàubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj³àubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjLáh]”hŒ Description”…”�”}”(hjNáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjJáubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M´hj³àubhÎ)�”}”(hŒHThis uses the formula in the spec to calculate the PBN value for a mode.”h]”hŒHThis uses the formula in the spec to calculate the PBN value for a mode.”…”�”}”(hjbáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M³hj³àubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjösh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ%drm_dp_mst_dump_topology (C function)”Œc.drm_dp_mst_dump_topology”hNt”auh1j† hjösh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒWvoid drm_dp_mst_dump_topology (struct seq_file *m, struct drm_dp_mst_topology_mgr *mgr)”h]”j¤ )�”}”(hŒVvoid drm_dp_mst_dump_topology(struct seq_file *m, struct drm_dp_mst_topology_mgr *mgr)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj‘áh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj�áh²hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.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Œdrm_dp_mst_dump_topology”h]”jÓ )�”}”(hŒdrm_dp_mst_dump_topology”h]”hŒdrm_dp_mst_dump_topology”…”�”}”(hj²áh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj®áubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj�áh²hh³jŸáh´M)ubjÞ)�”}”(hŒ9(struct seq_file *m, struct drm_dp_mst_topology_mgr *mgr)”h]”(jä)�”}”(hŒstruct seq_file *m”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Œseq_file”h]”hŒseq_file”…”�”}”(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%)�”}”jj´ásbŒc.drm_dp_mst_dump_topology”†”asbuh1hhjÊáubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj âh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÊáubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÊáubjÓ )�”}”(hjšh]”hŒm”…”�”}”(hj'âh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÊáubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÆáubjä)�”}”(hŒ#struct drm_dp_mst_topology_mgr *mgr”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj?âh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj;âubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjLâh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj;âubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_dp_mst_topology_mgr”h]”hŒdrm_dp_mst_topology_mgr”…”�”}”(hj]âh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjZâubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j_âŒmodname”NŒ classname”Njé jì )�”}”jï ]”jâŒc.drm_dp_mst_dump_topology”†”asbuh1hhj;âubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{âh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj;âubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj‰âh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj;âubjÓ )�”}”(hŒmgr”h]”hŒmgr”…”�”}”(hj–âh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj;âubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÆáubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj�áh²hh³jŸáh´M)ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œdump topology to seq file.”h]”hŒdump topology to seq file.”…”�”}”(hjÀâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.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²hhjösh³Nh´Nubj) )�”}”(hŒÝ**Parameters** ``struct seq_file *m`` seq_file to dump output to ``struct drm_dp_mst_topology_mgr *mgr`` manager to dump current topology for. **Description** helper to dump MST topology to a seq file for debugfs.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjââh]”hŒ Parameters”…”�”}”(hjäâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjàâubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M-hjÜâubjw )�”}”(hhh]”(j| )�”}”(hŒ2``struct seq_file *m`` seq_file to dump output to ”h]”(j‚ )�”}”(hŒ``struct seq_file *m``”h]”jˆ )�”}”(hjãh]”hŒstruct seq_file *m”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÿâubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M*hjûâubjž )�”}”(hhh]”hÎ)�”}”(hŒseq_file to dump output to”h]”hŒseq_file to dump output to”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jãh´M*hjãubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjûâubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jãh´M*hjøâubj| )�”}”(hŒN``struct drm_dp_mst_topology_mgr *mgr`` manager to dump current topology for. ”h]”(j‚ )�”}”(hŒ'``struct drm_dp_mst_topology_mgr *mgr``”h]”jˆ )�”}”(hj:ãh]”hŒ#struct drm_dp_mst_topology_mgr *mgr”…”�”}”(hj<ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj8ãubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M+hj4ãubjž )�”}”(hhh]”hÎ)�”}”(hŒ%manager to dump current topology for.”h]”hŒ%manager to dump current topology for.”…”�”}”(hjSãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jOãh´M+hjPãubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj4ãubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jOãh´M+hjøâubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÜâubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjuãh]”hŒ Description”…”�”}”(hjwãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjsãubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M-hjÜâubhÎ)�”}”(hŒ6helper to dump MST topology to a seq file for debugfs.”h]”hŒ6helper to dump MST topology to a seq file for debugfs.”…”�”}”(hj‹ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M,hjÜâubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjösh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ1drm_dp_mst_port_downstream_of_parent (C function)”Œ&c.drm_dp_mst_port_downstream_of_parent”hNt”auh1j† hjösh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ�bool drm_dp_mst_port_downstream_of_parent (struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_port *port, struct drm_dp_mst_port *parent)”h]”j¤ )�”}”(hŒŒbool drm_dp_mst_port_downstream_of_parent(struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_port *port, struct drm_dp_mst_port *parent)”h]”(j¦)�”}”(hj£Ih]”hŒbool”…”�”}”(hjºãh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj¶ãh²hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.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Œ$drm_dp_mst_port_downstream_of_parent”h]”jÓ )�”}”(hŒ$drm_dp_mst_port_downstream_of_parent”h]”hŒ$drm_dp_mst_port_downstream_of_parent”…”�”}”(hjÚãh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÖãubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj¶ãh²hh³jÇãh´MˆubjÞ)�”}”(hŒc(struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_port *port, struct drm_dp_mst_port *parent)”h]”(jä)�”}”(hŒ#struct drm_dp_mst_topology_mgr *mgr”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Œdrm_dp_mst_topology_mgr”h]”hŒdrm_dp_mst_topology_mgr”…”�”}”(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%)�”}”jjÜãsbŒ&c.drm_dp_mst_port_downstream_of_parent”†”asbuh1hhjòãubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4äh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjòãubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjBäh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjòãubjÓ )�”}”(hŒmgr”h]”hŒmgr”…”�”}”(hjOäh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjòãubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjîãubjä)�”}”(hŒstruct drm_dp_mst_port *port”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjhäh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjdäubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjuäh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjdäubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_dp_mst_port”h]”hŒdrm_dp_mst_port”…”�”}”(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ï ]”j0äŒ&c.drm_dp_mst_port_downstream_of_parent”†”asbuh1hhjdäubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤äh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjdäubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj²äh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjdäubjÓ )�”}”(hŒport”h]”hŒport”…”�”}”(hj¿äh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjdäubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjîãubjä)�”}”(hŒstruct drm_dp_mst_port *parent”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Œdrm_dp_mst_port”h]”hŒdrm_dp_mst_port”…”�”}”(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ï ]”j0äŒ&c.drm_dp_mst_port_downstream_of_parent”†”asbuh1hhjÔäubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÔäubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj"åh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÔäubjÓ )�”}”(hŒparent”h]”hŒparent”…”�”}”(hj/åh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÔäubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjîãubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj¶ãh²hh³jÇãh´Mˆubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ.check if a port is downstream of a parent port”h]”hŒ.check if a port is downstream of a parent port”…”�”}”(hjYåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MˆhjVå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# jqåj$ jqåj% ‰j& ‰j' ‰uh1j˜ h²hhjösh³Nh´Nubj) )�”}”(hX“**Parameters** ``struct drm_dp_mst_topology_mgr *mgr`` MST topology manager ``struct drm_dp_mst_port *port`` the port being looked up ``struct drm_dp_mst_port *parent`` the parent port **Description** The function returns ``true`` if **port** is downstream of **parent**. If **parent** is ``NULL`` - denoting the root port - the function returns ``true`` if **port** is in **mgr**'s topology.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj{åh]”hŒ Parameters”…”�”}”(hj}åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjyåubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MŒhjuåubjw )�”}”(hhh]”(j| )�”}”(hŒ=``struct drm_dp_mst_topology_mgr *mgr`` MST topology manager ”h]”(j‚ )�”}”(hŒ'``struct drm_dp_mst_topology_mgr *mgr``”h]”jˆ )�”}”(hjšåh]”hŒ#struct drm_dp_mst_topology_mgr *mgr”…”�”}”(hjœåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj˜åubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M‰hj”åubjž )�”}”(hhh]”hÎ)�”}”(hŒMST topology manager”h]”hŒMST topology manager”…”�”}”(hj³åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¯åh´M‰hj°åubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj”åubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¯åh´M‰hj‘åubj| )�”}”(hŒ:``struct drm_dp_mst_port *port`` the port being looked up ”h]”(j‚ )�”}”(hŒ ``struct drm_dp_mst_port *port``”h]”jˆ )�”}”(hjÓåh]”hŒstruct drm_dp_mst_port *port”…”�”}”(hjÕåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÑåubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MŠhjÍåubjž )�”}”(hhh]”hÎ)�”}”(hŒthe port being looked up”h]”hŒthe port being looked up”…”�”}”(hjìåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jèåh´MŠhjéåubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÍåubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jèåh´MŠhj‘åubj| )�”}”(hŒ3``struct drm_dp_mst_port *parent`` the parent port ”h]”(j‚ )�”}”(hŒ"``struct drm_dp_mst_port *parent``”h]”jˆ )�”}”(hj æh]”hŒstruct drm_dp_mst_port *parent”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj æubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M‹hjæubjž )�”}”(hhh]”hÎ)�”}”(hŒthe parent port”h]”hŒthe parent port”…”�”}”(hj%æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j!æh´M‹hj"æubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjæubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j!æh´M‹hj‘åubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjuåubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjGæh]”hŒ Description”…”�”}”(hjIæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjEæubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M�hjuåubhÎ)�”}”(hŒ¿The function returns ``true`` if **port** is downstream of **parent**. If **parent** is ``NULL`` - denoting the root port - the function returns ``true`` if **port** is in **mgr**'s topology.”h]”(hŒThe function returns ”…”�”}”(hj]æh²hh³Nh´Nubjˆ )�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hjeæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj]æubhŒ if ”…”�”}”(hj]æh²hh³Nh´Nubj3 )�”}”(hŒ**port**”h]”hŒport”…”�”}”(hjwæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj]æubhŒ is downstream of ”…”�”}”(hj]æh²hh³Nh´Nubj3 )�”}”(hŒ **parent**”h]”hŒparent”…”�”}”(hj‰æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj]æubhŒ. If ”…”�”}”(hj]æh²hh³Nh´Nubj3 )�”}”(hŒ **parent**”h]”hŒparent”…”�”}”(hj›æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj]æubhŒ is ”…”�”}”(hj]æh²hh³Nh´Nubjˆ )�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj­æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj]æubhŒ1 - denoting the root port - the function returns ”…”�”}”(hj]æh²hh³Nh´Nubjˆ )�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hj¿æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj]æubhŒ if ”…”�”}”hj]æsbj3 )�”}”(hŒ**port**”h]”hŒport”…”�”}”(hjÑæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj]æubhŒ is in ”…”�”}”(hj]æh²hh³Nh´Nubj3 )�”}”(hŒ**mgr**”h]”hŒmgr”…”�”}”(hjãæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj]æubhŒ’s topology.”…”�”}”(hj]æh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MŒhjuåubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjösh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ.drm_dp_mst_add_affected_dsc_crtcs (C function)”Œ#c.drm_dp_mst_add_affected_dsc_crtcs”hNt”auh1j† hjösh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒlint drm_dp_mst_add_affected_dsc_crtcs (struct drm_atomic_commit *state, struct drm_dp_mst_topology_mgr *mgr)”h]”j¤ )�”}”(hŒkint drm_dp_mst_add_affected_dsc_crtcs(struct drm_atomic_commit *state, struct drm_dp_mst_topology_mgr *mgr)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjçh²hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M7ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+çh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjçh²hh³j*çh´M7ubjÍ )�”}”(hŒ!drm_dp_mst_add_affected_dsc_crtcs”h]”jÓ )�”}”(hŒ!drm_dp_mst_add_affected_dsc_crtcs”h]”hŒ!drm_dp_mst_add_affected_dsc_crtcs”…”�”}”(hj=çh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj9çubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjçh²hh³j*çh´M7ubjÞ)�”}”(hŒF(struct drm_atomic_commit *state, struct drm_dp_mst_topology_mgr *mgr)”h]”(jä)�”}”(hŒstruct drm_atomic_commit *state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjYçh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjUçubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfçh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjUçubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_atomic_commit”h]”hŒdrm_atomic_commit”…”�”}”(hjwçh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjtçubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jyçŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj?çsbŒ#c.drm_dp_mst_add_affected_dsc_crtcs”†”asbuh1hhjUçubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—çh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjUçubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj¥çh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjUçubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hj²çh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjUçubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjQçubjä)�”}”(hŒ#struct drm_dp_mst_topology_mgr *mgr”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Œdrm_dp_mst_topology_mgr”h]”hŒdrm_dp_mst_topology_mgr”…”�”}”(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.drm_dp_mst_add_affected_dsc_crtcs”†”asbuh1hhjÇçubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÇçubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÇçubjÓ )�”}”(hŒmgr”h]”hŒmgr”…”�”}”(hj"èh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÇçubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjQçubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjçh²hh³j*çh´M7ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjçh²hh³j*çh´M7ubah}”(h]”jçah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j*çh´M7hjçh²hubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j hjçh²hh³j*çh´M7ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jUèj$ jUèj% ‰j& ‰j' ‰uh1j˜ h²hhjösh³Nh´Nubj) )�”}”(hXŒ**Parameters** ``struct drm_atomic_commit *state`` Pointer to the new struct drm_dp_mst_topology_state ``struct drm_dp_mst_topology_mgr *mgr`` MST topology manager **Description** Whenever there is a change in mst topology DSC configuration would have to be recalculated therefore we need to trigger modeset on all affected CRTCs in that topology See also: drm_dp_mst_atomic_enable_dsc()”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj_èh]”hŒ Parameters”…”�”}”(hjaèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj]èubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M;hjYèubjw )�”}”(hhh]”(j| )�”}”(hŒX``struct drm_atomic_commit *state`` Pointer to the new struct drm_dp_mst_topology_state ”h]”(j‚ )�”}”(hŒ#``struct drm_atomic_commit *state``”h]”jˆ )�”}”(hj~èh]”hŒstruct drm_atomic_commit *state”…”�”}”(hj€èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj|èubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M8hjxèubjž )�”}”(hhh]”hÎ)�”}”(hŒ3Pointer to the new struct drm_dp_mst_topology_state”h]”hŒ3Pointer to the new struct drm_dp_mst_topology_state”…”�”}”(hj—èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j“èh´M8hj”èubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjxèubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j“èh´M8hjuèubj| )�”}”(hŒ=``struct drm_dp_mst_topology_mgr *mgr`` MST topology manager ”h]”(j‚ )�”}”(hŒ'``struct drm_dp_mst_topology_mgr *mgr``”h]”jˆ )�”}”(hj·èh]”hŒ#struct drm_dp_mst_topology_mgr *mgr”…”�”}”(hj¹èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjµèubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M9hj±èubjž )�”}”(hhh]”hÎ)�”}”(hŒMST topology manager”h]”hŒMST topology manager”…”�”}”(hjÐèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÌèh´M9hjÍèubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj±èubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÌèh´M9hjuèubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjYèubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjòèh]”hŒ Description”…”�”}”(hjôèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjðèubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M;hjYèubhÎ)�”}”(hŒ¦Whenever there is a change in mst topology DSC configuration would have to be recalculated therefore we need to trigger modeset on all affected CRTCs in that topology”h]”hŒ¦Whenever there is a change in mst topology DSC configuration would have to be recalculated therefore we need to trigger modeset on all affected CRTCs in that topology”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M:hjYèubhÎ)�”}”(hŒ(See also: drm_dp_mst_atomic_enable_dsc()”h]”hŒ(See also: drm_dp_mst_atomic_enable_dsc()”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M?hjYèubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjösh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ)drm_dp_mst_atomic_enable_dsc (C function)”Œc.drm_dp_mst_atomic_enable_dsc”hNt”auh1j† hjösh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒvint drm_dp_mst_atomic_enable_dsc (struct drm_atomic_commit *state, struct drm_dp_mst_port *port, int pbn, bool enable)”h]”j¤ )�”}”(hŒuint drm_dp_mst_atomic_enable_dsc(struct drm_atomic_commit *state, struct drm_dp_mst_port *port, int pbn, bool enable)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjFéh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjBéh²hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mtubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjUéh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjBéh²hh³jTéh´MtubjÍ )�”}”(hŒdrm_dp_mst_atomic_enable_dsc”h]”jÓ )�”}”(hŒdrm_dp_mst_atomic_enable_dsc”h]”hŒdrm_dp_mst_atomic_enable_dsc”…”�”}”(hjgéh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjcéubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjBéh²hh³jTéh´MtubjÞ)�”}”(hŒU(struct drm_atomic_commit *state, struct drm_dp_mst_port *port, int pbn, bool enable)”h]”(jä)�”}”(hŒstruct drm_atomic_commit *state”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Œdrm_atomic_commit”h]”hŒdrm_atomic_commit”…”�”}”(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%)�”}”jjiésbŒc.drm_dp_mst_atomic_enable_dsc”†”asbuh1hhjéubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁéh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjéubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÏéh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjéubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hjÜéh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjéubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj{éubjä)�”}”(hŒstruct drm_dp_mst_port *port”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Œdrm_dp_mst_port”h]”hŒdrm_dp_mst_port”…”�”}”(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.drm_dp_mst_atomic_enable_dsc”†”asbuh1hhjñéubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1êh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjñéubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj?êh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjñéubjÓ )�”}”(hŒport”h]”hŒport”…”�”}”(hjLêh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjñéubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj{éubjä)�”}”(hŒint pbn”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjeêh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjaêubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjsêh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjaêubjÓ )�”}”(hŒpbn”h]”hŒpbn”…”�”}”(hj�êh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjaêubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj{éubjä)�”}”(hŒ bool enable”h]”(j¦)�”}”(hj£Ih]”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Œenable”h]”hŒenable”…”�”}”(hjµêh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj–êubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj{éubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjBéh²hh³jTéh´Mtubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj>éh²hh³jTéh´Mtubah}”(h]”j9éah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jTéh´Mthj;éh²hubj )�”}”(hhh]”hÎ)�”}”(hŒSet DSC Enable Flag to On/Off”h]”hŒSet DSC Enable Flag to On/Off”…”�”}”(hjßêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MthjÜêh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj;éh²hh³jTéh´Mtubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j÷êj$ j÷êj% ‰j& ‰j' ‰uh1j˜ h²hhjösh³Nh´Nubj) )�”}”(hXÝ**Parameters** ``struct drm_atomic_commit *state`` Pointer to the new drm_atomic_commit ``struct drm_dp_mst_port *port`` Pointer to the affected MST Port ``int pbn`` Newly recalculated bw required for link with DSC enabled ``bool enable`` Boolean flag to enable or disable DSC on the port **Description** This function enables DSC on the given Port by recalculating its vcpi from pbn provided and sets dsc_enable flag to keep track of which ports have DSC enabled”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjëh]”hŒ Parameters”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÿêubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mxhjûêubjw )�”}”(hhh]”(j| )�”}”(hŒI``struct drm_atomic_commit *state`` Pointer to the new drm_atomic_commit ”h]”(j‚ )�”}”(hŒ#``struct drm_atomic_commit *state``”h]”jˆ )�”}”(hj ëh]”hŒstruct drm_atomic_commit *state”…”�”}”(hj"ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjëubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Muhjëubjž )�”}”(hhh]”hÎ)�”}”(hŒ$Pointer to the new drm_atomic_commit”h]”hŒ$Pointer to the new drm_atomic_commit”…”�”}”(hj9ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j5ëh´Muhj6ëubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjëubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j5ëh´Muhjëubj| )�”}”(hŒB``struct drm_dp_mst_port *port`` Pointer to the affected MST Port ”h]”(j‚ )�”}”(hŒ ``struct drm_dp_mst_port *port``”h]”jˆ )�”}”(hjYëh]”hŒstruct drm_dp_mst_port *port”…”�”}”(hj[ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjWëubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MvhjSëubjž )�”}”(hhh]”hÎ)�”}”(hŒ Pointer to the affected MST Port”h]”hŒ Pointer to the affected MST Port”…”�”}”(hjrëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jnëh´Mvhjoëubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjSëubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jnëh´Mvhjëubj| )�”}”(hŒE``int pbn`` Newly recalculated bw required for link with DSC enabled ”h]”(j‚ )�”}”(hŒ ``int pbn``”h]”jˆ )�”}”(hj’ëh]”hŒint pbn”…”�”}”(hj”ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj�ëubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MwhjŒëubjž )�”}”(hhh]”hÎ)�”}”(hŒ8Newly recalculated bw required for link with DSC enabled”h]”hŒ8Newly recalculated bw required for link with DSC enabled”…”�”}”(hj«ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j§ëh´Mwhj¨ëubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjŒëubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j§ëh´Mwhjëubj| )�”}”(hŒB``bool enable`` Boolean flag to enable or disable DSC on the port ”h]”(j‚ )�”}”(hŒ``bool enable``”h]”jˆ )�”}”(hjËëh]”hŒ bool enable”…”�”}”(hjÍëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÉëubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MxhjÅëubjž )�”}”(hhh]”hÎ)�”}”(hŒ1Boolean flag to enable or disable DSC on the port”h]”hŒ1Boolean flag to enable or disable DSC on the port”…”�”}”(hjäëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jàëh´Mxhjáëubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÅëubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jàëh´Mxhjëubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjûêubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjìh]”hŒ Description”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjìubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MzhjûêubhÎ)�”}”(hŒžThis function enables DSC on the given Port by recalculating its vcpi from pbn provided and sets dsc_enable flag to keep track of which ports have DSC enabled”h]”hŒžThis function enables DSC on the given Port by recalculating its vcpi from pbn provided and sets dsc_enable flag to keep track of which ports have DSC enabled”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Myhjûêubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjösh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ(drm_dp_mst_atomic_check_mgr (C function)”Œc.drm_dp_mst_atomic_check_mgr”hNt”auh1j† hjösh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒºint drm_dp_mst_atomic_check_mgr (struct drm_atomic_commit *state, struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_topology_state *mst_state, struct drm_dp_mst_port **failing_port)”h]”j¤ )�”}”(hŒ¹int drm_dp_mst_atomic_check_mgr(struct drm_atomic_commit *state, struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_topology_state *mst_state, struct drm_dp_mst_port **failing_port)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjKìh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjGìh²hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M«ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZìh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjGìh²hh³jYìh´M«ubjÍ )�”}”(hŒdrm_dp_mst_atomic_check_mgr”h]”jÓ )�”}”(hŒdrm_dp_mst_atomic_check_mgr”h]”hŒdrm_dp_mst_atomic_check_mgr”…”�”}”(hjlìh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjhìubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjGìh²hh³jYìh´M«ubjÞ)�”}”(hŒš(struct drm_atomic_commit *state, struct drm_dp_mst_topology_mgr *mgr, struct drm_dp_mst_topology_state *mst_state, struct drm_dp_mst_port **failing_port)”h]”(jä)�”}”(hŒstruct drm_atomic_commit *state”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Œdrm_atomic_commit”h]”hŒdrm_atomic_commit”…”�”}”(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%)�”}”jjnìsbŒc.drm_dp_mst_atomic_check_mgr”†”asbuh1hhj„ìubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆìh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj„ìubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÔìh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj„ìubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hjáìh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj„ìubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj€ìubjä)�”}”(hŒ#struct drm_dp_mst_topology_mgr *mgr”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Œdrm_dp_mst_topology_mgr”h]”hŒdrm_dp_mst_topology_mgr”…”�”}”(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.drm_dp_mst_atomic_check_mgr”†”asbuh1hhjöìubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6íh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjöìubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjDíh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjöìubjÓ )�”}”(hŒmgr”h]”hŒmgr”…”�”}”(hjQíh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjöìubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj€ìubjä)�”}”(hŒ+struct drm_dp_mst_topology_state *mst_state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjjíh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjfíubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwíh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjfíubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_dp_mst_topology_state”h]”hŒdrm_dp_mst_topology_state”…”�”}”(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.drm_dp_mst_atomic_check_mgr”†”asbuh1hhjfíubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦íh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjfíubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj´íh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjfíubjÓ )�”}”(hŒ mst_state”h]”hŒ mst_state”…”�”}”(hjÁíh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjfíubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj€ìubjä)�”}”(hŒ%struct drm_dp_mst_port **failing_port”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Œdrm_dp_mst_port”h]”hŒdrm_dp_mst_port”…”�”}”(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.drm_dp_mst_atomic_check_mgr”†”asbuh1hhjÖíubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÖíubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj$îh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÖíubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj1îh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÖíubjÓ )�”}”(hŒ failing_port”h]”hŒ failing_port”…”�”}”(hj>îh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÖíubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj€ìubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjGìh²hh³jYìh´M«ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjCìh²hh³jYìh´M«ubah}”(h]”j>ìah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jYìh´M«hj@ìh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ1Check the atomic state of an MST topology manager”h]”hŒ1Check the atomic state of an MST topology manager”…”�”}”(hjhîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M«hjeîh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj@ìh²hh³jYìh´M«ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j€îj$ j€îj% ‰j& ‰j' ‰uh1j˜ h²hhjösh³Nh´Nubj) )�”}”(hX**Parameters** ``struct drm_atomic_commit *state`` The global atomic state ``struct drm_dp_mst_topology_mgr *mgr`` Manager to check ``struct drm_dp_mst_topology_state *mst_state`` The MST atomic state for **mgr** ``struct drm_dp_mst_port **failing_port`` Returns the port with a BW limitation **Description** Checks the given MST manager's topology state for an atomic update to ensure that it's valid. This includes checking whether there's enough bandwidth to support the new timeslot allocations in the atomic update. Any atomic drivers supporting DP MST must make sure to call this or the drm_dp_mst_atomic_check() function after checking the rest of their state in their :c:type:`drm_mode_config_funcs.atomic_check\(\) ` callback. See also: drm_dp_mst_atomic_check() drm_dp_atomic_find_time_slots() drm_dp_atomic_release_time_slots() - The non-root port where a BW limit check failed with all the ports downstream of **failing_port** passing the BW limit check. The returned port pointer is valid until at least one payload downstream of it exists. - ``NULL`` if the BW limit check failed at the root port with all the ports downstream of the root port passing the BW limit check. - ``-EINVAL``, if the new state is invalid, because the root port has too many payloads. **Return** - 0 if the new state is valid - ``-ENOSPC``, if the new state is invalid, because of BW limitation **failing_port** is set to:”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjŠîh]”hŒ Parameters”…”�”}”(hjŒîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjˆîubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M¯hj„îubjw )�”}”(hhh]”(j| )�”}”(hŒ<``struct drm_atomic_commit *state`` The global atomic state ”h]”(j‚ )�”}”(hŒ#``struct drm_atomic_commit *state``”h]”jˆ )�”}”(hj©îh]”hŒstruct drm_atomic_commit *state”…”�”}”(hj«îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj§îubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M¬hj£îubjž )�”}”(hhh]”hÎ)�”}”(hŒThe global atomic state”h]”hŒThe global atomic state”…”�”}”(hjÂîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¾îh´M¬hj¿îubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj£îubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¾îh´M¬hj îubj| )�”}”(hŒ9``struct drm_dp_mst_topology_mgr *mgr`` Manager to check ”h]”(j‚ )�”}”(hŒ'``struct drm_dp_mst_topology_mgr *mgr``”h]”jˆ )�”}”(hjâîh]”hŒ#struct drm_dp_mst_topology_mgr *mgr”…”�”}”(hjäîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjàîubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M­hjÜîubjž )�”}”(hhh]”hÎ)�”}”(hŒManager to check”h]”hŒManager to check”…”�”}”(hjûîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j÷îh´M­hjøîubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÜîubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j÷îh´M­hj îubj| )�”}”(hŒQ``struct drm_dp_mst_topology_state *mst_state`` The MST atomic state for **mgr** ”h]”(j‚ )�”}”(hŒ/``struct drm_dp_mst_topology_state *mst_state``”h]”jˆ )�”}”(hjïh]”hŒ+struct drm_dp_mst_topology_state *mst_state”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjïubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M®hjïubjž )�”}”(hhh]”hÎ)�”}”(hŒ The MST atomic state for **mgr**”h]”(hŒThe MST atomic state for ”…”�”}”(hj4ïh²hh³Nh´Nubj3 )�”}”(hŒ**mgr**”h]”hŒmgr”…”�”}”(hj<ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj4ïubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j0ïh´M®hj1ïubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjïubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j0ïh´M®hj îubj| )�”}”(hŒP``struct drm_dp_mst_port **failing_port`` Returns the port with a BW limitation ”h]”(j‚ )�”}”(hŒ)``struct drm_dp_mst_port **failing_port``”h]”jˆ )�”}”(hjbïh]”hŒ%struct drm_dp_mst_port **failing_port”…”�”}”(hjdïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj`ïubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M¯hj\ïubjž )�”}”(hhh]”hÎ)�”}”(hŒ%Returns the port with a BW limitation”h]”hŒ%Returns the port with a BW limitation”…”�”}”(hj{ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jwïh´M¯hjxïubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj\ïubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jwïh´M¯hj îubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj„îubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj�ïh]”hŒ Description”…”�”}”(hjŸïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj›ïubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M±hj„îubhÎ)�”}”(hŒÓChecks the given MST manager's topology state for an atomic update to ensure that it's valid. This includes checking whether there's enough bandwidth to support the new timeslot allocations in the atomic update.”h]”hŒÙChecks the given MST manager’s topology state for an atomic update to ensure that it’s valid. This includes checking whether there’s enough bandwidth to support the new timeslot allocations in the atomic update.”…”�”}”(hj³ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M°hj„îubhÎ)�”}”(hŒíAny atomic drivers supporting DP MST must make sure to call this or the drm_dp_mst_atomic_check() function after checking the rest of their state in their :c:type:`drm_mode_config_funcs.atomic_check\(\) ` callback.”h]”(hŒ›Any atomic drivers supporting DP MST must make sure to call this or the drm_dp_mst_atomic_check() function after checking the rest of their state in their ”…”�”}”(hjÂïh²hh³Nh´Nubh)�”}”(hŒH:c:type:`drm_mode_config_funcs.atomic_check\(\) `”h]”jˆ )�”}”(hjÌïh]”hŒ$drm_mode_config_funcs.atomic_check()”…”�”}”(hjÎïh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÊïubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_mode_config_funcs”uh1hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M´hjÂïubhŒ callback.”…”�”}”(hjÂïh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jéïh´M´hj„îubhÎ)�”}”(hŒfSee also: drm_dp_mst_atomic_check() drm_dp_atomic_find_time_slots() drm_dp_atomic_release_time_slots()”h]”hŒfSee also: drm_dp_mst_atomic_check() drm_dp_atomic_find_time_slots() drm_dp_atomic_release_time_slots()”…”�”}”(hjôïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M¸hj„îubj^E)�”}”(hXó - The non-root port where a BW limit check failed with all the ports downstream of **failing_port** passing the BW limit check. The returned port pointer is valid until at least one payload downstream of it exists. - ``NULL`` if the BW limit check failed at the root port with all the ports downstream of the root port passing the BW limit check. - ``-EINVAL``, if the new state is invalid, because the root port has too many payloads. ”h]”(j^E)�”}”(hXg- The non-root port where a BW limit check failed with all the ports downstream of **failing_port** passing the BW limit check. The returned port pointer is valid until at least one payload downstream of it exists. - ``NULL`` if the BW limit check failed at the root port with all the ports downstream of the root port passing the BW limit check. ”h]”hú)�”}”(hhh]”(hÿ)�”}”(hŒÔThe non-root port where a BW limit check failed with all the ports downstream of **failing_port** passing the BW limit check. The returned port pointer is valid until at least one payload downstream of it exists.”h]”hÎ)�”}”(hŒÔThe non-root port where a BW limit check failed with all the ports downstream of **failing_port** passing the BW limit check. The returned port pointer is valid until at least one payload downstream of it exists.”h]”(hŒQThe non-root port where a BW limit check failed with all the ports downstream of ”…”�”}”(hjðh²hh³Nh´Nubj3 )�”}”(hŒ**failing_port**”h]”hŒ failing_port”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjðubhŒs passing the BW limit check. The returned port pointer is valid until at least one payload downstream of it exists.”…”�”}”(hjðh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M¾hjðubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj ðubhÿ)�”}”(hŒ‚``NULL`` if the BW limit check failed at the root port with all the ports downstream of the root port passing the BW limit check. ”h]”hÎ)�”}”(hŒ�``NULL`` if the BW limit check failed at the root port with all the ports downstream of the root port passing the BW limit check.”h]”(jˆ )�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjAðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj=ðubhŒy if the BW limit check failed at the root port with all the ports downstream of the root port passing the BW limit check.”…”�”}”(hj=ðh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MÃhj9ðubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj ðubeh}”(h]”h ]”h"]”h$]”h&]”jNjÅ<uh1hùh³j2ðh´M¾hjðubah}”(h]”h ]”h"]”h$]”h&]”uh1j]Eh³j2ðh´M¾hjðubhú)�”}”(hhh]”hÿ)�”}”(hŒW``-EINVAL``, if the new state is invalid, because the root port has too many payloads. ”h]”hÎ)�”}”(hŒV``-EINVAL``, if the new state is invalid, because the root port has too many payloads.”h]”(jˆ )�”}”(hŒ ``-EINVAL``”h]”hŒ-EINVAL”…”�”}”(hjwðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjsðubhŒK, if the new state is invalid, because the root port has too many payloads.”…”�”}”(hjsðh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MÇhjoðubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjlðubah}”(h]”h ]”h"]”h$]”h&]”jNjÅ<uh1hùh³j�ðh´MÇhjðubeh}”(h]”h ]”h"]”h$]”h&]”uh1j]Eh³j2ðh´M¾hj„îubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj¤ðh]”hŒReturn”…”�”}”(hj¦ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¢ðubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MÊhj„îubhú)�”}”(hhh]”(hÿ)�”}”(hŒ0 if the new state is valid”h]”hÎ)�”}”(hj¿ðh]”hŒ0 if the new state is valid”…”�”}”(hjÁðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M¾hj½ðubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjºðubhÿ)�”}”(hŒb``-ENOSPC``, if the new state is invalid, because of BW limitation **failing_port** is set to:”h]”jw )�”}”(hhh]”j| )�”}”(hŒ^``-ENOSPC``, if the new state is invalid, because of BW limitation **failing_port** is set to:”h]”(j‚ )�”}”(hŒB``-ENOSPC``, if the new state is invalid, because of BW limitation”h]”(jˆ )�”}”(hŒ ``-ENOSPC``”h]”hŒ-ENOSPC”…”�”}”(hjäðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjàðubhŒ7, if the new state is invalid, because of BW limitation”…”�”}”(hjàðh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M¿hjÜðubjž )�”}”(hhh]”hÎ)�”}”(hŒ**failing_port** is set to:”h]”(j3 )�”}”(hŒ**failing_port**”h]”hŒ failing_port”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjñubhŒ is set to:”…”�”}”(hjñh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MÀhjýðubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÜðubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jüðh´M¿hjÙðubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÕðubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjºðubeh}”(h]”h ]”h"]”h$]”h&]”jNjÅ<uh1hùh³jÎðh´M¾hj„îubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjösh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ$drm_dp_mst_atomic_check (C function)”Œc.drm_dp_mst_atomic_check”hNt”auh1j† hjösh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ=int drm_dp_mst_atomic_check (struct drm_atomic_commit *state)”h]”j¤ )�”}”(hŒ` **Description** Checks the given topology state for an atomic update to ensure that it's valid, calling drm_dp_mst_atomic_check_mgr() for all MST manager in the atomic state. This includes checking whether there's enough bandwidth to support the new timeslot allocations in the atomic update. Any atomic drivers supporting DP MST must make sure to call this after checking the rest of their state in their :c:type:`drm_mode_config_funcs.atomic_check\(\) ` callback. See also: drm_dp_mst_atomic_check_mgr() drm_dp_atomic_find_time_slots() drm_dp_atomic_release_time_slots() **Return** 0 if the new state is valid, negative error code otherwise.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj=òh]”hŒ Parameters”…”�”}”(hj?òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj;òubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Míhj7òubjw )�”}”(hhh]”j| )�”}”(hŒ~``struct drm_atomic_commit *state`` Pointer to the new :c:type:`struct drm_dp_mst_topology_state ` ”h]”(j‚ )�”}”(hŒ#``struct drm_atomic_commit *state``”h]”jˆ )�”}”(hj\òh]”hŒstruct drm_atomic_commit *state”…”�”}”(hj^òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjZòubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MëhjVòubjž )�”}”(hhh]”hÎ)�”}”(hŒYPointer to the new :c:type:`struct drm_dp_mst_topology_state `”h]”(hŒPointer to the new ”…”�”}”(hjuòh²hh³Nh´Nubh)�”}”(hŒF:c:type:`struct drm_dp_mst_topology_state `”h]”jˆ )�”}”(hjòh]”hŒ struct drm_dp_mst_topology_state”…”�”}”(hj�òh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj}òubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_topology_state”uh1hh³jqòh´Mëhjuòubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jqòh´Mëhjròubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjVòubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jqòh´MëhjSòubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj7òubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj¶òh]”hŒ Description”…”�”}”(hj¸òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj´òubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Míhj7òubhÎ)�”}”(hXChecks the given topology state for an atomic update to ensure that it's valid, calling drm_dp_mst_atomic_check_mgr() for all MST manager in the atomic state. This includes checking whether there's enough bandwidth to support the new timeslot allocations in the atomic update.”h]”hXChecks the given topology state for an atomic update to ensure that it’s valid, calling drm_dp_mst_atomic_check_mgr() for all MST manager in the atomic state. This includes checking whether there’s enough bandwidth to support the new timeslot allocations in the atomic update.”…”�”• }”(hjÌòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mìhj7òubhÎ)�”}”(hŒÃAny atomic drivers supporting DP MST must make sure to call this after checking the rest of their state in their :c:type:`drm_mode_config_funcs.atomic_check\(\) ` callback.”h]”(hŒqAny atomic drivers supporting DP MST must make sure to call this after checking the rest of their state in their ”…”�”}”(hjÛòh²hh³Nh´Nubh)�”}”(hŒH:c:type:`drm_mode_config_funcs.atomic_check\(\) `”h]”jˆ )�”}”(hjåòh]”hŒ$drm_mode_config_funcs.atomic_check()”…”�”}”(hjçòh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjãòubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_mode_config_funcs”uh1hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MñhjÛòubhŒ callback.”…”�”}”(hjÛòh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jóh´Mñhj7òubhÎ)�”}”(hŒjSee also: drm_dp_mst_atomic_check_mgr() drm_dp_atomic_find_time_slots() drm_dp_atomic_release_time_slots()”h]”hŒjSee also: drm_dp_mst_atomic_check_mgr() drm_dp_atomic_find_time_slots() drm_dp_atomic_release_time_slots()”…”�”}”(hj óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mõhj7òubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjóh]”hŒReturn”…”�”}”(hj óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjóubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Múhj7òubhÎ)�”}”(hŒ;0 if the new state is valid, negative error code otherwise.”h]”hŒ;0 if the new state is valid, negative error code otherwise.”…”�”}”(hj4óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mûhj7òubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjösh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ.drm_atomic_get_mst_topology_state (C function)”Œ#c.drm_atomic_get_mst_topology_state”hNt”auh1j† hjösh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ‹struct drm_dp_mst_topology_state * drm_atomic_get_mst_topology_state (struct drm_atomic_commit *state, struct drm_dp_mst_topology_mgr *mgr)”h]”j¤ )�”}”(hŒ‰struct drm_dp_mst_topology_state *drm_atomic_get_mst_topology_state(struct drm_atomic_commit *state, struct drm_dp_mst_topology_mgr *mgr)”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjcóh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj_óh²hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjqóh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj_óh²hh³jpóh´Mubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_dp_mst_topology_state”h]”hŒdrm_dp_mst_topology_state”…”�”}”(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Œ!drm_atomic_get_mst_topology_state”sbŒ#c.drm_atomic_get_mst_topology_state”†”asbuh1hhj_óh²hh³jpóh´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£óh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj_óh²hh³jpóh´Mubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj±óh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj_óh²hh³jpóh´MubjÍ )�”}”(hŒ!drm_atomic_get_mst_topology_state”h]”jÓ )�”}”(hj óh]”hŒ!drm_atomic_get_mst_topology_state”…”�”}”(hjÂóh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¾óubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj_óh²hh³jpóh´MubjÞ)�”}”(hŒF(struct drm_atomic_commit *state, struct drm_dp_mst_topology_mgr *mgr)”h]”(jä)�”}”(hŒstruct drm_atomic_commit *state”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Œdrm_atomic_commit”h]”hŒdrm_atomic_commit”…”�”}”(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.drm_atomic_get_mst_topology_state”†”asbuh1hhjÙóubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÙóubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj'ôh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÙóubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hj4ôh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÙóubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÕóubjä)�”}”(hŒ#struct drm_dp_mst_topology_mgr *mgr”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjMôh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjIôubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZôh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjIôubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_dp_mst_topology_mgr”h]”hŒdrm_dp_mst_topology_mgr”…”�”}”(hjkôh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjhôubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jmôŒmodname”NŒ classname”Njé jì )�”}”jï ]”jžóŒ#c.drm_atomic_get_mst_topology_state”†”asbuh1hhjIôubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰ôh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjIôubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj—ôh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjIôubjÓ )�”}”(hŒmgr”h]”hŒmgr”…”�”}”(hj¤ôh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjIôubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÕóubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj_óh²hh³jpóh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj[óh²hh³jpóh´Mubah}”(h]”jVóah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jpóh´MhjXóh²hubj )�”}”(hhh]”hÎ)�”}”(hŒget MST topology state”h]”hŒget MST topology state”…”�”}”(hjÎôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MhjËôh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjXóh²hh³jpóh´Mubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jæôj$ jæôj% ‰j& ‰j' ‰uh1j˜ h²hhjösh³Nh´Nubj) )�”}”(hXž**Parameters** ``struct drm_atomic_commit *state`` global atomic state ``struct drm_dp_mst_topology_mgr *mgr`` MST topology manager, also the private object in this case **Description** This function wraps drm_atomic_get_priv_obj_state() passing in the MST atomic state vtable so that the private object state returned is that of a MST topology object. **Return** The MST topology state or error pointer.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjðôh]”hŒ Parameters”…”�”}”(hjòôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjîôubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mhjêôubjw )�”}”(hhh]”(j| )�”}”(hŒ8``struct drm_atomic_commit *state`` global atomic state ”h]”(j‚ )�”}”(hŒ#``struct drm_atomic_commit *state``”h]”jˆ )�”}”(hjõh]”hŒstruct drm_atomic_commit *state”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj õubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mhj õubjž )�”}”(hhh]”hÎ)�”}”(hŒglobal atomic state”h]”hŒglobal atomic state”…”�”}”(hj(õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j$õh´Mhj%õubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj õubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j$õh´Mhjõubj| )�”}”(hŒc``struct drm_dp_mst_topology_mgr *mgr`` MST topology manager, also the private object in this case ”h]”(j‚ )�”}”(hŒ'``struct drm_dp_mst_topology_mgr *mgr``”h]”jˆ )�”}”(hjHõh]”hŒ#struct drm_dp_mst_topology_mgr *mgr”…”�”}”(hjJõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjFõubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MhjBõubjž )�”}”(hhh]”hÎ)�”}”(hŒ:MST topology manager, also the private object in this case”h]”hŒ:MST topology manager, also the private object in this case”…”�”}”(hjaõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j]õh´Mhj^õubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjBõubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j]õh´Mhjõubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjêôubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjƒõh]”hŒ Description”…”�”}”(hj…õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj�õubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MhjêôubhÎ)�”}”(hŒ¦This function wraps drm_atomic_get_priv_obj_state() passing in the MST atomic state vtable so that the private object state returned is that of a MST topology object.”h]”hŒ¦This function wraps drm_atomic_get_priv_obj_state() passing in the MST atomic state vtable so that the private object state returned is that of a MST topology object.”…”�”}”(hj™õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MhjêôubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjªõh]”hŒReturn”…”�”}”(hj¬õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¨õubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MhjêôubhÎ)�”}”(hŒ(The MST topology state or error pointer.”h]”hŒ(The MST topology state or error pointer.”…”�”}”(hjÀõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M hjêôubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjösh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ2drm_atomic_get_old_mst_topology_state (C function)”Œ'c.drm_atomic_get_old_mst_topology_state”hNt”auh1j† hjösh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ�struct drm_dp_mst_topology_state * drm_atomic_get_old_mst_topology_state (struct drm_atomic_commit *state, struct drm_dp_mst_topology_mgr *mgr)”h]”j¤ )�”}”(hŒ�struct drm_dp_mst_topology_state *drm_atomic_get_old_mst_topology_state(struct drm_atomic_commit *state, struct drm_dp_mst_topology_mgr *mgr)”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjïõh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjëõh²hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.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+ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_dp_mst_topology_state”h]”hŒdrm_dp_mst_topology_state”…”�”}”(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Œ%drm_atomic_get_old_mst_topology_state”sbŒ'c.drm_atomic_get_old_mst_topology_state”†”asbuh1hhjëõh²hh³jüõh´M+ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/öh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjëõh²hh³jüõh´M+ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj=öh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjëõh²hh³jüõh´M+ubjÍ )�”}”(hŒ%drm_atomic_get_old_mst_topology_state”h]”jÓ )�”}”(hj,öh]”hŒ%drm_atomic_get_old_mst_topology_state”…”�”}”(hjNöh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjJöubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjëõh²hh³jüõh´M+ubjÞ)�”}”(hŒF(struct drm_atomic_commit *state, struct drm_dp_mst_topology_mgr *mgr)”h]”(jä)�”}”(hŒstruct drm_atomic_commit *state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjiöh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjeöubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvöh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjeöubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_atomic_commit”h]”hŒdrm_atomic_commit”…”�”}”(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.drm_atomic_get_old_mst_topology_state”†”asbuh1hhjeöubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥öh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjeöubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj³öh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjeöubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hjÀöh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjeöubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjaöubjä)�”}”(hŒ#struct drm_dp_mst_topology_mgr *mgr”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Œdrm_dp_mst_topology_mgr”h]”hŒdrm_dp_mst_topology_mgr”…”�”}”(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.drm_atomic_get_old_mst_topology_state”†”asbuh1hhjÕöubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÕöubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj#÷h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÕöubjÓ )�”}”(hŒmgr”h]”hŒmgr”…”�”}”(hj0÷h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÕöubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjaöubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjëõh²hh³jüõh´M+ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ2get old MST topology state in atomic state, if any”h]”hŒ2get old MST topology state in atomic state, if any”…”�”}”(hjZ÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M+hjW÷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# jr÷j$ jr÷j% ‰j& ‰j' ‰uh1j˜ h²hhjösh³Nh´Nubj) )�”}”(hXé**Parameters** ``struct drm_atomic_commit *state`` global atomic state ``struct drm_dp_mst_topology_mgr *mgr`` MST topology manager, also the private object in this case **Description** This function wraps drm_atomic_get_old_private_obj_state() passing in the MST atomic state vtable so that the private object state returned is that of a MST topology object. **Return** The old MST topology state, or NULL if there's no topology state for this MST mgr in the global atomic state”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj|÷h]”hŒ Parameters”…”�”}”(hj~÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjz÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M/hjv÷ubjw )�”}”(hhh]”(j| )�”}”(hŒ8``struct drm_atomic_commit *state`` global atomic state ”h]”(j‚ )�”}”(hŒ#``struct drm_atomic_commit *state``”h]”jˆ )�”}”(hj›÷h]”hŒstruct drm_atomic_commit *state”…”�”}”(hj�÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj™÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M,hj•÷ubjž )�”}”(hhh]”hÎ)�”}”(hŒglobal atomic state”h]”hŒglobal atomic state”…”�”}”(hj´÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j°÷h´M,hj±÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj•÷ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j°÷h´M,hj’÷ubj| )�”}”(hŒc``struct drm_dp_mst_topology_mgr *mgr`` MST topology manager, also the private object in this case ”h]”(j‚ )�”}”(hŒ'``struct drm_dp_mst_topology_mgr *mgr``”h]”jˆ )�”}”(hjÔ÷h]”hŒ#struct drm_dp_mst_topology_mgr *mgr”…”�”}”(hjÖ÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÒ÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M-hjÎ÷ubjž )�”}”(hhh]”hÎ)�”}”(hŒ:MST topology manager, also the private object in this case”h]”hŒ:MST topology manager, also the private object in this case”…”�”}”(hjí÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jé÷h´M-hjê÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÎ÷ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jé÷h´M-hj’÷ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjv÷ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjøh]”hŒ Description”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj øubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M/hjv÷ubhÎ)�”}”(hŒ­This function wraps drm_atomic_get_old_private_obj_state() passing in the MST atomic state vtable so that the private object state returned is that of a MST topology object.”h]”hŒ­This function wraps drm_atomic_get_old_private_obj_state() passing in the MST atomic state vtable so that the private object state returned is that of a MST topology object.”…”�”}”(hj%øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M.hjv÷ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj6øh]”hŒReturn”…”�”}”(hj8øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj4øubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M2hjv÷ubhÎ)�”}”(hŒlThe old MST topology state, or NULL if there's no topology state for this MST mgr in the global atomic state”h]”hŒnThe old MST topology state, or NULL if there’s no topology state for this MST mgr in the global atomic state”…”�”}”(hjLøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M3hjv÷ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjösh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ2drm_atomic_get_new_mst_topology_state (C function)”Œ'c.drm_atomic_get_new_mst_topology_state”hNt”auh1j† hjösh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ�struct drm_dp_mst_topology_state * drm_atomic_get_new_mst_topology_state (struct drm_atomic_commit *state, struct drm_dp_mst_topology_mgr *mgr)”h]”j¤ )�”}”(hŒ�struct drm_dp_mst_topology_state *drm_atomic_get_new_mst_topology_state(struct drm_atomic_commit *state, struct drm_dp_mst_topology_mgr *mgr)”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj{øh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjwøh²hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MCubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰øh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjwøh²hh³jˆøh´MCubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_dp_mst_topology_state”h]”hŒdrm_dp_mst_topology_state”…”�”}”(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Œ%drm_atomic_get_new_mst_topology_state”sbŒ'c.drm_atomic_get_new_mst_topology_state”†”asbuh1hhjwøh²hh³jˆøh´MCubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»øh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjwøh²hh³jˆøh´MCubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÉøh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjwøh²hh³jˆøh´MCubjÍ )�”}”(hŒ%drm_atomic_get_new_mst_topology_state”h]”jÓ )�”}”(hj¸øh]”hŒ%drm_atomic_get_new_mst_topology_state”…”�”}”(hjÚøh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÖøubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjwøh²hh³jˆøh´MCubjÞ)�”}”(hŒF(struct drm_atomic_commit *state, struct drm_dp_mst_topology_mgr *mgr)”h]”(jä)�”}”(hŒstruct drm_atomic_commit *state”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Œdrm_atomic_commit”h]”hŒdrm_atomic_commit”…”�”}”(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.drm_atomic_get_new_mst_topology_state”†”asbuh1hhjñøubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1ùh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjñøubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj?ùh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjñøubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hjLùh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjñøubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjíøubjä)�”}”(hŒ#struct drm_dp_mst_topology_mgr *mgr”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjeùh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjaùubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrùh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjaùubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_dp_mst_topology_mgr”h]”hŒdrm_dp_mst_topology_mgr”…”�”}”(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.drm_atomic_get_new_mst_topology_state”†”asbuh1hhjaùubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡ùh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjaùubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj¯ùh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjaùubjÓ )�”}”(hŒmgr”h]”hŒmgr”…”�”}”(hj¼ùh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjaùubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjíøubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjwøh²hh³jˆøh´MCubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjsøh²hh³jˆøh´MCubah}”(h]”jnøah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jˆøh´MChjpøh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ2get new MST topology state in atomic state, if any”h]”hŒ2get new MST topology state in atomic state, if any”…”�”}”(hjæùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MChjãùh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjpøh²hh³jˆøh´MCubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jþùj$ jþùj% ‰j& ‰j' ‰uh1j˜ h²hhjösh³Nh´Nubj) )�”}”(hXé**Parameters** ``struct drm_atomic_commit *state`` global atomic state ``struct drm_dp_mst_topology_mgr *mgr`` MST topology manager, also the private object in this case **Description** This function wraps drm_atomic_get_new_private_obj_state() passing in the MST atomic state vtable so that the private object state returned is that of a MST topology object. **Return** The new MST topology state, or NULL if there's no topology state for this MST mgr in the global atomic state”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjúh]”hŒ Parameters”…”�”}”(hj úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjúubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MGhjúubjw )�”}”(hhh]”(j| )�”}”(hŒ8``struct drm_atomic_commit *state`` global atomic state ”h]”(j‚ )�”}”(hŒ#``struct drm_atomic_commit *state``”h]”jˆ )�”}”(hj'úh]”hŒstruct drm_atomic_commit *state”…”�”}”(hj)úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj%úubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MDhj!úubjž )�”}”(hhh]”hÎ)�”}”(hŒglobal atomic state”h]”hŒglobal atomic state”…”�”}”(hj@úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j<úh´MDhj=úubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj!úubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j<úh´MDhjúubj| )�”}”(hŒc``struct drm_dp_mst_topology_mgr *mgr`` MST topology manager, also the private object in this case ”h]”(j‚ )�”}”(hŒ'``struct drm_dp_mst_topology_mgr *mgr``”h]”jˆ )�”}”(hj`úh]”hŒ#struct drm_dp_mst_topology_mgr *mgr”…”�”}”(hjbúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj^úubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MEhjZúubjž )�”}”(hhh]”hÎ)�”}”(hŒ:MST topology manager, also the private object in this case”h]”hŒ:MST topology manager, also the private object in this case”…”�”}”(hjyúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³juúh´MEhjvúubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjZúubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³juúh´MEhjúubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjúubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj›úh]”hŒ Description”…”�”}”(hj�úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj™úubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MGhjúubhÎ)�”}”(hŒ­This function wraps drm_atomic_get_new_private_obj_state() passing in the MST atomic state vtable so that the private object state returned is that of a MST topology object.”h]”hŒ­This function wraps drm_atomic_get_new_private_obj_state() passing in the MST atomic state vtable so that the private object state returned is that of a MST topology object.”…”�”}”(hj±úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MFhjúubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjÂúh]”hŒReturn”…”�”}”(hjÄúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÀúubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MJhjúubhÎ)�”}”(hŒlThe new MST topology state, or NULL if there's no topology state for this MST mgr in the global atomic state”h]”hŒnThe new MST topology state, or NULL if there’s no topology state for this MST mgr in the global atomic state”…”�”}”(hjØúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MKhjúubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjösh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ)drm_dp_mst_topology_mgr_init (C function)”Œc.drm_dp_mst_topology_mgr_init”hNt”auh1j† hjösh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒºint drm_dp_mst_topology_mgr_init (struct drm_dp_mst_topology_mgr *mgr, struct drm_device *dev, struct drm_dp_aux *aux, int max_dpcd_transaction_bytes, int max_payloads, int conn_base_id)”h]”j¤ )�”}”(hŒ¹int drm_dp_mst_topology_mgr_init(struct drm_dp_mst_topology_mgr *mgr, struct drm_device *dev, struct drm_dp_aux *aux, int max_dpcd_transaction_bytes, int max_payloads, int conn_base_id)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjûh²hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.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Œdrm_dp_mst_topology_mgr_init”h]”jÓ )�”}”(hŒdrm_dp_mst_topology_mgr_init”h]”hŒdrm_dp_mst_topology_mgr_init”…”�”}”(hj(ûh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj$ûubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjûh²hh³jûh´M[ubjÞ)�”}”(hŒ™(struct drm_dp_mst_topology_mgr *mgr, struct drm_device *dev, struct drm_dp_aux *aux, int max_dpcd_transaction_bytes, int max_payloads, int conn_base_id)”h]”(jä)�”}”(hŒ#struct drm_dp_mst_topology_mgr *mgr”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjDûh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj@ûubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQûh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj@ûubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_dp_mst_topology_mgr”h]”hŒdrm_dp_mst_topology_mgr”…”�”}”(hjbûh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj_ûubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jdûŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj*ûsbŒc.drm_dp_mst_topology_mgr_init”†”asbuh1hhj@ûubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚ûh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj@ûubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj�ûh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj@ûubjÓ )�”}”(hŒmgr”h]”hŒmgr”…”�”}”(hj�ûh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj@ûubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj<ûubjä)�”}”(hŒstruct drm_device *dev”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Œ drm_device”h]”hŒ drm_device”…”�”}”(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.drm_dp_mst_topology_mgr_init”†”asbuh1hhj²ûubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjòûh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj²ûubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj²ûubjÓ )�”}”(hŒdev”h]”hŒdev”…”�”}”(hj üh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj²ûubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj<ûubjä)�”}”(hŒstruct drm_dp_aux *aux”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj&üh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj"üubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3üh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj"üubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(hjDüh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjAüubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jFüŒmodname”NŒ classname”Njé jì )�”}”jï ]”j~ûŒc.drm_dp_mst_topology_mgr_init”†”asbuh1hhj"üubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbüh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj"üubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjpüh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj"üubjÓ )�”}”(hŒaux”h]”hŒaux”…”�”}”(hj}üh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj"üubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj<ûubjä)�”}”(hŒint max_dpcd_transaction_bytes”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(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Œmax_dpcd_transaction_bytes”h]”hŒmax_dpcd_transaction_bytes”…”�”}”(hj²üh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj’üubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj<ûubjä)�”}”(hŒint max_payloads”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(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Œ max_payloads”h]”hŒ max_payloads”…”�”}”(hjçüh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÇüubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj<ûubjä)�”}”(hŒint conn_base_id”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(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Œ conn_base_id”h]”hŒ conn_base_id”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjüüubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj<ûubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjûh²hh³jûh´M[ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œinitialise a topology manager”h]”hŒinitialise a topology manager”…”�”}”(hjFýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M[hjCý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²hhjösh³Nh´Nubj) )�”}”(hX**Parameters** ``struct drm_dp_mst_topology_mgr *mgr`` manager struct to initialise ``struct drm_device *dev`` device providing this structure - for i2c addition. ``struct drm_dp_aux *aux`` DP helper aux channel to talk to this device ``int max_dpcd_transaction_bytes`` hw specific DPCD transaction limit ``int max_payloads`` maximum number of payloads this GPU can source ``int conn_base_id`` the connector object ID the MST device is connected to. **Description** Return 0 for success, or negative error code on failure”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjhýh]”hŒ Parameters”…”�”}”(hjjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjfýubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M_hjbýubjw )�”}”(hhh]”(j| )�”}”(hŒE``struct drm_dp_mst_topology_mgr *mgr`` manager struct to initialise ”h]”(j‚ )�”}”(hŒ'``struct drm_dp_mst_topology_mgr *mgr``”h]”jˆ )�”}”(hj‡ýh]”hŒ#struct drm_dp_mst_topology_mgr *mgr”…”�”}”(hj‰ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj…ýubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M\hj�ýubjž )�”}”(hhh]”hÎ)�”}”(hŒmanager struct to initialise”h]”hŒmanager struct to initialise”…”�”}”(hj ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jœýh´M\hj�ýubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj�ýubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jœýh´M\hj~ýubj| )�”}”(hŒO``struct drm_device *dev`` device providing this structure - for i2c addition. ”h]”(j‚ )�”}”(hŒ``struct drm_device *dev``”h]”jˆ )�”}”(hjÀýh]”hŒstruct drm_device *dev”…”�”}”(hjÂýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¾ýubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M]hjºýubjž )�”}”(hhh]”hÎ)�”}”(hŒ3device providing this structure - for i2c addition.”h]”hŒ3device providing this structure - for i2c addition.”…”�”}”(hjÙýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÕýh´M]hjÖýubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjºýubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÕýh´M]hj~ýubj| )�”}”(hŒH``struct drm_dp_aux *aux`` DP helper aux channel to talk to this device ”h]”(j‚ )�”}”(hŒ``struct drm_dp_aux *aux``”h]”jˆ )�”}”(hjùýh]”hŒstruct drm_dp_aux *aux”…”�”}”(hjûýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj÷ýubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M^hjóýubjž )�”}”(hhh]”hÎ)�”}”(hŒ,DP helper aux channel to talk to this device”h]”hŒ,DP helper aux channel to talk to this device”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jþh´M^hjþubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjóýubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jþh´M^hj~ýubj| )�”}”(hŒF``int max_dpcd_transaction_bytes`` hw specific DPCD transaction limit ”h]”(j‚ )�”}”(hŒ"``int max_dpcd_transaction_bytes``”h]”jˆ )�”}”(hj2þh]”hŒint max_dpcd_transaction_bytes”…”�”}”(hj4þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj0þubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M_hj,þubjž )�”}”(hhh]”hÎ)�”}”(hŒ"hw specific DPCD transaction limit”h]”hŒ"hw specific DPCD transaction limit”…”�”}”(hjKþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jGþh´M_hjHþubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj,þubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jGþh´M_hj~ýubj| )�”}”(hŒD``int max_payloads`` maximum number of payloads this GPU can source ”h]”(j‚ )�”}”(hŒ``int max_payloads``”h]”jˆ )�”}”(hjkþh]”hŒint max_payloads”…”�”}”(hjmþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjiþubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M`hjeþubjž )�”}”(hhh]”hÎ)�”}”(hŒ.maximum number of payloads this GPU can source”h]”hŒ.maximum number of payloads this GPU can source”…”�”}”(hj„þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j€þh´M`hj�þubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjeþubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j€þh´M`hj~ýubj| )�”}”(hŒM``int conn_base_id`` the connector object ID the MST device is connected to. ”h]”(j‚ )�”}”(hŒ``int conn_base_id``”h]”jˆ )�”}”(hj¤þh]”hŒint conn_base_id”…”�”}”(hj¦þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¢þubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mahjžþubjž )�”}”(hhh]”hÎ)�”}”(hŒ7the connector object ID the MST device is connected to.”h]”hŒ7the connector object ID the MST device is connected to.”…”�”}”(hj½þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¹þh´Mahjºþubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjžþubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¹þh´Mahj~ýubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjbýubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjßþh]”hŒ Description”…”�”}”(hjáþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÝþubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MchjbýubhÎ)�”}”(hŒ7Return 0 for success, or negative error code on failure”h]”hŒ7Return 0 for success, or negative error code on failure”…”�”}”(hjõþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mbhjbýubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjösh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ,drm_dp_mst_topology_mgr_destroy (C function)”Œ!c.drm_dp_mst_topology_mgr_destroy”hNt”auh1j† hjösh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒJvoid drm_dp_mst_topology_mgr_destroy (struct drm_dp_mst_topology_mgr *mgr)”h]”j¤ )�”}”(hŒIvoid drm_dp_mst_topology_mgr_destroy(struct drm_dp_mst_topology_mgr *mgr)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj$ÿh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj ÿh²hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M“ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3ÿh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj ÿh²hh³j2ÿh´M“ubjÍ )�”}”(hŒdrm_dp_mst_topology_mgr_destroy”h]”jÓ )�”}”(hŒdrm_dp_mst_topology_mgr_destroy”h]”hŒdrm_dp_mst_topology_mgr_destroy”…”�”}”(hjEÿh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjAÿubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj ÿh²hh³j2ÿh´M“ubjÞ)�”}”(hŒ%(struct drm_dp_mst_topology_mgr *mgr)”h]”jä)�”}”(hŒ#struct drm_dp_mst_topology_mgr *mgr”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjaÿh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj]ÿubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnÿh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj]ÿubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_dp_mst_topology_mgr”h]”hŒdrm_dp_mst_topology_mgr”…”�”}”(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%)�”}”jjGÿsbŒ!c.drm_dp_mst_topology_mgr_destroy”†”asbuh1hhj]ÿubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸÿh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj]ÿubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj­ÿh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj]ÿubjÓ )�”}”(hŒmgr”h]”hŒmgr”…”�”}”(hjºÿh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj]ÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjYÿubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj ÿh²hh³j2ÿh´M“ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjÿh²hh³j2ÿh´M“ubah}”(h]”jÿah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j2ÿh´M“hjÿh²hubj )�”}”(hhh]”hÎ)�”}”(hŒdestroy topology manager.”h]”hŒdestroy topology manager.”…”�”}”(hjäÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M“hjáÿh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÿh²hh³j2ÿh´M“ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jüÿj$ jüÿj% ‰j& ‰j' ‰uh1j˜ h²hhjösh³Nh´Nubj) )�”}”(hŒL**Parameters** ``struct drm_dp_mst_topology_mgr *mgr`` manager to destroy”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M—hjubjw )�”}”(hhh]”j| )�”}”(hŒ:``struct drm_dp_mst_topology_mgr *mgr`` manager to destroy”h]”(j‚ )�”}”(hŒ'``struct drm_dp_mst_topology_mgr *mgr``”h]”jˆ )�”}”(hj%h]”hŒ#struct drm_dp_mst_topology_mgr *mgr”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M™hjubjž )�”}”(hhh]”hÎ)�”}”(hŒmanager to destroy”h]”hŒmanager to destroy”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M”hj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j:h´M™hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjösh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ&drm_dp_mst_aux_for_parent (C function)”Œc.drm_dp_mst_aux_for_parent”hNt”auh1j† hjösh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒLstruct drm_dp_aux * drm_dp_mst_aux_for_parent (struct drm_dp_mst_port *port)”h]”j¤ )�”}”(hŒJstruct drm_dp_aux *drm_dp_mst_aux_for_parent(struct drm_dp_mst_port *port)”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj{h²hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.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¯ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(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Œdrm_dp_mst_aux_for_parent”sbŒc.drm_dp_mst_aux_for_parent”†”asbuh1hhj{h²hh³jŒh´M¯ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj{h²hh³jŒh´M¯ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj{h²hh³jŒh´M¯ubjÍ )�”}”(hŒdrm_dp_mst_aux_for_parent”h]”jÓ )�”}”(hj¼h]”hŒdrm_dp_mst_aux_for_parent”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÚubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj{h²hh³jŒh´M¯ubjÞ)�”}”(hŒ(struct drm_dp_mst_port *port)”h]”jä)�”}”(hŒstruct drm_dp_mst_port *port”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjõubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjõubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_dp_mst_port”h]”hŒdrm_dp_mst_port”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jŒmodname”NŒ classname”Njé jì )�”}”jï ]”jºŒc.drm_dp_mst_aux_for_parent”†”asbuh1hhjõubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjõubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjõubjÓ )�”}”(hŒport”h]”hŒport”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjõubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjñubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj{h²hh³jŒh´M¯ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjwh²hh³jŒh´M¯ubah}”(h]”jrah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jŒh´M¯hjth²hubj )�”}”(hhh]”hÎ)�”}”(hŒ+Get the AUX device for an MST port's parent”h]”hŒ-Get the AUX device for an MST port’s parent”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M¯hjwh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjth²hh³jŒh´M¯ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j’j$ j’j% ‰j& ‰j' ‰uh1j˜ h²hhjösh³Nh´Nubj) )�”}”(hŒÊ**Parameters** ``struct drm_dp_mst_port *port`` MST port whose parent's AUX device is returned **Description** Return the AUX device for **port**'s parent or NULL if port's parent is the root port.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjœh]”hŒ Parameters”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjšubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M³hj–ubjw )�”}”(hhh]”j| )�”}”(hŒP``struct drm_dp_mst_port *port`` MST port whose parent's AUX device is returned ”h]”(j‚ )�”}”(hŒ ``struct drm_dp_mst_port *port``”h]”jˆ )�”}”(hj»h]”hŒstruct drm_dp_mst_port *port”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M°hjµubjž )�”}”(hhh]”hÎ)�”}”(hŒ.MST port whose parent's AUX device is returned”h]”hŒ0MST port whose parent’s AUX device is returned”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÐh´M°hjÑubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjµubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÐh´M°hj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj–ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjöh]”hŒ Description”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjôubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M²hj–ubhÎ)�”}”(hŒVReturn the AUX device for **port**'s parent or NULL if port's parent is the root port.”h]”(hŒReturn the AUX device for ”…”�”}”(hj h²hh³Nh´Nubj3 )�”}”(hŒ**port**”h]”hŒport”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj ubhŒ8’s parent or NULL if port’s parent is the root port.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M±hj–ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjösh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ(drm_dp_mst_dsc_aux_for_port (C function)”Œc.drm_dp_mst_dsc_aux_for_port”hNt”auh1j† hjösh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒNstruct drm_dp_aux * drm_dp_mst_dsc_aux_for_port (struct drm_dp_mst_port *port)”h]”j¤ )�”}”(hŒLstruct drm_dp_aux *drm_dp_mst_dsc_aux_for_port(struct drm_dp_mst_port *port)”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjIh²hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M¿ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjIh²hh³jZh´M¿ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_dp_aux”h]”hŒ drm_dp_aux”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjiubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jnŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jŒdrm_dp_mst_dsc_aux_for_port”sbŒc.drm_dp_mst_dsc_aux_for_port”†”asbuh1hhjIh²hh³jZh´M¿ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjIh²hh³jZh´M¿ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjIh²hh³jZh´M¿ubjÍ )�”}”(hŒdrm_dp_mst_dsc_aux_for_port”h]”jÓ )�”}”(hjŠh]”hŒdrm_dp_mst_dsc_aux_for_port”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¨ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjIh²hh³jZh´M¿ubjÞ)�”}”(hŒ(struct drm_dp_mst_port *port)”h]”jä)�”}”(hŒstruct drm_dp_mst_port *port”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Œdrm_dp_mst_port”h]”hŒdrm_dp_mst_port”…”�”}”(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.drm_dp_mst_dsc_aux_for_port”†”asbuh1hhjÃubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÃubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÃubjÓ )�”}”(hŒport”h]”hŒport”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÃubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¿ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjIh²hh³jZh´M¿ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjEh²hh³jZh´M¿ubah}”(h]”j@ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jZh´M¿hjBh²hubj )�”}”(hhh]”hÎ)�”}”(hŒFind the correct aux for DSC”h]”hŒFind the correct aux for DSC”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M¿hjEh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjBh²hh³jZh´M¿ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j`j$ j`j% ‰j& ‰j' ‰uh1j˜ h²hhjösh³Nh´Nubj) )�”}”(hX**Parameters** ``struct drm_dp_mst_port *port`` The port to check. A leaf of the MST tree with an attached display. **Description** Depending on the situation, DSC may be enabled via the endpoint aux, the immediately upstream aux, or the connector's physical aux. This is both the correct aux to read DSC_CAPABILITY and the correct aux to write DSC_ENABLED. This operation can be expensive (up to four aux reads), so the caller should cache the return. **Return** NULL if DSC cannot be enabled on this port, otherwise the aux device”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjjh]”hŒ Parameters”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjhubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MÃhjdubjw )�”}”(hhh]”j| )�”}”(hŒe``struct drm_dp_mst_port *port`` The port to check. A leaf of the MST tree with an attached display. ”h]”(j‚ )�”}”(hŒ ``struct drm_dp_mst_port *port``”h]”jˆ )�”}”(hj‰h]”hŒstruct drm_dp_mst_port *port”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MÀhjƒubjž )�”}”(hhh]”hÎ)�”}”(hŒCThe port to check. A leaf of the MST tree with an attached display.”h]”hŒCThe port to check. A leaf of the MST tree with an attached display.”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jžh´MÀhjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jžh´MÀhj€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjdubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjÄh]”hŒ Description”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÂubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MÂhjdubhÎ)�”}”(hŒƒDepending on the situation, DSC may be enabled via the endpoint aux, the immediately upstream aux, or the connector's physical aux.”h]”hŒ…Depending on the situation, DSC may be enabled via the endpoint aux, the immediately upstream aux, or the connector’s physical aux.”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MÁhjdubhÎ)�”}”(hŒ]This is both the correct aux to read DSC_CAPABILITY and the correct aux to write DSC_ENABLED.”h]”hŒ]This is both the correct aux to read DSC_CAPABILITY and the correct aux to write DSC_ENABLED.”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MÄhjdubhÎ)�”}”(hŒ^This operation can be expensive (up to four aux reads), so the caller should cache the return.”h]”hŒ^This operation can be expensive (up to four aux reads), so the caller should cache the return.”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MÇhjdubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj h]”hŒReturn”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MÊhjdubhÎ)�”}”(hŒDNULL if DSC cannot be enabled on this port, otherwise the aux device”h]”hŒDNULL if DSC cannot be enabled on this port, otherwise the aux device”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:319: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MËhjdubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjösh²hh³Nh´Nubeh}”(h]”jah ]”h"]”h$]”j2ah&]”uh1hµhjØph²hh³hÌh´M:j„CKubh¶)�”}”(hhh]”(h»)�”}”(hŒTopology Lifetime Internals”h]”hŒTopology Lifetime Internals”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÊj2uh1hºhj;h²hh³hÌh´MCubhÎ)�”}”(hŒ~These functions aren't exported to drivers, but are documented here to help make the MST topology helpers easier to understand”h]”hŒ€These functions aren’t exported to drivers, but are documented here to help make the MST topology helpers easier to understand”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³hÌh´MEhj;h²hubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ'drm_dp_mst_get_mstb_malloc (C function)”Œc.drm_dp_mst_get_mstb_malloc”hNt”auh1j† hj;h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ@void drm_dp_mst_get_mstb_malloc (struct drm_dp_mst_branch *mstb)”h]”j¤ )�”}”(hŒ?void drm_dp_mst_get_mstb_malloc(struct drm_dp_mst_branch *mstb)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjoh²hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M«ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjoh²hh³j�h´M«ubjÍ )�”}”(hŒdrm_dp_mst_get_mstb_malloc”h]”jÓ )�”}”(hŒdrm_dp_mst_get_mstb_malloc”h]”hŒdrm_dp_mst_get_mstb_malloc”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj�ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjoh²hh³j�h´M«ubjÞ)�”}”(hŒ (struct drm_dp_mst_branch *mstb)”h]”jä)�”}”(hŒstruct drm_dp_mst_branch *mstb”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Œdrm_dp_mst_branch”h]”hŒdrm_dp_mst_branch”…”�”}”(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%)�”}”jj–sbŒc.drm_dp_mst_get_mstb_malloc”†”asbuh1hhj¬ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¬ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¬ubjÓ )�”}”(hŒmstb”h]”hŒmstb”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¬ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¨ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjoh²hh³j�h´M«ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjkh²hh³j�h´M«ubah}”(h]”jfah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j�h´M«hjhh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ0Increment the malloc refcount of a branch device”h]”hŒ0Increment the malloc refcount of a branch device”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M«hj0h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjhh²hh³j�h´M«ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jKj$ jKj% ‰j& ‰j' ‰uh1j˜ h²hhj;h³Nh´Nubj) )�”}”(hX¹**Parameters** ``struct drm_dp_mst_branch *mstb`` The :c:type:`struct drm_dp_mst_branch ` to increment the malloc refcount of **Description** Increments :c:type:`drm_dp_mst_branch.malloc_kref `. When :c:type:`drm_dp_mst_branch.malloc_kref ` reaches 0, the memory allocation for **mstb** will be released and **mstb** may no longer be used. See also: drm_dp_mst_put_mstb_malloc()”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjUh]”hŒ Parameters”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjSubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M¯hjOubjw )�”}”(hhh]”j| )�”}”(hŒ‚``struct drm_dp_mst_branch *mstb`` The :c:type:`struct drm_dp_mst_branch ` to increment the malloc refcount of ”h]”(j‚ )�”}”(hŒ"``struct drm_dp_mst_branch *mstb``”h]”jˆ )�”}”(hjth]”hŒstruct drm_dp_mst_branch *mstb”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjrubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M­hjnubjž )�”}”(hhh]”hÎ)�”}”(hŒ^The :c:type:`struct drm_dp_mst_branch ` to increment the malloc refcount of”h]”(hŒThe ”…”�”}”(hj�h²hh³Nh´Nubh)�”}”(hŒ6:c:type:`struct drm_dp_mst_branch `”h]”jˆ )�”}”(hj—h]”hŒstruct drm_dp_mst_branch”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj•ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_branch”uh1hh³j‰h´M­hj�ubhŒ$ to increment the malloc refcount of”…”�”}”(hj�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j‰h´M­hjŠubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjnubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j‰h´M­hjkubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjOubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjÒh]”hŒ Description”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÐubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M¯hjOubhÎ)�”}”(hŒëIncrements :c:type:`drm_dp_mst_branch.malloc_kref `. When :c:type:`drm_dp_mst_branch.malloc_kref ` reaches 0, the memory allocation for **mstb** will be released and **mstb** may no longer be used.”h]”(hŒ Increments ”…”�”}”(hjèh²hh³Nh´Nubh)�”}”(hŒ;:c:type:`drm_dp_mst_branch.malloc_kref `”h]”jˆ )�”}”(hjòh]”hŒdrm_dp_mst_branch.malloc_kref”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjðubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_branch”uh1hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M®hjèubhŒ. When ”…”�”}”(hjèh²hh³Nh´Nubh)�”}”(hŒ;:c:type:`drm_dp_mst_branch.malloc_kref `”h]”jˆ )�”}”(hjh]”hŒdrm_dp_mst_branch.malloc_kref”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_branch”uh1hh³jh´M®hjèubhŒ& reaches 0, the memory allocation for ”…”�”}”(hjèh²hh³Nh´Nubj3 )�”}”(hŒ**mstb**”h]”hŒmstb”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjèubhŒ will be released and ”…”�”}”(hjèh²hh³Nh´Nubj3 )�”}”(hŒ**mstb**”h]”hŒmstb”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjèubhŒ may no longer be used.”…”�”}”(hjèh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jh´M®hjOubhÎ)�”}”(hŒ&See also: drm_dp_mst_put_mstb_malloc()”h]”hŒ&See also: drm_dp_mst_put_mstb_malloc()”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M²hjOubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj;h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ'drm_dp_mst_put_mstb_malloc (C function)”Œc.drm_dp_mst_put_mstb_malloc”hNt”auh1j† hj;h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ@void drm_dp_mst_put_mstb_malloc (struct drm_dp_mst_branch *mstb)”h]”j¤ )�”}”(hŒ?void drm_dp_mst_put_mstb_malloc(struct drm_dp_mst_branch *mstb)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”•}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjŒh²hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.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Œdrm_dp_mst_put_mstb_malloc”h]”jÓ )�”}”(hŒdrm_dp_mst_put_mstb_malloc”h]”hŒdrm_dp_mst_put_mstb_malloc”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj­ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjŒh²hh³jžh´M½ubjÞ)�”}”(hŒ (struct drm_dp_mst_branch *mstb)”h]”jä)�”}”(hŒstruct drm_dp_mst_branch *mstb”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Œdrm_dp_mst_branch”h]”hŒdrm_dp_mst_branch”…”�”}”(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%)�”}”jj³sbŒc.drm_dp_mst_put_mstb_malloc”†”asbuh1hhjÉubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÉubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÉubjÓ )�”}”(hŒmstb”h]”hŒmstb”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÉubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÅubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjŒh²hh³jžh´M½ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ0Decrement the malloc refcount of a branch device”h]”hŒ0Decrement the malloc refcount of a branch device”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M½hjMh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj…h²hh³jžh´M½ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jhj$ jhj% ‰j& ‰j' ‰uh1j˜ h²hhj;h³Nh´Nubj) )�”}”(hX¹**Parameters** ``struct drm_dp_mst_branch *mstb`` The :c:type:`struct drm_dp_mst_branch ` to decrement the malloc refcount of **Description** Decrements :c:type:`drm_dp_mst_branch.malloc_kref `. When :c:type:`drm_dp_mst_branch.malloc_kref ` reaches 0, the memory allocation for **mstb** will be released and **mstb** may no longer be used. See also: drm_dp_mst_get_mstb_malloc()”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjrh]”hŒ Parameters”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjpubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MÁhjlubjw )�”}”(hhh]”j| )�”}”(hŒ‚``struct drm_dp_mst_branch *mstb`` The :c:type:`struct drm_dp_mst_branch ` to decrement the malloc refcount of ”h]”(j‚ )�”}”(hŒ"``struct drm_dp_mst_branch *mstb``”h]”jˆ )�”}”(hj‘h]”hŒstruct drm_dp_mst_branch *mstb”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M¿hj‹ubjž )�”}”(hhh]”hÎ)�”}”(hŒ^The :c:type:`struct drm_dp_mst_branch ` to decrement the malloc refcount of”h]”(hŒThe ”…”�”}”(hjªh²hh³Nh´Nubh)�”}”(hŒ6:c:type:`struct drm_dp_mst_branch `”h]”jˆ )�”}”(hj´h]”hŒstruct drm_dp_mst_branch”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj²ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_branch”uh1hh³j¦h´M¿hjªubhŒ$ to decrement the malloc refcount of”…”�”}”(hjªh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¦h´M¿hj§ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¦h´M¿hjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjlubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjïh]”hŒ Description”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjíubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MÁhjlubhÎ)�”}”(hŒëDecrements :c:type:`drm_dp_mst_branch.malloc_kref `. When :c:type:`drm_dp_mst_branch.malloc_kref ` reaches 0, the memory allocation for **mstb** will be released and **mstb** may no longer be used.”h]”(hŒ Decrements ”…”�”}”(hjh²hh³Nh´Nubh)�”}”(hŒ;:c:type:`drm_dp_mst_branch.malloc_kref `”h]”jˆ )�”}”(hjh]”hŒdrm_dp_mst_branch.malloc_kref”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_branch”uh1hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MÀhjubhŒ. When ”…”�”}”(hjh²hh³Nh´Nubh)�”}”(hŒ;:c:type:`drm_dp_mst_branch.malloc_kref `”h]”jˆ )�”}”(hj3h]”hŒdrm_dp_mst_branch.malloc_kref”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj1ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_branch”uh1hh³j,h´MÀhjubhŒ& reaches 0, the memory allocation for ”…”�”}”(hjh²hh³Nh´Nubj3 )�”}”(hŒ**mstb**”h]”hŒmstb”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjubhŒ will be released and ”…”�”}”(hjh²hh³Nh´Nubj3 )�”}”(hŒ**mstb**”h]”hŒmstb”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjubhŒ may no longer be used.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j,h´MÀhjlubhÎ)�”}”(hŒ&See also: drm_dp_mst_get_mstb_malloc()”h]”hŒ&See also: drm_dp_mst_get_mstb_malloc()”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MÄhjlubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj;h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ-drm_dp_mst_topology_try_get_mstb (C function)”Œ"c.drm_dp_mst_topology_try_get_mstb”hNt”auh1j† hj;h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒEint drm_dp_mst_topology_try_get_mstb (struct drm_dp_mst_branch *mstb)”h]”j¤ )�”}”(hŒDint drm_dp_mst_topology_try_get_mstb(struct drm_dp_mst_branch *mstb)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj©h²hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.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Œ drm_dp_mst_topology_try_get_mstb”h]”jÓ )�”}”(hŒ drm_dp_mst_topology_try_get_mstb”h]”hŒ drm_dp_mst_topology_try_get_mstb”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÊubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj©h²hh³j»h´MÍubjÞ)�”}”(hŒ (struct drm_dp_mst_branch *mstb)”h]”jä)�”}”(hŒstruct drm_dp_mst_branch *mstb”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Œdrm_dp_mst_branch”h]”hŒdrm_dp_mst_branch”…”�”}”(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%)�”}”jjÐsbŒ"c.drm_dp_mst_topology_try_get_mstb”†”asbuh1hhjæubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj( h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjæubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj6 h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjæubjÓ )�”}”(hŒmstb”h]”hŒmstb”…”�”}”(hjC h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjæubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjâubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj©h²hh³j»h´MÍubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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ŒCIncrement the topology refcount of a branch device unless it's zero”h]”hŒEIncrement the topology refcount of a branch device unless it’s zero”…”�”}”(hjm h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MÍhjj 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²hhj;h³Nh´Nubj) )�”}”(hXz**Parameters** ``struct drm_dp_mst_branch *mstb`` :c:type:`struct drm_dp_mst_branch ` to increment the topology refcount of **Description** Attempts to grab a topology reference to **mstb**, if it hasn't yet been removed from the topology (e.g. :c:type:`drm_dp_mst_branch.topology_kref ` has reached 0). Holding a topology reference implies that a malloc reference will be held to **mstb** as long as the user holds the topology reference. Care should be taken to ensure that the user has at least one malloc reference to **mstb**. If you already have a topology reference to **mstb**, you should use drm_dp_mst_topology_get_mstb() instead. See also: drm_dp_mst_topology_get_mstb() drm_dp_mst_topology_put_mstb() **Return** * 1: A topology reference was grabbed successfully * 0: **port** is no longer in the topology, no reference was grabbed”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj� h]”hŒ Parameters”…”�”}”(hj‘ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj� ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MÑhj‰ ubjw )�”}”(hhh]”j| )�”}”(hŒ€``struct drm_dp_mst_branch *mstb`` :c:type:`struct drm_dp_mst_branch ` to increment the topology refcount of ”h]”(j‚ )�”}”(hŒ"``struct drm_dp_mst_branch *mstb``”h]”jˆ )�”}”(hj® h]”hŒstruct drm_dp_mst_branch *mstb”…”�”}”(hj° h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¬ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MÏhj¨ ubjž )�”}”(hhh]”hÎ)�”}”(hŒ\:c:type:`struct drm_dp_mst_branch ` to increment the topology refcount of”h]”(h)�”}”(hŒ6:c:type:`struct drm_dp_mst_branch `”h]”jˆ )�”}”(hjÍ h]”hŒstruct drm_dp_mst_branch”…”�”}”(hjÏ h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjË ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_branch”uh1hh³jà h´MÏhjÇ ubhŒ& to increment the topology refcount of”…”�”}”(hjÇ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jà h´MÏhjÄ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¨ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jà h´MÏhj¥ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj‰ ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj h]”hŒ Description”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MÑhj‰ ubhÎ)�”}”(hX>Attempts to grab a topology reference to **mstb**, if it hasn't yet been removed from the topology (e.g. :c:type:`drm_dp_mst_branch.topology_kref ` has reached 0). Holding a topology reference implies that a malloc reference will be held to **mstb** as long as the user holds the topology reference.”h]”(hŒ)Attempts to grab a topology reference to ”…”�”}”(hj h²hh³Nh´Nubj3 )�”}”(hŒ**mstb**”h]”hŒmstb”…”�”}”(hj& h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj ubhŒ:, if it hasn’t yet been removed from the topology (e.g. ”…”�”}”(hj h²hh³Nh´Nubh)�”}”(hŒ=:c:type:`drm_dp_mst_branch.topology_kref `”h]”jˆ )�”}”(hj: h]”hŒdrm_dp_mst_branch.topology_kref”…”�”}”(hj< h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj8 ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_branch”uh1hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MÐhj ubhŒ^ has reached 0). Holding a topology reference implies that a malloc reference will be held to ”…”�”}”(hj h²hh³Nh´Nubj3 )�”}”(hŒ**mstb**”h]”hŒmstb”…”�”}”(hj\ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj ubhŒ2 as long as the user holds the topology reference.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jW h´MÐhj‰ ubhÎ)�”}”(hŒÈCare should be taken to ensure that the user has at least one malloc reference to **mstb**. If you already have a topology reference to **mstb**, you should use drm_dp_mst_topology_get_mstb() instead.”h]”(hŒRCare should be taken to ensure that the user has at least one malloc reference to ”…”�”}”(hjt h²hh³Nh´Nubj3 )�”}”(hŒ**mstb**”h]”hŒmstb”…”�”}”(hj| h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjt ubhŒ.. If you already have a topology reference to ”…”�”}”(hjt h²hh³Nh´Nubj3 )�”}”(hŒ**mstb**”h]”hŒmstb”…”�”}”(hjŽ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjt ubhŒ8, you should use drm_dp_mst_topology_get_mstb() instead.”…”�”}”(hjt h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MÕhj‰ ubhÎ)�”}”(hŒGSee also: drm_dp_mst_topology_get_mstb() drm_dp_mst_topology_put_mstb()”h]”hŒGSee also: drm_dp_mst_topology_get_mstb() drm_dp_mst_topology_put_mstb()”…”�”}”(hj§ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MÙhj‰ ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj¸ h]”hŒReturn”…”�”}”(hjº h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¶ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MÝhj‰ ubhú)�”}”(hhh]”(hÿ)�”}”(hŒ01: A topology reference was grabbed successfully”h]”hÎ)�”}”(hjÓ h]”hŒ01: A topology reference was grabbed successfully”…”�”}”(hjÕ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MÞhjÑ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjÎ ubhÿ)�”}”(hŒB0: **port** is no longer in the topology, no reference was grabbed”h]”hÎ)�”}”(hjë h]”(hŒ0: ”…”�”}”(hjí h²hh³Nh´Nubj3 )�”}”(hŒ**port**”h]”hŒport”…”�”}”(hjô h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjí ubhŒ7 is no longer in the topology, no reference was grabbed”…”�”}”(hjí h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mßhjé ubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjÎ ubeh}”(h]”h ]”h"]”h$]”h&]”jNjOuh1hùh³jâ h´MÞhj‰ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj;h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ)drm_dp_mst_topology_get_mstb (C function)”Œc.drm_dp_mst_topology_get_mstb”hNt”auh1j† hj;h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒBvoid drm_dp_mst_topology_get_mstb (struct drm_dp_mst_branch *mstb)”h]”j¤ )�”}”(hŒAvoid drm_dp_mst_topology_get_mstb(struct drm_dp_mst_branch *mstb)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj9 h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj5 h²hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Môubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjH h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj5 h²hh³jG h´MôubjÍ )�”}”(hŒdrm_dp_mst_topology_get_mstb”h]”jÓ )�”}”(hŒdrm_dp_mst_topology_get_mstb”h]”hŒdrm_dp_mst_topology_get_mstb”…”�”}”(hjZ h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjV ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj5 h²hh³jG h´MôubjÞ)�”}”(hŒ (struct drm_dp_mst_branch *mstb)”h]”jä)�”}”(hŒstruct drm_dp_mst_branch *mstb”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjv h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjr ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒ h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjr ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_dp_mst_branch”h]”hŒdrm_dp_mst_branch”…”�”}”(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%)�”}”jj\ sbŒc.drm_dp_mst_topology_get_mstb”†”asbuh1hhjr ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´ h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjr ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjr ubjÓ )�”}”(hŒmstb”h]”hŒmstb”…”�”}”(hjÏ h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjr ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjn ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj5 h²hh³jG h´Môubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj1 h²hh³jG h´Môubah}”(h]”j, ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jG h´Môhj. h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ2Increment the topology refcount of a branch device”h]”hŒ2Increment the topology refcount of a branch device”…”�”}”(hjù h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Môhjö h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj. h²hh³jG h´Môubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j j$ j j% ‰j& ‰j' ‰uh1j˜ h²hhj;h³Nh´Nubj) )�”}”(hX9**Parameters** ``struct drm_dp_mst_branch *mstb`` The :c:type:`struct drm_dp_mst_branch ` to increment the topology refcount of **Description** Increments :c:type:`drm_dp_mst_branch.topology_refcount ` without checking whether or not it's already reached 0. This is only valid to use in scenarios where you are already guaranteed to have at least one active topology reference to **mstb**. Otherwise, drm_dp_mst_topology_try_get_mstb() must be used. See also: drm_dp_mst_topology_try_get_mstb() drm_dp_mst_topology_put_mstb()”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj h]”hŒ Parameters”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Møhj ubjw )�”}”(hhh]”j| )�”}”(hŒ„``struct drm_dp_mst_branch *mstb`` The :c:type:`struct drm_dp_mst_branch ` to increment the topology refcount of ”h]”(j‚ )�”}”(hŒ"``struct drm_dp_mst_branch *mstb``”h]”jˆ )�”}”(hj: h]”hŒstruct drm_dp_mst_branch *mstb”…”�”}”(hj< h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj8 ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Möhj4 ubjž )�”}”(hhh]”hÎ)�”}”(hŒ`The :c:type:`struct drm_dp_mst_branch ` to increment the topology refcount of”h]”(hŒThe ”…”�”}”(hjS h²hh³Nh´Nubh)�”}”(hŒ6:c:type:`struct drm_dp_mst_branch `”h]”jˆ )�”}”(hj] h]”hŒstruct drm_dp_mst_branch”…”�”}”(hj_ h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj[ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_branch”uh1hh³jO h´MöhjS ubhŒ& to increment the topology refcount of”…”�”}”(hjS h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jO h´MöhjP ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj4 ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jO h´Möhj1 ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj˜ h]”hŒ Description”…”�”}”(hjš h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj– ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Møhj ubhÎ)�”}”(hXDIncrements :c:type:`drm_dp_mst_branch.topology_refcount ` without checking whether or not it's already reached 0. This is only valid to use in scenarios where you are already guaranteed to have at least one active topology reference to **mstb**. Otherwise, drm_dp_mst_topology_try_get_mstb() must be used.”h]”(hŒ Increments ”…”�”}”(hj® h²hh³Nh´Nubh)�”}”(hŒA:c:type:`drm_dp_mst_branch.topology_refcount `”h]”jˆ )�”}”(hj¸ h]”hŒ#drm_dp_mst_branch.topology_refcount”…”�”}”(hjº h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj¶ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_branch”uh1hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M÷hj® ubhŒµ without checking whether or not it’s already reached 0. This is only valid to use in scenarios where you are already guaranteed to have at least one active topology reference to ”…”�”}”(hj® h²hh³Nh´Nubj3 )�”}”(hŒ**mstb**”h]”hŒmstb”…”�”}”(hjÚ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj® ubhŒ=. Otherwise, drm_dp_mst_topology_try_get_mstb() must be used.”…”�”}”(hj® h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÕ h´M÷hj ubhÎ)�”}”(hŒKSee also: drm_dp_mst_topology_try_get_mstb() drm_dp_mst_topology_put_mstb()”h]”hŒKSee also: drm_dp_mst_topology_try_get_mstb() drm_dp_mst_topology_put_mstb()”…”�”}”(hjò h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mühj ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj;h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ)drm_dp_mst_topology_put_mstb (C function)”Œc.drm_dp_mst_topology_put_mstb”hNt”auh1j† hj;h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒBvoid drm_dp_mst_topology_put_mstb (struct drm_dp_mst_branch *mstb)”h]”j¤ )�”}”(hŒAvoid drm_dp_mst_topology_put_mstb(struct drm_dp_mst_branch *mstb)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj! h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj h²hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0 h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj h²hh³j/ h´MubjÍ )�”}”(hŒdrm_dp_mst_topology_put_mstb”h]”jÓ )�”}”(hŒdrm_dp_mst_topology_put_mstb”h]”hŒdrm_dp_mst_topology_put_mstb”…”�”}”(hjB h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj> ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj h²hh³j/ h´MubjÞ)�”}”(hŒ (struct drm_dp_mst_branch *mstb)”h]”jä)�”}”(hŒstruct drm_dp_mst_branch *mstb”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj^ h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjZ ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjk h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjZ ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_dp_mst_branch”h]”hŒdrm_dp_mst_branch”…”�”}”(hj| h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjy ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j~ Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjD sbŒc.drm_dp_mst_topology_put_mstb”†”asbuh1hhjZ ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœ h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjZ ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjª h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjZ ubjÓ )�”}”(hŒmstb”h]”hŒmstb”…”�”}”(hj· h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjZ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjV ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj h²hh³j/ h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj h²hh³j/ h´Mubah}”(h]”j ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j/ h´Mhj h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ/release a topology reference to a branch device”h]”hŒ/release a topology reference to a branch device”…”�”}”(hjá h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MhjÞ h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj h²hh³j/ h´Mubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jù j$ jù j% ‰j& ‰j' ‰uh1j˜ h²hhj;h³Nh´Nubj) )�”}”(hXp**Parameters** ``struct drm_dp_mst_branch *mstb`` The :c:type:`struct drm_dp_mst_branch ` to release the topology reference from **Description** Releases a topology reference from **mstb** by decrementing :c:type:`drm_dp_mst_branch.topology_kref `. See also: drm_dp_mst_topology_try_get_mstb() drm_dp_mst_topology_get_mstb()”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mhjý ubjw )�”}”(hhh]”j| )�”}”(hŒ…``struct drm_dp_mst_branch *mstb`` The :c:type:`struct drm_dp_mst_branch ` to release the topology reference from ”h]”(j‚ )�”}”(hŒ"``struct drm_dp_mst_branch *mstb``”h]”jˆ )�”}”(hj"h]”hŒstruct drm_dp_mst_branch *mstb”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mhjubjž )�”}”(hhh]”hÎ)�”}”(hŒaThe :c:type:`struct drm_dp_mst_branch ` to release the topology reference from”h]”(hŒThe ”…”�”}”(hj;h²hh³Nh´Nubh)�”}”(hŒ6:c:type:`struct drm_dp_mst_branch `”h]”jˆ )�”}”(hjEh]”hŒstruct drm_dp_mst_branch”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjCubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_branch”uh1hh³j7h´Mhj;ubhŒ' to release the topology reference from”…”�”}”(hj;h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j7h´Mhj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j7h´Mhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjý ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj€h]”hŒ Description”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mhjý ubhÎ)�”}”(hŒzReleases a topology reference from **mstb** by decrementing :c:type:`drm_dp_mst_branch.topology_kref `.”h]”(hŒ#Releases a topology reference from ”…”�”}”(hj–h²hh³Nh´Nubj3 )�”}”(hŒ**mstb**”h]”hŒmstb”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj–ubhŒ by decrementing ”…”�”}”(hj–h²hh³Nh´Nubh)�”}”(hŒ=:c:type:`drm_dp_mst_branch.topology_kref `”h]”jˆ )�”}”(hj²h]”hŒdrm_dp_mst_branch.topology_kref”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj°ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_branch”uh1hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mhj–ubhŒ.”…”�”}”(hj–h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÏh´Mhjý ubhÎ)�”}”(hŒKSee also: drm_dp_mst_topology_try_get_mstb() drm_dp_mst_topology_get_mstb()”h]”hŒKSee also: drm_dp_mst_topology_try_get_mstb() drm_dp_mst_topology_get_mstb()”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mhjý ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj;h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ-drm_dp_mst_topology_try_get_port (C function)”Œ"c.drm_dp_mst_topology_try_get_port”hNt”auh1j† hj;h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒCint drm_dp_mst_topology_try_get_port (struct drm_dp_mst_port *port)”h]”j¤ )�”}”(hŒBint drm_dp_mst_topology_try_get_port(struct drm_dp_mst_port *port)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjh²hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M@ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjh²hh³jh´M@ubjÍ )�”}”(hŒ drm_dp_mst_topology_try_get_port”h]”jÓ )�”}”(hŒ drm_dp_mst_topology_try_get_port”h]”hŒ drm_dp_mst_topology_try_get_port”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj&ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjh²hh³jh´M@ubjÞ)�”}”(hŒ(struct drm_dp_mst_port *port)”h]”jä)�”}”(hŒstruct drm_dp_mst_port *port”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjBubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjBubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_dp_mst_port”h]”hŒdrm_dp_mst_port”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjaubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jfŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj,sbŒ"c.drm_dp_mst_topology_try_get_port”†”asbuh1hhjBubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjBubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjBubjÓ )�”}”(hŒport”h]”hŒport”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjBubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj>ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjh²hh³jh´M@ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjh²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Œ:Increment the topology refcount of a port unless it's zero”h]”hŒ` to increment the topology refcount of **Description** Attempts to grab a topology reference to **port**, if it hasn't yet been removed from the topology (e.g. :c:type:`drm_dp_mst_port.topology_kref ` has reached 0). Holding a topology reference implies that a malloc reference will be held to **port** as long as the user holds the topology reference. Care should be taken to ensure that the user has at least one malloc reference to **port**. If you already have a topology reference to **port**, you should use drm_dp_mst_topology_get_port() instead. See also: drm_dp_mst_topology_get_port() drm_dp_mst_topology_put_port() **Return** * 1: A topology reference was grabbed successfully * 0: **port** is no longer in the topology, no reference was grabbed”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjëh]”hŒ Parameters”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjéubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MDhjåubjw )�”}”(hhh]”j| )�”}”(hŒz``struct drm_dp_mst_port *port`` :c:type:`struct drm_dp_mst_port ` to increment the topology refcount of ”h]”(j‚ )�”}”(hŒ ``struct drm_dp_mst_port *port``”h]”jˆ )�”}”(hj h]”hŒstruct drm_dp_mst_port *port”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MBhjubjž )�”}”(hhh]”hÎ)�”}”(hŒX:c:type:`struct drm_dp_mst_port ` to increment the topology refcount of”h]”(h)�”}”(hŒ2:c:type:`struct drm_dp_mst_port `”h]”jˆ )�”}”(hj)h]”hŒstruct drm_dp_mst_port”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj'ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_port”uh1hh³jh´MBhj#ubhŒ& to increment the topology refcount of”…”�”}”(hj#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jh´MBhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jh´MBhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjåubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjdh]”hŒ Description”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjbubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MDhjåubhÎ)�”}”(hX:Attempts to grab a topology reference to **port**, if it hasn't yet been removed from the topology (e.g. :c:type:`drm_dp_mst_port.topology_kref ` has reached 0). Holding a topology reference implies that a malloc reference will be held to **port** as long as the user holds the topology reference.”h]”(hŒ)Attempts to grab a topology reference to ”…”�”}”(hjzh²hh³Nh´Nubj3 )�”}”(hŒ**port**”h]”hŒport”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjzubhŒ:, if it hasn’t yet been removed from the topology (e.g. ”…”�”}”(hjzh²hh³Nh´Nubh)�”}”(hŒ9:c:type:`drm_dp_mst_port.topology_kref `”h]”jˆ )�”}”(hj–h]”hŒdrm_dp_mst_port.topology_kref”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj”ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_port”uh1hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MChjzubhŒ^ has reached 0). Holding a topology reference implies that a malloc reference will be held to ”…”�”}”(hjzh²hh³Nh´Nubj3 )�”}”(hŒ**port**”h]”hŒport”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjzubhŒ2 as long as the user holds the topology reference.”…”�”}”(hjzh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j³h´MChjåubhÎ)�”}”(hŒÈCare should be taken to ensure that the user has at least one malloc reference to **port**. If you already have a topology reference to **port**, you should use drm_dp_mst_topology_get_port() instead.”h]”(hŒRCare should be taken to ensure that the user has at least one malloc reference to ”…”�”}”(hjÐh²hh³Nh´Nubj3 )�”}”(hŒ**port**”h]”hŒport”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÐubhŒ.. If you already have a topology reference to ”…”�”}”(hjÐh²hh³Nh´Nubj3 )�”}”(hŒ**port**”h]”hŒport”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÐubhŒ8, you should use drm_dp_mst_topology_get_port() instead.”…”�”}”(hjÐh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MHhjåubhÎ)�”}”(hŒGSee also: drm_dp_mst_topology_get_port() drm_dp_mst_topology_put_port()”h]”hŒGSee also: drm_dp_mst_topology_get_port() drm_dp_mst_topology_put_port()”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MLhjåubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjh]”hŒReturn”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MPhjåubhú)�”}”(hhh]”(hÿ)�”}”(hŒ01: A topology reference was grabbed successfully”h]”hÎ)�”}”(hj/h]”hŒ01: A topology reference was grabbed successfully”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MQhj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj*ubhÿ)�”}”(hŒB0: **port** is no longer in the topology, no reference was grabbed”h]”hÎ)�”}”(hjGh]”(hŒ0: ”…”�”}”(hjIh²hh³Nh´Nubj3 )�”}”(hŒ**port**”h]”hŒport”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjIubhŒ7 is no longer in the topology, no reference was grabbed”…”�”}”(hjIh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MRhjEubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj*ubeh}”(h]”h ]”h"]”h$]”h&]”jNjOuh1hùh³j>h´MQhjåubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj;h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ)drm_dp_mst_topology_get_port (C function)”Œc.drm_dp_mst_topology_get_port”hNt”auh1j† hj;h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ@void drm_dp_mst_topology_get_port (struct drm_dp_mst_port *port)”h]”j¤ )�”}”(hŒ?void drm_dp_mst_topology_get_port(struct drm_dp_mst_port *port)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj‘h²hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mfubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj‘h²hh³j£h´MfubjÍ )�”}”(hŒdrm_dp_mst_topology_get_port”h]”jÓ )�”}”(hŒdrm_dp_mst_topology_get_port”h]”hŒdrm_dp_mst_topology_get_port”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj²ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj‘h²hh³j£h´MfubjÞ)�”}”(hŒ(struct drm_dp_mst_port *port)”h]”jä)�”}”(hŒstruct drm_dp_mst_port *port”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Œdrm_dp_mst_port”h]”hŒdrm_dp_mst_port”…”�”}”(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%)�”}”jj¸sbŒc.drm_dp_mst_topology_get_port”†”asbuh1hhjÎubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÎubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÎubjÓ )�”}”(hŒport”h]”hŒport”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÎubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÊubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj‘h²hh³j£h´Mfubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj�h²hh³j£h´Mfubah}”(h]”jˆah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j£h´MfhjŠh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ)Increment the topology refcount of a port”h]”hŒ)Increment the topology refcount of a port”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MfhjRh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjŠh²hh³j£h´Mfubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jmj$ jmj% ‰j& ‰j' ‰uh1j˜ h²hhj;h³Nh´Nubj) )�”}”(hX/**Parameters** ``struct drm_dp_mst_port *port`` The :c:type:`struct drm_dp_mst_port ` to increment the topology refcount of **Description** Increments :c:type:`drm_dp_mst_port.topology_refcount ` without checking whether or not it's already reached 0. This is only valid to use in scenarios where you are already guaranteed to have at least one active topology reference to **port**. Otherwise, drm_dp_mst_topology_try_get_port() must be used. See also: drm_dp_mst_topology_try_get_port() drm_dp_mst_topology_put_port()”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjwh]”hŒ Parameters”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjuubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mjhjqubjw )�”}”(hhh]”j| )�”}”(hŒ~``struct drm_dp_mst_port *port`` The :c:type:`struct drm_dp_mst_port ` to increment the topology refcount of ”h]”(j‚ )�”}”(hŒ ``struct drm_dp_mst_port *port``”h]”jˆ )�”}”(hj–h]”hŒstruct drm_dp_mst_port *port”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj”ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mghj�ubjž )�”}”(hhh]”hÎ)�”}”(hŒ\The :c:type:`struct drm_dp_mst_port ` to increment the topology refcount of”h]”(hŒThe ”…”�”}”(hj¯h²hh³Nh´Nubh)�”}”(hŒ2:c:type:`struct drm_dp_mst_port `”h]”jˆ )�”}”(hj¹h]”hŒstruct drm_dp_mst_port”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj·ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_port”uh1hh³j«h´Mghj¯ubhŒ& to increment the topology refcount of”…”�”}”(hj¯h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j«h´Mghj¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j«h´Mghj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjqubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjôh]”hŒ Description”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjòubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MihjqubhÎ)�”}”(hX@Increments :c:type:`drm_dp_mst_port.topology_refcount ` without checking whether or not it's already reached 0. This is only valid to use in scenarios where you are already guaranteed to have at least one active topology reference to **port**. Otherwise, drm_dp_mst_topology_try_get_port() must be used.”h]”(hŒ Increments ”…”�”}”(hj h²hh³Nh´Nubh)�”}”(hŒ=:c:type:`drm_dp_mst_port.topology_refcount `”h]”jˆ )�”}”(hjh]”hŒ!drm_dp_mst_port.topology_refcount”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_port”uh1hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mhhj ubhŒµ without checking whether or not it’s already reached 0. This is only valid to use in scenarios where you are already guaranteed to have at least one active topology reference to ”…”�”}”(hj h²hh³Nh´Nubj3 )�”}”(hŒ**port**”h]”hŒport”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj ubhŒ=. Otherwise, drm_dp_mst_topology_try_get_port() must be used.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j1h´MhhjqubhÎ)�”}”(hŒKSee also: drm_dp_mst_topology_try_get_port() drm_dp_mst_topology_put_port()”h]”hŒKSee also: drm_dp_mst_topology_try_get_port() drm_dp_mst_topology_put_port()”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mmhjqubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj;h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ)drm_dp_mst_topology_put_port (C function)”Œc.drm_dp_mst_topology_put_port”hNt”auh1j† hj;h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ@void drm_dp_mst_topology_put_port (struct drm_dp_mst_port *port)”h]”j¤ )�”}”(hŒ?void drm_dp_mst_topology_put_port(struct drm_dp_mst_port *port)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjyh²hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjyh²hh³j‹h´MubjÍ )�”}”(hŒdrm_dp_mst_topology_put_port”h]”jÓ )�”}”(hŒdrm_dp_mst_topology_put_port”h]”hŒdrm_dp_mst_topology_put_port”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjšubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjyh²hh³j‹h´MubjÞ)�”}”(hŒ(struct drm_dp_mst_port *port)”h]”jä)�”}”(hŒstruct drm_dp_mst_port *port”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Œdrm_dp_mst_port”h]”hŒdrm_dp_mst_port”…”�”}”(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%)�”}”jj sbŒc.drm_dp_mst_topology_put_port”†”asbuh1hhj¶ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¶ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¶ubjÓ )�”}”(hŒport”h]”hŒport”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¶ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj²ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjyh²hh³j‹h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjuh²hh³j‹h´Mubah}”(h]”jpah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j‹h´Mhjrh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ&release a topology reference to a port”h]”hŒ&release a topology reference to a port”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´Mhj:h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjrh²hh³j‹h´Mubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jUj$ jUj% ‰j& ‰j' ‰uh1j˜ h²hhj;h³Nh´Nubj) )�”}”(hXf**Parameters** ``struct drm_dp_mst_port *port`` The :c:type:`struct drm_dp_mst_port ` to release the topology reference from **Description** Releases a topology reference from **port** by decrementing :c:type:`drm_dp_mst_port.topology_kref `. See also: drm_dp_mst_topology_try_get_port() drm_dp_mst_topology_get_port()”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj_h]”hŒ Parameters”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj]ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´MƒhjYubjw )�”}”(hhh]”j| )�”}”(hŒ``struct drm_dp_mst_port *port`` The :c:type:`struct drm_dp_mst_port ` to release the topology reference from ”h]”(j‚ )�”}”(hŒ ``struct drm_dp_mst_port *port``”h]”jˆ )�”}”(hj~h]”hŒstruct drm_dp_mst_port *port”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M€hjxubjž )�”}”(hhh]”hÎ)�”}”(hŒ]The :c:type:`struct drm_dp_mst_port ` to release the topology reference from”h]”(hŒThe ”…”�”}”(hj—h²hh³Nh´Nubh)�”}”(hŒ2:c:type:`struct drm_dp_mst_port `”h]”jˆ )�”}”(hj¡h]”hŒstruct drm_dp_mst_port”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjŸubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_port”uh1hh³j“h´M€hj—ubhŒ' to release the topology reference from”…”�”}”(hj—h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j“h´M€hj”ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjxubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j“h´M€hjuubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjYubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjÜh]”hŒ Description”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M‚hjYubhÎ)�”}”(hŒvReleases a topology reference from **port** by decrementing :c:type:`drm_dp_mst_port.topology_kref `.”h]”(hŒ#Releases a topology reference from ”…”�”}”(hjòh²hh³Nh´Nubj3 )�”}”(hŒ**port**”h]”hŒport”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjòubhŒ by decrementing ”…”�”}”(hjòh²hh³Nh´Nubh)�”}”(hŒ9:c:type:`drm_dp_mst_port.topology_kref `”h]”jˆ )�”}”(hjh]”hŒdrm_dp_mst_port.topology_kref”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dp_mst_port”uh1hh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M�hjòubhŒ.”…”�”}”(hjòh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j+h´M�hjYubhÎ)�”}”(hŒKSee also: drm_dp_mst_topology_try_get_port() drm_dp_mst_topology_get_port()”h]”hŒKSee also: drm_dp_mst_topology_try_get_port() drm_dp_mst_topology_get_port()”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œr/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:328: ./drivers/gpu/drm/display/drm_dp_mst_topology.c”h´M„hjYubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj;h²hh³Nh´Nubeh}”(h]”j8ah ]”h"]”Œtopology lifetime internals”ah$]”h&]”uh1hµhjØph²hh³hÌh´MCubeh}”(h]”jfah ]”h"]”Œdisplay port mst helpers”ah$]”h&]”uh1hµhh·h²hh³hÌh´M.ubh¶)�”}”(hhh]”(h»)�”}”(hŒ#MIPI DBI Helper Functions Reference”h]”hŒ#MIPI DBI Helper Functions Reference”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÊj`uh1hºhjZh²hh³hÌh´MPubhÎ)�”}”(hŒbThis library provides helpers for MIPI Display Bus Interface (DBI) compatible display controllers.”h]”hŒbThis library provides helpers for MIPI Display Bus Interface (DBI) compatible display controllers.”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:338: ./drivers/gpu/drm/drm_mipi_dbi.c”h´K)hjZh²hubhÎ)�”}”(hŒíMany controllers for tiny lcd displays are MIPI compliant and can use this library. If a controller uses registers 0x2A and 0x2B to set the area to update and uses register 0x2C to write to frame memory, it is most likely MIPI compliant.”h]”hŒíMany controllers for tiny lcd displays are MIPI compliant and can use this library. If a controller uses registers 0x2A and 0x2B to set the area to update and uses register 0x2C to write to frame memory, it is most likely MIPI compliant.”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:338: ./drivers/gpu/drm/drm_mipi_dbi.c”h´K,hjZh²hubhÎ)�”}”(hŒLOnly MIPI Type 1 displays are supported since a full frame memory is needed.”h]”hŒLOnly MIPI Type 1 displays are supported since a full frame memory is needed.”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:338: ./drivers/gpu/drm/drm_mipi_dbi.c”h´K1hjZh²hubhÎ)�”}”(hŒ*There are 3 MIPI DBI implementation types:”h]”hŒ*There are 3 MIPI DBI implementation types:”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:338: ./drivers/gpu/drm/drm_mipi_dbi.c”h´K3hjZh²hubjMP)�”}”(hhh]”(hÿ)�”}”(hŒ Motorola 6800 type parallel bus ”h]”hÎ)�”}”(hŒMotorola 6800 type parallel bus”h]”hŒMotorola 6800 type parallel bus”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:338: ./drivers/gpu/drm/drm_mipi_dbi.c”h´K5hjªubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj§ubhÿ)�”}”(hŒIntel 8080 type parallel bus ”h]”hÎ)�”}”(hŒIntel 8080 type parallel bus”h]”hŒIntel 8080 type parallel bus”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:338: ./drivers/gpu/drm/drm_mipi_dbi.c”h´K7hjÃubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj§ubhÿ)�”}”(hŒ»SPI type with 3 options: 1. 9-bit with the Data/Command signal as the ninth bit 2. Same as above except it's sent as 16 bits 3. 8-bit with the Data/Command signal as a separate D/CX pin ”h]”(hÎ)�”}”(hŒSPI type with 3 options:”h]”hŒSPI type with 3 options:”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:338: ./drivers/gpu/drm/drm_mipi_dbi.c”h´K9hjÜubjMP)�”}”(hhh]”(hÿ)�”}”(hŒ39-bit with the Data/Command signal as the ninth bit”h]”hÎ)�”}”(hjôh]”hŒ39-bit with the Data/Command signal as the ninth bit”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:338: ./drivers/gpu/drm/drm_mipi_dbi.c”h´K;hjòubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjïubhÿ)�”}”(hŒ)Same as above except it's sent as 16 bits”h]”hÎ)�”}”(hj h]”hŒ+Same as above except it’s sent as 16 bits”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:338: ./drivers/gpu/drm/drm_mipi_dbi.c”h´Kh]”hŒrotation”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:341: ./include/drm/drm_mipi_dbi.h”h´Knhj8ubjž )�”}”(hhh]”hÎ)�”}”(hŒ.initial rotation in degrees Counter Clock Wise”h]”hŒ.initial rotation in degrees Counter Clock Wise”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jSh´KnhjTubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jSh´KnhjQubj| )�”}”(hŒi``left_offset`` Horizontal offset of the display relative to the controller's driver array ”h]”(j‚ )�”}”(hŒ``left_offset``”h]”jˆ )�”}”(hjwh]”hŒ left_offset”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjuubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:341: ./include/drm/drm_mipi_dbi.h”h´Kthjqubjž )�”}”(hhh]”jw )�”}”(hhh]”j| )�”}”(hŒKHorizontal offset of the display relative to the controller's driver array ”h]”(j‚ )�”}”(hŒ0Horizontal offset of the display relative to the”h]”hŒ0Horizontal offset of the display relative to the”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³jŒh´Kthj“ubjž )�”}”(hhh]”hÎ)�”}”(hŒcontroller's driver array”h]”hŒcontroller’s driver array”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jŒh´Kthj¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jŒh´Kthj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjqubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jŒh´KthjQubj| )�”}”(hŒe``top_offset`` Vertical offset of the display relative to the controller's driver array ”h]”(j‚ )�”}”(hŒ``top_offset``”h]”jˆ )�”}”(hjÚh]”hŒ top_offset”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjØubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:341: ./include/drm/drm_mipi_dbi.h”h´KzhjÔubjž )�”}”(hhh]”jw )�”}”(hhh]”j| )�”}”(hŒIVertical offset of the display relative to the controller's driver array ”h]”(j‚ )�”}”(hŒ.Vertical offset of the display relative to the”h]”hŒ.Vertical offset of the display relative to the”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³jïh´Kzhjöubjž )�”}”(hhh]”hÎ)�”}”(hŒcontroller's driver array”h]”hŒcontroller’s driver array”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jïh´Kzhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjöubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jïh´Kzhjóubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjðubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÔubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jïh´KzhjQubj| )�”}”(hŒ*``backlight`` backlight device (optional) ”h]”(j‚ )�”}”(hŒ ``backlight``”h]”jˆ )�”}”(hj=h]”hŒ backlight”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:341: ./include/drm/drm_mipi_dbi.h”h´Khj7ubjž )�”}”(hhh]”hÎ)�”}”(hŒbacklight device (optional)”h]”hŒbacklight device (optional)”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jRh´KhjSubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jRh´KhjQubj| )�”}”(hŒ/``regulator`` power regulator (Vdd) (optional) ”h]”(j‚ )�”}”(hŒ ``regulator``”h]”jˆ )�”}”(hjvh]”hŒ regulator”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjtubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:341: ./include/drm/drm_mipi_dbi.h”h´K„hjpubjž )�”}”(hhh]”hÎ)�”}”(hŒ power regulator (Vdd) (optional)”h]”hŒ power regulator (Vdd) (optional)”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j‹h´K„hjŒubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjpubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j‹h´K„hjQubj| )�”}”(hŒ7``io_regulator`` I/O power regulator (Vddi) (optional) ”h]”(j‚ )�”}”(hŒ``io_regulator``”h]”jˆ )�”}”(hj¯h]”hŒ io_regulator”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj­ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:341: ./include/drm/drm_mipi_dbi.h”h´K‰hj©ubjž )�”}”(hhh]”hÎ)�”}”(hŒ%I/O power regulator (Vddi) (optional)”h]”hŒ%I/O power regulator (Vddi) (optional)”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÄh´K‰hjÅubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÄh´K‰hjQubj| )�”}”(hŒ``dbi`` MIPI DBI interface ”h]”(j‚ )�”}”(hŒ``dbi``”h]”jˆ )�”}”(hjèh]”hŒdbi”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjæubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:341: ./include/drm/drm_mipi_dbi.h”h´KŽhjâubjž )�”}”(hhh]”hÎ)�”}”(hŒMIPI DBI interface”h]”hŒMIPI DBI interface”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jýh´KŽhjþubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjâubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jýh´KŽhjQubj| )�”}”(hŒò``driver_private`` Driver private data. Necessary for drivers with private data since devm_drm_dev_alloc() can't allocate structures that embed a structure which then again embeds drm_device.”h]”(j‚ )�”}”(hŒ``driver_private``”h]”jˆ )�”}”(hj!h]”hŒdriver_private”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:341: ./include/drm/drm_mipi_dbi.h”h´K•hjubjž )�”}”(hhh]”jw )�”}”(hhh]”j| )�”}”(hŒ¬Driver private data. Necessary for drivers with private data since devm_drm_dev_alloc() can't allocate structures that embed a structure which then again embeds drm_device.”h]”(j‚ )�”}”(hŒDriver private data.”h]”hŒDriver private data.”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³j6h´K•hj=ubjž )�”}”(hhh]”hÎ)�”}”(hŒ—Necessary for drivers with private data since devm_drm_dev_alloc() can't allocate structures that embed a structure which then again embeds drm_device.”h]”hŒ™Necessary for drivers with private data since devm_drm_dev_alloc() can’t allocate structures that embed a structure which then again embeds drm_device.”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:341: ./include/drm/drm_mipi_dbi.h”h´K”hjOubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j6h´K•hj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j6h´K•hjQubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjZh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œmipi_dbi_command (C macro)”Œc.mipi_dbi_command”hNt”auh1j† hjZh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒmipi_dbi_command”h]”j¤ )�”}”(hŒmipi_dbi_command”h]”jÍ )�”}”(hŒmipi_dbi_command”h]”jÓ )�”}”(hjŸh]”hŒmipi_dbi_command”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¥ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj¡h²hh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:341: ./include/drm/drm_mipi_dbi.h”h´K·ubah}”(h]”h ]”h"]”h$]”h&]”jê jë 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]”h ]”h"]”h$]”h&]”uh1j hjšh²hh³j¼h´K·ubeh}”(h]”h ]”(j Œmacro”eh"]”h$]”h&]”j" j j# jÕj$ jÕj% ‰j& ‰j' ‰uh1j˜ h²hhjZh³Nh´NubhÎ)�”}”(hŒ'``mipi_dbi_command (dbi, cmd, seq...)``”h]”jˆ )�”}”(hjÛh]”hŒ#mipi_dbi_command (dbi, cmd, seq...)”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÙubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:341: ./include/drm/drm_mipi_dbi.h”h´K¹hjZh²hubj^E)�”}”(hŒ,MIPI DCS command with optional parameter(s) ”h]”hÎ)�”}”(hŒ+MIPI DCS command with optional parameter(s)”h]”hŒ+MIPI DCS command with optional parameter(s)”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:341: ./include/drm/drm_mipi_dbi.h”h´K·hjñubah}”(h]”h ]”h"]”h$]”h&]”uh1j]Eh³jh´K·hjZh²hubj) )�”}”(hX**Parameters** ``dbi`` MIPI DBI structure ``cmd`` Command ``seq...`` Optional parameter(s) **Description** Send MIPI DCS command to the controller. Use mipi_dbi_command_read() for get/read. **Return** Zero on success, negative error code on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjh]”hŒ Parameters”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:341: ./include/drm/drm_mipi_dbi.h”h´K»hj ubjw )�”}”(hhh]”(j| )�”}”(hŒ``dbi`` MIPI DBI structure ”h]”(j‚ )�”}”(hŒ``dbi``”h]”jˆ )�”}”(hj/h]”hŒdbi”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:341: ./include/drm/drm_mipi_dbi.h”h´K¸hj)ubjž )�”}”(hhh]”hÎ)�”}”(hŒMIPI DBI structure”h]”hŒMIPI DBI structure”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jDh´K¸hjEubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jDh´K¸hj&ubj| )�”}”(hŒ``cmd`` Command ”h]”(j‚ )�”}”(hŒ``cmd``”h]”jˆ )�”}”(hjhh]”hŒcmd”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjfubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:341: ./include/drm/drm_mipi_dbi.h”h´K¹hjbubjž )�”}”(hhh]”hÎ)�”}”(hŒCommand”h]”hŒCommand”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j}h´K¹hj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjbubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j}h´K¹hj&ubj| )�”}”(hŒ!``seq...`` Optional parameter(s) ”h]”(j‚ )�”}”(hŒ ``seq...``”h]”jˆ )�”}”(hj¡h]”hŒseq...”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:341: ./include/drm/drm_mipi_dbi.h”h´Kºhj›ubjž )�”}”(hhh]”hÎ)�”}”(hŒOptional parameter(s)”h]”hŒOptional parameter(s)”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¶h´Kºhj·ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¶h´Kºhj&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjÜh]”hŒ Description”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:341: ./include/drm/drm_mipi_dbi.h”h´K¼hj ubhÎ)�”}”(hŒRSend MIPI DCS command to the controller. Use mipi_dbi_command_read() for get/read.”h]”hŒRSend MIPI DCS command to the controller. Use mipi_dbi_command_read() for get/read.”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:341: ./include/drm/drm_mipi_dbi.h”h´K»hj ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjh]”hŒReturn”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:341: ./include/drm/drm_mipi_dbi.h”h´K¾hj ubhÎ)�”}”(hŒ0Zero on success, negative error code on failure.”h]”hŒ0Zero on success, negative error code on failure.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:341: ./include/drm/drm_mipi_dbi.h”h´K¿hj ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjZh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ"mipi_dbi_command_read (C function)”Œc.mipi_dbi_command_read”hNt”auh1j† hjZh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒAint mipi_dbi_command_read (struct mipi_dbi *dbi, u8 cmd, u8 *val)”h]”j¤ )�”}”(hŒ@int mipi_dbi_command_read(struct mipi_dbi *dbi, u8 cmd, u8 *val)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjDh²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´Kyubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjDh²hh³jVh´KyubjÍ )�”}”(hŒmipi_dbi_command_read”h]”jÓ )�”}”(hŒmipi_dbi_command_read”h]”hŒmipi_dbi_command_read”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjeubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjDh²hh³jVh´KyubjÞ)�”}”(hŒ'(struct mipi_dbi *dbi, u8 cmd, u8 *val)”h]”(jä)�”}”(hŒstruct mipi_dbi *dbi”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Œmipi_dbi”h]”hŒmipi_dbi”…”�”}”(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%)�”}”jjksbŒc.mipi_dbi_command_read”†”asbuh1hhj�ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj�ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�ubjÓ )�”}”(hŒdbi”h]”hŒdbi”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj}ubjä)�”}”(hŒu8 cmd”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(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.mipi_dbi_command_read”†”asbuh1hhjóubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjóubjÓ )�”}”(hŒcmd”h]”hŒcmd”…”�”}”(hj& h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjóubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj}ubjä)�”}”(hŒu8 *val”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(hjB h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj? ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jD Œmodname”NŒ classname”Njé jì )�”}”jï ]”j¿Œc.mipi_dbi_command_read”†”asbuh1hhj; ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj` h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj; ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjn h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj; ubjÓ )�”}”(hŒval”h]”hŒval”…”�”}”(hj{ h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj; ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj}ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjDh²hh³jVh´Kyubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj@h²hh³jVh´Kyubah}”(h]”j;ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jVh´Kyhj=h²hubj )�”}”(hhh]”hÎ)�”}”(hŒMIPI DCS read command”h]”hŒMIPI DCS read command”…”�”}”(hj¥ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´Kyhj¢ h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj=h²hh³jVh´Kyubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j½ j$ j½ j% ‰j& ‰j' ‰uh1j˜ h²hhjZh³Nh´Nubj) )�”}”(hŒë**Parameters** ``struct mipi_dbi *dbi`` MIPI DBI structure ``u8 cmd`` Command ``u8 *val`` Value read **Description** Send MIPI DCS read command to the controller. **Return** Zero on success, negative error code on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjÇ h]”hŒ Parameters”…”�”}”(hjÉ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÅ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´K}hjÁ ubjw )�”}”(hhh]”(j| )�”}”(hŒ,``struct mipi_dbi *dbi`` MIPI DBI structure ”h]”(j‚ )�”}”(hŒ``struct mipi_dbi *dbi``”h]”jˆ )�”}”(hjæ h]”hŒstruct mipi_dbi *dbi”…”�”}”(hjè h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjä ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´Kzhjà ubjž )�”}”(hhh]”hÎ)�”}”(hŒMIPI DBI structure”h]”hŒMIPI DBI structure”…”�”}”(hjÿ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jû h´Kzhjü ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjà ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jû h´KzhjÝ ubj| )�”}”(hŒ``u8 cmd`` Command ”h]”(j‚ )�”}”(hŒ ``u8 cmd``”h]”jˆ )�”}”(hj!h]”hŒu8 cmd”…”�”}”(hj!!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´K{hj!ubjž )�”}”(hhh]”hÎ)�”}”(hŒCommand”h]”hŒCommand”…”�”}”(hj8!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j4!h´K{hj5!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j4!h´K{hjÝ ubj| )�”}”(hŒ``u8 *val`` Value read ”h]”(j‚ )�”}”(hŒ ``u8 *val``”h]”jˆ )�”}”(hjX!h]”hŒu8 *val”…”�”}”(hjZ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjV!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´K|hjR!ubjž )�”}”(hhh]”hÎ)�”}”(hŒ Value read”h]”hŒ Value read”…”�”}”(hjq!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jm!h´K|hjn!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjR!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jm!h´K|hjÝ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÁ ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj“!h]”hŒ Description”…”�”}”(hj•!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj‘!ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´K~hjÁ ubhÎ)�”}”(hŒ-Send MIPI DCS read command to the controller.”h]”hŒ-Send MIPI DCS read command to the controller.”…”�”}”(hj©!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´K}hjÁ ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjº!h]”hŒReturn”…”�”}”(hj¼!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¸!ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´KhjÁ ubhÎ)�”}”(hŒ0Zero on success, negative error code on failure.”h]”hŒ0Zero on success, negative error code on failure.”…”�”}”(hjÐ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´K€hjÁ ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjZh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ!mipi_dbi_command_buf (C function)”Œc.mipi_dbi_command_buf”hNt”auh1j† hjZh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒMint mipi_dbi_command_buf (struct mipi_dbi *dbi, u8 cmd, u8 *data, size_t len)”h]”j¤ )�”}”(hŒLint mipi_dbi_command_buf(struct mipi_dbi *dbi, u8 cmd, u8 *data, size_t len)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjÿ!h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjû!h²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.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Œmipi_dbi_command_buf”h]”jÓ )�”}”(hŒmipi_dbi_command_buf”h]”hŒmipi_dbi_command_buf”…”�”}”(hj "h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj"ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjû!h²hh³j "h´K�ubjÞ)�”}”(hŒ4(struct mipi_dbi *dbi, u8 cmd, u8 *data, size_t len)”h]”(jä)�”}”(hŒstruct mipi_dbi *dbi”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj<"h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj8"ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjI"h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj8"ubh)�”}”(hhh]”jÓ )�”}”(hŒmipi_dbi”h]”hŒmipi_dbi”…”�”}”(hjZ"h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjW"ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j\"Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj""sbŒc.mipi_dbi_command_buf”†”asbuh1hhj8"ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjz"h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj8"ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjˆ"h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj8"ubjÓ )�”}”(hŒdbi”h]”hŒdbi”…”�”}”(hj•"h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj8"ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj4"ubjä)�”}”(hŒu8 cmd”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(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ï ]”jv"Œc.mipi_dbi_command_buf”†”asbuh1hhjª"ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏ"h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjª"ubjÓ )�”}”(hŒcmd”h]”hŒcmd”…”�”}”(hjÝ"h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjª"ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj4"ubjä)�”}”(hŒu8 *data”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(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ï ]”jv"Œc.mipi_dbi_command_buf”†”asbuh1hhjò"ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjò"ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj%#h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjò"ubjÓ )�”}”(hŒdata”h]”hŒdata”…”�”}”(hj2#h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjò"ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj4"ubjä)�”}”(hŒ size_t len”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjN#h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjK#ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jP#Œmodname”NŒ classname”Njé jì )�”}”jï ]”jv"Œc.mipi_dbi_command_buf”†”asbuh1hhjG#ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjl#h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjG#ubjÓ )�”}”(hŒlen”h]”hŒlen”…”�”}”(hjz#h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjG#ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj4"ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjû!h²hh³j "h´K�ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ.MIPI DCS command with parameter(s) in an array”h]”hŒ.MIPI DCS command with parameter(s) in an array”…”�”}”(hj¤#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.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²hhjZh³Nh´Nubj) )�”}”(hŒÒ**Parameters** ``struct mipi_dbi *dbi`` MIPI DBI structure ``u8 cmd`` Command ``u8 *data`` Parameter buffer ``size_t len`` Buffer length **Return** Zero on success, negative error code on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjÆ#h]”hŒ Parameters”…”�”}”(hjÈ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÄ#ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´K”hjÀ#ubjw )�”}”(hhh]”(j| )�”}”(hŒ,``struct mipi_dbi *dbi`` MIPI DBI structure ”h]”(j‚ )�”}”(hŒ``struct mipi_dbi *dbi``”h]”jˆ )�”}”(hjå#h]”hŒstruct mipi_dbi *dbi”…”�”}”(hjç#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjã#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´K‘hjß#ubjž )�”}”(hhh]”hÎ)�”}”(hŒMIPI DBI structure”h]”hŒMIPI DBI structure”…”�”}”(hjþ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jú#h´K‘hjû#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjß#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jú#h´K‘hjÜ#ubj| )�”}”(hŒ``u8 cmd`` Command ”h]”(j‚ )�”}”(hŒ ``u8 cmd``”h]”jˆ )�”}”(hj$h]”hŒu8 cmd”…”�”}”(hj $h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´K’hj$ubjž )�”}”(hhh]”hÎ)�”}”(hŒCommand”h]”hŒCommand”…”�”}”(hj7$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j3$h´K’hj4$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j3$h´K’hjÜ#ubj| )�”}”(hŒ``u8 *data`` Parameter buffer ”h]”(j‚ )�”}”(hŒ ``u8 *data``”h]”jˆ )�”}”(hjW$h]”hŒu8 *data”…”�”}”(hjY$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjU$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´K“hjQ$ubjž )�”}”(hhh]”hÎ)�”}”(hŒParameter buffer”h]”hŒParameter buffer”…”�”}”(hjp$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jl$h´K“hjm$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjQ$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jl$h´K“hjÜ#ubj| )�”}”(hŒ``size_t len`` Buffer length ”h]”(j‚ )�”}”(hŒ``size_t len``”h]”jˆ )�”}”(hj�$h]”hŒ size_t len”…”�”}”(hj’$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjŽ$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´K”hjŠ$ubjž )�”}”(hhh]”hÎ)�”}”(hŒ Buffer length”h]”hŒ Buffer length”…”�”}”(hj©$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¥$h´K”hj¦$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjŠ$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¥$h´K”hjÜ#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÀ#ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjË$h]”hŒReturn”…”�”}”(hjÍ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÉ$ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´K–hjÀ#ubhÎ)�”}”(hŒ0Zero on success, negative error code on failure.”h]”hŒ0Zero on success, negative error code on failure.”…”�”}”(hjá$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´K–hjÀ#ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjZh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œmipi_dbi_buf_copy (C function)”Œc.mipi_dbi_buf_copy”hNt”auh1j† hjZh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ¢int mipi_dbi_buf_copy (void *dst, struct iosys_map *src, struct drm_framebuffer *fb, struct drm_rect *clip, bool swap, struct drm_format_conv_state *fmtcnv_state)”h]”j¤ )�”}”(hŒ¡int mipi_dbi_buf_copy(void *dst, struct iosys_map *src, struct drm_framebuffer *fb, struct drm_rect *clip, bool swap, struct drm_format_conv_state *fmtcnv_state)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj %h²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.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Œmipi_dbi_buf_copy”h]”jÓ )�”}”(hŒmipi_dbi_buf_copy”h]”hŒmipi_dbi_buf_copy”…”�”}”(hj1%h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj-%ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj %h²hh³j%h´KÁubjÞ)�”}”(hŒŒ(void *dst, struct iosys_map *src, struct drm_framebuffer *fb, struct drm_rect *clip, bool swap, struct drm_format_conv_state *fmtcnv_state)”h]”(jä)�”}”(hŒ void *dst”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjM%h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjI%ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[%h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjI%ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hji%h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjI%ubjÓ )�”}”(hŒdst”h]”hŒdst”…”�”}”(hjv%h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjI%ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjE%ubjä)�”}”(hŒstruct iosys_map *src”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Œ iosys_map”h]”hŒ iosys_map”…”�”}”(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%)�”}”jj3%sbŒc.mipi_dbi_buf_copy”†”asbuh1hhj‹%ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍ%h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj‹%ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÛ%h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‹%ubjÓ )�”}”(hŒsrc”h]”hŒsrc”…”�”}”(hjè%h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj‹%ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjE%ubjä)�”}”(hŒstruct drm_framebuffer *fb”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Œdrm_framebuffer”h]”hŒdrm_framebuffer”…”�”}”(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.mipi_dbi_buf_copy”†”asbuh1hhjý%ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=&h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjý%ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjK&h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjý%ubjÓ )�”}”(hŒfb”h]”hŒfb”…”�”}”(hjX&h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjý%ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjE%ubjä)�”}”(hŒstruct drm_rect *clip”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjq&h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjm&ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~&h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjm&ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_rect”h]”hŒdrm_rect”…”�”}”(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.mipi_dbi_buf_copy”†”asbuh1hhjm&ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­&h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjm&ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj»&h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjm&ubjÓ )�”}”(hŒclip”h]”hŒclip”…”�”}”(hjÈ&h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjm&ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjE%ubjä)�”}”(hŒ bool swap”h]”(j¦)�”}”(hj£Ih]”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Œswap”h]”hŒswap”…”�”}”(hjü&h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÝ&ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjE%ubjä)�”}”(hŒ*struct drm_format_conv_state *fmtcnv_state”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Œdrm_format_conv_state”h]”hŒdrm_format_conv_state”…”�”}”(hj3'h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj0'ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j5'Œmodname”NŒ classname”Njé jì )�”}”jï ]”jÉ%Œc.mipi_dbi_buf_copy”†”asbuh1hhj'ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQ'h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj'ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj_'h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj'ubjÓ )�”}”(hŒ fmtcnv_state”h]”hŒ fmtcnv_state”…”�”}”(hjl'h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjE%ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj %h²hh³j%h´KÁubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ0Copy a framebuffer, transforming it if necessary”h]”hŒ0Copy a framebuffer, transforming it if necessary”…”�”}”(hj–'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.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²hhjZh³Nh´Nubj) )�”}”(hX©**Parameters** ``void *dst`` The destination buffer ``struct iosys_map *src`` The source buffer ``struct drm_framebuffer *fb`` The source framebuffer ``struct drm_rect *clip`` Clipping rectangle of the area to be copied ``bool swap`` When true, swap MSB/LSB of 16-bit values ``struct drm_format_conv_state *fmtcnv_state`` Format-conversion state **Return** Zero on success, negative error code on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj¸'h]”hŒ Parameters”…”�”}”(hjº'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¶'ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´KÅhj²'ubjw )�”}”(hhh]”(j| )�”}”(hŒ%``void *dst`` The destination buffer ”h]”(j‚ )�”}”(hŒ ``void *dst``”h]”jˆ )�”}”(hj×'h]”hŒ void *dst”…”�”}”(hjÙ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÕ'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´KÂhjÑ'ubjž )�”}”(hhh]”hÎ)�”}”(hŒThe destination buffer”h]”hŒThe destination buffer”…”�”}”(hjð'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jì'h´KÂhjí'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÑ'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jì'h´KÂhjÎ'ubj| )�”}”(hŒ,``struct iosys_map *src`` The source buffer ”h]”(j‚ )�”}”(hŒ``struct iosys_map *src``”h]”jˆ )�”}”(hj(h]”hŒstruct iosys_map *src”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´KÃhj (ubjž )�”}”(hhh]”hÎ)�”}”(hŒThe source buffer”h]”hŒThe source buffer”…”�”}”(hj)(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j%(h´KÃhj&(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj (ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j%(h´KÃhjÎ'ubj| )�”}”(hŒ6``struct drm_framebuffer *fb`` The source framebuffer ”h]”(j‚ )�”}”(hŒ``struct drm_framebuffer *fb``”h]”jˆ )�”}”(hjI(h]”hŒstruct drm_framebuffer *fb”…”�”}”(hjK(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjG(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´KÄhjC(ubjž )�”}”(hhh]”hÎ)�”}”(hŒThe source framebuffer”h]”hŒThe source framebuffer”…”�”}”(hjb(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j^(h´KÄhj_(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjC(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j^(h´KÄhjÎ'ubj| )�”}”(hŒF``struct drm_rect *clip`` Clipping rectangle of the area to be copied ”h]”(j‚ )�”}”(hŒ``struct drm_rect *clip``”h]”jˆ )�”}”(hj‚(h]”hŒstruct drm_rect *clip”…”�”}”(hj„(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj€(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´KÅhj|(ubjž )�”}”(hhh]”hÎ)�”}”(hŒ+Clipping rectangle of the area to be copied”h]”hŒ+Clipping rectangle of the area to be copied”…”�”}”(hj›(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j—(h´KÅhj˜(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj|(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j—(h´KÅhjÎ'ubj| )�”}”(hŒ7``bool swap`` When true, swap MSB/LSB of 16-bit values ”h]”(j‚ )�”}”(hŒ ``bool swap``”h]”jˆ )�”}”(hj»(h]”hŒ bool swap”…”�”}”(hj½(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¹(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´KÆhjµ(ubjž )�”}”(hhh]”hÎ)�”}”(hŒ(When true, swap MSB/LSB of 16-bit values”h]”hŒ(When true, swap MSB/LSB of 16-bit values”…”�”}”(hjÔ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÐ(h´KÆhjÑ(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjµ(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÐ(h´KÆhjÎ'ubj| )�”}”(hŒG``struct drm_format_conv_state *fmtcnv_state`` Format-conversion state ”h]”(j‚ )�”}”(hŒ.``struct drm_format_conv_state *fmtcnv_state``”h]”jˆ )�”}”(hjô(h]”hŒ*struct drm_format_conv_state *fmtcnv_state”…”�”}”(hjö(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjò(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´KÇhjî(ubjž )�”}”(hhh]”hÎ)�”}”(hŒFormat-conversion state”h]”hŒFormat-conversion state”…”�”}”(hj )h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j )h´KÇhj )ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjî(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j )h´KÇhjÎ'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj²'ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj/)h]”hŒReturn”…”�”}”(hj1)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj-)ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´KÉhj²'ubhÎ)�”}”(hŒ0Zero on success, negative error code on failure.”h]”hŒ0Zero on success, negative error code on failure.”…”�”}”(hjE)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´KÉhj²'ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjZh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ0drm_mipi_dbi_crtc_helper_mode_valid (C function)”Œ%c.drm_mipi_dbi_crtc_helper_mode_valid”hNt”auh1j† hjZh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒuenum drm_mode_status drm_mipi_dbi_crtc_helper_mode_valid (struct drm_crtc *crtc, const struct drm_display_mode *mode)”h]”j¤ )�”}”(hŒtenum drm_mode_status drm_mipi_dbi_crtc_helper_mode_valid(struct drm_crtc *crtc, const struct drm_display_mode *mode)”h]”(jª )�”}”(hjÂ7h]”hŒenum”…”�”}”(hjt)h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjp)h²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´M=ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚)h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjp)h²hh³j�)h´M=ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_mode_status”h]”hŒdrm_mode_status”…”�”}”(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Œ#drm_mipi_dbi_crtc_helper_mode_valid”sbŒ%c.drm_mipi_dbi_crtc_helper_mode_valid”†”asbuh1hhjp)h²hh³j�)h´M=ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´)h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjp)h²hh³j�)h´M=ubjÍ )�”}”(hŒ#drm_mipi_dbi_crtc_helper_mode_valid”h]”jÓ )�”}”(hj±)h]”hŒ#drm_mipi_dbi_crtc_helper_mode_valid”…”�”}”(hjÆ)h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÂ)ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjp)h²hh³j�)h´M=ubjÞ)�”}”(hŒ<(struct drm_crtc *crtc, const struct drm_display_mode *mode)”h]”(jä)�”}”(hŒstruct drm_crtc *crtc”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Œdrm_crtc”h]”hŒdrm_crtc”…”�”}”(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.drm_mipi_dbi_crtc_helper_mode_valid”†”asbuh1hhjÝ)ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÝ)ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj+*h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÝ)ubjÓ )�”}”(hŒcrtc”h]”hŒcrtc”…”�”}”(hj8*h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÝ)ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÙ)ubjä)�”}”(hŒ#const struct drm_display_mode *mode”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hjQ*h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjM*ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^*h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjM*ubjª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjl*h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjM*ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjy*h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjM*ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_display_mode”h]”hŒdrm_display_mode”…”�”}”(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.drm_mipi_dbi_crtc_helper_mode_valid”†”asbuh1hhjM*ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨*h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjM*ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj¶*h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjM*ubjÓ )�”}”(hŒmode”h]”hŒmode”…”�”}”(hjÃ*h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjM*ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÙ)ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjp)h²hh³j�)h´M=ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjl)h²hh³j�)h´M=ubah}”(h]”jg)ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j�)h´M=hji)h²hubj )�”}”(hhh]”hÎ)�”}”(hŒMIPI DBI mode-valid helper”h]”hŒMIPI DBI mode-valid helper”…”�”}”(hjí*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´M=hjê*h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hji)h²hh³j�)h´M=ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j+j$ j+j% ‰j& ‰j' ‰uh1j˜ h²hhjZh³Nh´Nubj) )�”}”(hXJ**Parameters** ``struct drm_crtc *crtc`` The CRTC ``const struct drm_display_mode *mode`` The mode to test **Description** This function validates a given display mode against the MIPI DBI's hardware display. Drivers can use this as their struct :c:type:`drm_crtc_helper_funcs.mode_valid ` callback.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj+h]”hŒ Parameters”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj +ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MAhj +ubjw )�”}”(hhh]”(j| )�”}”(hŒ#``struct drm_crtc *crtc`` The CRTC ”h]”(j‚ )�”}”(hŒ``struct drm_crtc *crtc``”h]”jˆ )�”}”(hj.+h]”hŒstruct drm_crtc *crtc”…”�”}”(hj0+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj,+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´M>hj(+ubjž )�”}”(hhh]”hÎ)�”}”(hŒThe CRTC”h]”hŒThe CRTC”…”�”}”(hjG+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jC+h´M>hjD+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj(+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jC+h´M>hj%+ubj| )�”}”(hŒ9``const struct drm_display_mode *mode`` The mode to test ”h]”(j‚ )�”}”(hŒ'``const struct drm_display_mode *mode``”h]”jˆ )�”}”(hjg+h]”hŒ#const struct drm_display_mode *mode”…”�”}”(hji+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hje+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´M?hja+ubjž )�”}”(hhh]”hÎ)�”}”(hŒThe mode to test”h]”hŒThe mode to test”…”�”}”(hj€+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j|+h´M?hj}+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hja+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j|+h´M?hj%+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj +ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj¢+h]”hŒ Description”…”�”}”(hj¤+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj +ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MAhj +ubhÎ)�”}”(hŒÇThis function validates a given display mode against the MIPI DBI's hardware display. Drivers can use this as their struct :c:type:`drm_crtc_helper_funcs.mode_valid ` callback.”h]”(hŒ}This function validates a given display mode against the MIPI DBI’s hardware display. Drivers can use this as their struct ”…”�”}”(hj¸+h²hh³Nh´Nubh)�”}”(hŒB:c:type:`drm_crtc_helper_funcs.mode_valid `”h]”jˆ )�”}”(hjÂ+h]”hŒ drm_crtc_helper_funcs.mode_valid”…”�”}”(hjÄ+h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÀ+ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_crtc_helper_funcs”uh1hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´M@hj¸+ubhŒ callback.”…”�”}”(hj¸+h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jß+h´M@hj +ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjZh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ3drm_mipi_dbi_plane_helper_atomic_check (C function)”Œ(c.drm_mipi_dbi_plane_helper_atomic_check”hNt”auh1j† hjZh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒeint drm_mipi_dbi_plane_helper_atomic_check (struct drm_plane *plane, struct drm_atomic_commit *state)”h]”j¤ )�”}”(hŒdint drm_mipi_dbi_plane_helper_atomic_check(struct drm_plane *plane, struct drm_atomic_commit *state)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj ,h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj,h²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MOubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj,h²hh³j,h´MOubjÍ )�”}”(hŒ&drm_mipi_dbi_plane_helper_atomic_check”h]”jÓ )�”}”(hŒ&drm_mipi_dbi_plane_helper_atomic_check”h]”hŒ&drm_mipi_dbi_plane_helper_atomic_check”…”�”}”(hj+,h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj',ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj,h²hh³j,h´MOubjÞ)�”}”(hŒ:(struct drm_plane *plane, struct drm_atomic_commit *state)”h]”(jä)�”}”(hŒstruct drm_plane *plane”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjG,h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjC,ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjT,h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjC,ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_plane”h]”hŒ drm_plane”…”�”}”(hje,h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjb,ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jg,Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj-,sbŒ(c.drm_mipi_dbi_plane_helper_atomic_check”†”asbuh1hhjC,ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…,h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjC,ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj“,h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjC,ubjÓ )�”}”(hŒplane”h]”hŒplane”…”�”}”(hj ,h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjC,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj?,ubjä)�”}”(hŒstruct drm_atomic_commit *state”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Œdrm_atomic_commit”h]”hŒdrm_atomic_commit”…”�”}”(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.drm_mipi_dbi_plane_helper_atomic_check”†”asbuh1hhjµ,ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõ,h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjµ,ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjµ,ubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjµ,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj?,ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj,h²hh³j,h´MOubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj,h²hh³j,h´MOubah}”(h]”jý+ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j,h´MOhjÿ+h²hubj )�”}”(hhh]”hÎ)�”}”(hŒMIPI DBI plane check helper”h]”hŒMIPI DBI plane check helper”…”�”}”(hj:-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MOhj7-h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÿ+h²hh³j,h´MOubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jR-j$ jR-j% ‰j& ‰j' ‰uh1j˜ h²hhjZh³Nh´Nubj) )�”}”(hXŠ**Parameters** ``struct drm_plane *plane`` Plane to check ``struct drm_atomic_commit *state`` Atomic state **Description** This function performs the default checks on the primary plane of a MIPI DBI device. Drivers can use this as their struct :c:type:`drm_crtc_helper_funcs.atomic_check ` callback. **Return** 0 on success, or a negative errno code otherwise.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj\-h]”hŒ Parameters”…”�”}”(hj^-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjZ-ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MShjV-ubjw )�”}”(hhh]”(j| )�”}”(hŒ+``struct drm_plane *plane`` Plane to check ”h]”(j‚ )�”}”(hŒ``struct drm_plane *plane``”h]”jˆ )�”}”(hj{-h]”hŒstruct drm_plane *plane”…”�”}”(hj}-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjy-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MPhju-ubjž )�”}”(hhh]”hÎ)�”}”(hŒPlane to check”h]”hŒPlane to check”…”�”}”(hj”-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j�-h´MPhj‘-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hju-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j�-h´MPhjr-ubj| )�”}”(hŒ1``struct drm_atomic_commit *state`` Atomic state ”h]”(j‚ )�”}”(hŒ#``struct drm_atomic_commit *state``”h]”jˆ )�”}”(hj´-h]”hŒstruct drm_atomic_commit *state”…”�”}”(hj¶-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj²-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MQhj®-ubjž )�”}”(hhh]”hÎ)�”}”(hŒ Atomic state”h]”hŒ Atomic state”…”�”}”(hjÍ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÉ-h´MQhjÊ-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj®-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÉ-h´MQhjr-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjV-ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjï-h]”hŒ Description”…”�”}”(hjñ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjí-ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MShjV-ubhÎ)�”}”(hŒÈThis function performs the default checks on the primary plane of a MIPI DBI device. Drivers can use this as their struct :c:type:`drm_crtc_helper_funcs.atomic_check ` callback.”h]”(hŒzThis function performs the default checks on the primary plane of a MIPI DBI device. Drivers can use this as their struct ”…”�”}”(hj.h²hh³Nh´Nubh)�”}”(hŒD:c:type:`drm_crtc_helper_funcs.atomic_check `”h]”jˆ )�”}”(hj.h]”hŒ"drm_crtc_helper_funcs.atomic_check”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj .ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_crtc_helper_funcs”uh1hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MRhj.ubhŒ callback.”…”�”}”(hj.h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j,.h´MRhjV-ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj9.h]”hŒReturn”…”�”}”(hj;.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj7.ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”•h´MVhjV-ubhÎ)�”}”(hŒ10 on success, or a negative errno code otherwise.”h]”hŒ10 on success, or a negative errno code otherwise.”…”�”}”(hjO.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MWhjV-ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjZh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ4drm_mipi_dbi_plane_helper_atomic_update (C function)”Œ)c.drm_mipi_dbi_plane_helper_atomic_update”hNt”auh1j† hjZh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒgvoid drm_mipi_dbi_plane_helper_atomic_update (struct drm_plane *plane, struct drm_atomic_commit *state)”h]”j¤ )�”}”(hŒfvoid drm_mipi_dbi_plane_helper_atomic_update(struct drm_plane *plane, struct drm_atomic_commit *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj~.h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjz.h²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´Mrubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�.h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjz.h²hh³jŒ.h´MrubjÍ )�”}”(hŒ'drm_mipi_dbi_plane_helper_atomic_update”h]”jÓ )�”}”(hŒ'drm_mipi_dbi_plane_helper_atomic_update”h]”hŒ'drm_mipi_dbi_plane_helper_atomic_update”…”�”}”(hjŸ.h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj›.ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjz.h²hh³jŒ.h´MrubjÞ)�”}”(hŒ:(struct drm_plane *plane, struct drm_atomic_commit *state)”h]”(jä)�”}”(hŒstruct drm_plane *plane”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Œ drm_plane”h]”hŒ drm_plane”…”�”}”(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%)�”}”jj¡.sbŒ)c.drm_mipi_dbi_plane_helper_atomic_update”†”asbuh1hhj·.ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjù.h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj·.ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj·.ubjÓ )�”}”(hŒplane”h]”hŒplane”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj·.ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj³.ubjä)�”}”(hŒstruct drm_atomic_commit *state”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Œdrm_atomic_commit”h]”hŒdrm_atomic_commit”…”�”}”(hjK/h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjH/ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jM/Œmodname”NŒ classname”Njé jì )�”}”jï ]”jõ.Œ)c.drm_mipi_dbi_plane_helper_atomic_update”†”asbuh1hhj)/ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hji/h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj)/ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjw/h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj)/ubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hj„/h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj)/ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj³.ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjz.h²hh³jŒ.h´Mrubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjv.h²hh³jŒ.h´Mrubah}”(h]”jq.ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jŒ.h´Mrhjs.h²hubj )�”}”(hhh]”hÎ)�”}”(hŒDisplay update helper”h]”hŒDisplay update helper”…”�”}”(hj®/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´Mrhj«/h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjs.h²hh³jŒ.h´Mrubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jÆ/j$ jÆ/j% ‰j& ‰j' ‰uh1j˜ h²hhjZh³Nh´Nubj) )�”}”(hX.**Parameters** ``struct drm_plane *plane`` Plane ``struct drm_atomic_commit *state`` Atomic state **Description** This function handles framebuffer flushing and vblank events. Drivers can use this as their struct :c:type:`drm_plane_helper_funcs.atomic_update ` callback.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjÐ/h]”hŒ Parameters”…”�”}”(hjÒ/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÎ/ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MvhjÊ/ubjw )�”}”(hhh]”(j| )�”}”(hŒ"``struct drm_plane *plane`` Plane ”h]”(j‚ )�”}”(hŒ``struct drm_plane *plane``”h]”jˆ )�”}”(hjï/h]”hŒstruct drm_plane *plane”…”�”}”(hjñ/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjí/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´Mshjé/ubjž )�”}”(hhh]”hÎ)�”}”(hŒPlane”h]”hŒPlane”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j0h´Mshj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjé/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j0h´Mshjæ/ubj| )�”}”(hŒ1``struct drm_atomic_commit *state`` Atomic state ”h]”(j‚ )�”}”(hŒ#``struct drm_atomic_commit *state``”h]”jˆ )�”}”(hj(0h]”hŒstruct drm_atomic_commit *state”…”�”}”(hj*0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj&0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´Mthj"0ubjž )�”}”(hhh]”hÎ)�”}”(hŒ Atomic state”h]”hŒ Atomic state”…”�”}”(hjA0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j=0h´Mthj>0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj"0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j=0h´Mthjæ/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÊ/ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjc0h]”hŒ Description”…”�”}”(hje0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hja0ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MvhjÊ/ubhÎ)�”}”(hŒ´This function handles framebuffer flushing and vblank events. Drivers can use this as their struct :c:type:`drm_plane_helper_funcs.atomic_update ` callback.”h]”(hŒcThis function handles framebuffer flushing and vblank events. Drivers can use this as their struct ”…”�”}”(hjy0h²hh³Nh´Nubh)�”}”(hŒG:c:type:`drm_plane_helper_funcs.atomic_update `”h]”jˆ )�”}”(hjƒ0h]”hŒ$drm_plane_helper_funcs.atomic_update”…”�”}”(hj…0h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj�0ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_plane_helper_funcs”uh1hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´Muhjy0ubhŒ callback.”…”�”}”(hjy0h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j 0h´MuhjÊ/ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjZh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ2drm_mipi_dbi_crtc_helper_atomic_check (C function)”Œ'c.drm_mipi_dbi_crtc_helper_atomic_check”hNt”auh1j† hjZh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒbint drm_mipi_dbi_crtc_helper_atomic_check (struct drm_crtc *crtc, struct drm_atomic_commit *state)”h]”j¤ )�”}”(hŒaint drm_mipi_dbi_crtc_helper_atomic_check(struct drm_crtc *crtc, struct drm_atomic_commit *state)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjË0h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjÇ0h²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´M©ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚ0h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÇ0h²hh³jÙ0h´M©ubjÍ )�”}”(hŒ%drm_mipi_dbi_crtc_helper_atomic_check”h]”jÓ )�”}”(hŒ%drm_mipi_dbi_crtc_helper_atomic_check”h]”hŒ%drm_mipi_dbi_crtc_helper_atomic_check”…”�”}”(hjì0h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjè0ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÇ0h²hh³jÙ0h´M©ubjÞ)�”}”(hŒ8(struct drm_crtc *crtc, struct drm_atomic_commit *state)”h]”(jä)�”}”(hŒstruct drm_crtc *crtc”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj1ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj1ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_crtc”h]”hŒdrm_crtc”…”�”}”(hj&1h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj#1ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j(1Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjî0sbŒ'c.drm_mipi_dbi_crtc_helper_atomic_check”†”asbuh1hhj1ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjF1h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj1ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjT1h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj1ubjÓ )�”}”(hŒcrtc”h]”hŒcrtc”…”�”}”(hja1h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj1ubjä)�”}”(hŒstruct drm_atomic_commit *state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjz1h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjv1ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡1h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjv1ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_atomic_commit”h]”hŒdrm_atomic_commit”…”�”}”(hj˜1h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj•1ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jš1Œmodname”NŒ classname”Njé jì )�”}”jï ]”jB1Œ'c.drm_mipi_dbi_crtc_helper_atomic_check”†”asbuh1hhjv1ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶1h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjv1ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÄ1h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjv1ubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hjÑ1h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjv1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj1ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjÇ0h²hh³jÙ0h´M©ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjÃ0h²hh³jÙ0h´M©ubah}”(h]”j¾0ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jÙ0h´M©hjÀ0h²hubj )�”}”(hhh]”hÎ)�”}”(hŒMIPI DBI CRTC check helper”h]”hŒMIPI DBI CRTC check helper”…”�”}”(hjû1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´M©hjø1h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÀ0h²hh³jÙ0h´M©ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j2j$ j2j% ‰j& ‰j' ‰uh1j˜ h²hhjZh³Nh´Nubj) )�”}”(hXº**Parameters** ``struct drm_crtc *crtc`` CRTC to check ``struct drm_atomic_commit *state`` Atomic state **Description** This function performs the default checks on the CRTC of a MIPI DBI device and ensures that the primary plane as been set up correctly. Drivers can use this as their struct :c:type:`drm_crtc_helper_funcs.atomic_check ` callback. **Return** 0 on success, or a negative errno code otherwise.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj2h]”hŒ Parameters”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´M­hj2ubjw )�”}”(hhh]”(j| )�”}”(hŒ(``struct drm_crtc *crtc`` CRTC to check ”h]”(j‚ )�”}”(hŒ``struct drm_crtc *crtc``”h]”jˆ )�”}”(hj<2h]”hŒstruct drm_crtc *crtc”…”�”}”(hj>2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj:2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´Mªhj62ubjž )�”}”(hhh]”hÎ)�”}”(hŒ CRTC to check”h]”hŒ CRTC to check”…”�”}”(hjU2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jQ2h´MªhjR2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj62ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jQ2h´Mªhj32ubj| )�”}”(hŒ1``struct drm_atomic_commit *state`` Atomic state ”h]”(j‚ )�”}”(hŒ#``struct drm_atomic_commit *state``”h]”jˆ )�”}”(hju2h]”hŒstruct drm_atomic_commit *state”…”�”}”(hjw2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjs2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´M«hjo2ubjž )�”}”(hhh]”hÎ)�”}”(hŒ Atomic state”h]”hŒ Atomic state”…”�”}”(hjŽ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jŠ2h´M«hj‹2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjo2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jŠ2h´M«hj32ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj2ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj°2h]”hŒ Description”…”�”}”(hj²2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj®2ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´M­hj2ubhÎ)�”}”(hŒûThis function performs the default checks on the CRTC of a MIPI DBI device and ensures that the primary plane as been set up correctly. Drivers can use this as their struct :c:type:`drm_crtc_helper_funcs.atomic_check ` callback.”h]”(hŒ­This function performs the default checks on the CRTC of a MIPI DBI device and ensures that the primary plane as been set up correctly. Drivers can use this as their struct ”…”�”}”(hjÆ2h²hh³Nh´Nubh)�”}”(hŒD:c:type:`drm_crtc_helper_funcs.atomic_check `”h]”jˆ )�”}”(hjÐ2h]”hŒ"drm_crtc_helper_funcs.atomic_check”…”�”}”(hjÒ2h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÎ2ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_crtc_helper_funcs”uh1hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´M¬hjÆ2ubhŒ callback.”…”�”}”(hjÆ2h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jí2h´M¬hj2ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjú2h]”hŒReturn”…”�”}”(hjü2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjø2ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´M±hj2ubhÎ)�”}”(hŒ10 on success, or a negative errno code otherwise.”h]”hŒ10 on success, or a negative errno code otherwise.”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´M²hj2ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjZh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ4drm_mipi_dbi_crtc_helper_atomic_disable (C function)”Œ)c.drm_mipi_dbi_crtc_helper_atomic_disable”hNt”auh1j† hjZh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒevoid drm_mipi_dbi_crtc_helper_atomic_disable (struct drm_crtc *crtc, struct drm_atomic_commit *state)”h]”j¤ )�”}”(hŒdvoid drm_mipi_dbi_crtc_helper_atomic_disable(struct drm_crtc *crtc, struct drm_atomic_commit *state)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj?3h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj;3h²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MÇubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjN3h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj;3h²hh³jM3h´MÇubjÍ )�”}”(hŒ'drm_mipi_dbi_crtc_helper_atomic_disable”h]”jÓ )�”}”(hŒ'drm_mipi_dbi_crtc_helper_atomic_disable”h]”hŒ'drm_mipi_dbi_crtc_helper_atomic_disable”…”�”}”(hj`3h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj\3ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj;3h²hh³jM3h´MÇubjÞ)�”}”(hŒ8(struct drm_crtc *crtc, struct drm_atomic_commit *state)”h]”(jä)�”}”(hŒstruct drm_crtc *crtc”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj|3h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjx3ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰3h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjx3ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_crtc”h]”hŒdrm_crtc”…”�”}”(hjš3h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj—3ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jœ3Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjb3sbŒ)c.drm_mipi_dbi_crtc_helper_atomic_disable”†”asbuh1hhjx3ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjº3h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjx3ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÈ3h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjx3ubjÓ )�”}”(hŒcrtc”h]”hŒcrtc”…”�”}”(hjÕ3h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjx3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjt3ubjä)�”}”(hŒstruct drm_atomic_commit *state”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjî3h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjê3ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjû3h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjê3ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_atomic_commit”h]”hŒdrm_atomic_commit”…”�”}”(hj 4h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj 4ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j4Œmodname”NŒ classname”Njé jì )�”}”jï ]”j¶3Œ)c.drm_mipi_dbi_crtc_helper_atomic_disable”†”asbuh1hhjê3ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*4h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjê3ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj84h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjê3ubjÓ )�”}”(hŒstate”h]”hŒstate”…”�”}”(hjE4h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjê3ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjt3ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj;3h²hh³jM3h´MÇubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj73h²hh³jM3h´MÇubah}”(h]”j23ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jM3h´MÇhj43h²hubj )�”}”(hhh]”hÎ)�”}”(hŒMIPI DBI CRTC disable helper”h]”hŒMIPI DBI CRTC disable helper”…”�”}”(hjo4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MÇhjl4h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj43h²hh³jM3h´MÇubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j‡4j$ j‡4j% ‰j& ‰j' ‰uh1j˜ h²hhjZh³Nh´Nubj) )�”}”(hXo**Parameters** ``struct drm_crtc *crtc`` CRTC to disable ``struct drm_atomic_commit *state`` Atomic state **Description** This function disables backlight if present, if not the display memory is blanked. The regulator is disabled if in use. Drivers can use this as their struct :c:type:`drm_crtc_helper_funcs.atomic_disable ` callback.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj‘4h]”hŒ Parameters”…”�”}”(hj“4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj�4ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MËhj‹4ubjw )�”}”(hhh]”(j| )�”}”(hŒ*``struct drm_crtc *crtc`` CRTC to disable ”h]”(j‚ )�”}”(hŒ``struct drm_crtc *crtc``”h]”jˆ )�”}”(hj°4h]”hŒstruct drm_crtc *crtc”…”�”}”(hj²4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj®4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MÈhjª4ubjž )�”}”(hhh]”hÎ)�”}”(hŒCRTC to disable”h]”hŒCRTC to disable”…”�”}”(hjÉ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÅ4h´MÈhjÆ4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjª4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÅ4h´MÈhj§4ubj| )�”}”(hŒ1``struct drm_atomic_commit *state`` Atomic state ”h]”(j‚ )�”}”(hŒ#``struct drm_atomic_commit *state``”h]”jˆ )�”}”(hjé4h]”hŒstruct drm_atomic_commit *state”…”�”}”(hjë4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjç4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MÉhjã4ubjž )�”}”(hhh]”hÎ)�”}”(hŒ Atomic state”h]”hŒ Atomic state”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jþ4h´MÉhjÿ4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjã4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jþ4h´MÉhj§4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj‹4ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj$5h]”hŒ Description”…”�”}”(hj&5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj"5ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MËhj‹4ubhÎ)�”}”(hŒíThis function disables backlight if present, if not the display memory is blanked. The regulator is disabled if in use. Drivers can use this as their struct :c:type:`drm_crtc_helper_funcs.atomic_disable ` callback.”h]”(hŒ�This function disables backlight if present, if not the display memory is blanked. The regulator is disabled if in use. Drivers can use this as their struct ”…”�”}”(hj:5h²hh³Nh´Nubh)�”}”(hŒF:c:type:`drm_crtc_helper_funcs.atomic_disable `”h]”jˆ )�”}”(hjD5h]”hŒ$drm_crtc_helper_funcs.atomic_disable”…”�”}”(hjF5h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjB5ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_crtc_helper_funcs”uh1hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MÊhj:5ubhŒ callback.”…”�”}”(hj:5h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³ja5h´MÊhj‹4ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjZh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ4drm_mipi_dbi_connector_helper_get_modes (C function)”Œ)c.drm_mipi_dbi_connector_helper_get_modes”hNt”auh1j† hjZh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒMint drm_mipi_dbi_connector_helper_get_modes (struct drm_connector *connector)”h]”j¤ )�”}”(hŒLint drm_mipi_dbi_connector_helper_get_modes(struct drm_connector *connector)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjŒ5h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjˆ5h²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´Máubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›5h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjˆ5h²hh³jš5h´MáubjÍ )�”}”(hŒ'drm_mipi_dbi_connector_helper_get_modes”h]”jÓ )�”}”(hŒ'drm_mipi_dbi_connector_helper_get_modes”h]”hŒ'drm_mipi_dbi_connector_helper_get_modes”…”�”}”(hj­5h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj©5ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjˆ5h²hh³jš5h´MáubjÞ)�”}”(hŒ!(struct drm_connector *connector)”h]”jä)�”}”(hŒstruct drm_connector *connector”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjÉ5h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjÅ5ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖ5h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÅ5ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_connector”h]”hŒ drm_connector”…”�”}”(hjç5h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjä5ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jé5Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj¯5sbŒ)c.drm_mipi_dbi_connector_helper_get_modes”†”asbuh1hhjÅ5ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÅ5ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÅ5ubjÓ )�”}”(hŒ connector”h]”hŒ connector”…”�”}”(hj"6h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÅ5ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÁ5ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjˆ5h²hh³jš5h´Máubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj„5h²hh³jš5h´Máubah}”(h]”j5ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jš5h´Máhj�5h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ.Duplicates the MIPI DBI mode for the connector”h]”hŒ.Duplicates the MIPI DBI mode for the connector”…”�”}”(hjL6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MáhjI6h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj�5h²hh³jš5h´Máubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jd6j$ jd6j% ‰j& ‰j' ‰uh1j˜ h²hhjZh³Nh´Nubj) )�”}”(hXe**Parameters** ``struct drm_connector *connector`` The connector **Description** Sets the connecto rmodes from the MIPI DBI mode. Drivers can use this as their :c:type:`drm_connector_helper_funcs->get_mods ` callback. See drm_gem_destroy_shadow_plane_state() for additional details. **Return** The number of created modes.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjn6h]”hŒ Parameters”…”�”}”(hjp6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjl6ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´Måhjh6ubjw )�”}”(hhh]”j| )�”}”(hŒ2``struct drm_connector *connector`` The connector ”h]”(j‚ )�”}”(hŒ#``struct drm_connector *connector``”h]”jˆ )�”}”(hj�6h]”hŒstruct drm_connector *connector”…”�”}”(hj�6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj‹6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´Mâhj‡6ubjž )�”}”(hhh]”hÎ)�”}”(hŒ The connector”h]”hŒ The connector”…”�”}”(hj¦6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¢6h´Mâhj£6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj‡6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¢6h´Mâhj„6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjh6ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjÈ6h]”hŒ Description”…”�”}”(hjÊ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÆ6ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´Mähjh6ubhÎ)�”}”(hŒåSets the connecto rmodes from the MIPI DBI mode. Drivers can use this as their :c:type:`drm_connector_helper_funcs->get_mods ` callback. See drm_gem_destroy_shadow_plane_state() for additional details.”h]”(hŒOSets the connecto rmodes from the MIPI DBI mode. Drivers can use this as their ”…”�”}”(hjÞ6h²hh³Nh´Nubh)�”}”(hŒK:c:type:`drm_connector_helper_funcs->get_mods `”h]”jˆ )�”}”(hjè6h]”hŒ$drm_connector_helper_funcs->get_mods”…”�”}”(hjê6h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjæ6ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_connector_helper_funcs”uh1hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MãhjÞ6ubhŒK callback. See drm_gem_destroy_shadow_plane_state() for additional details.”…”�”}”(hjÞ6h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j7h´Mãhjh6ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj7h]”hŒReturn”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´Mçhjh6ubhÎ)�”}”(hŒThe number of created modes.”h]”hŒThe number of created modes.”…”�”}”(hj(7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´Mèhjh6ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjZh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ"drm_mipi_dbi_dev_init (C function)”Œc.drm_mipi_dbi_dev_init”hNt”auh1j† hjZh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ“int drm_mipi_dbi_dev_init (struct mipi_dbi_dev *dbidev, const struct drm_display_mode *mode, u32 format, unsigned int rotation, size_t tx_buf_size)”h]”j¤ )�”}”(hŒ’int drm_mipi_dbi_dev_init(struct mipi_dbi_dev *dbidev, const struct drm_display_mode *mode, u32 format, unsigned int rotation, size_t tx_buf_size)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjW7h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjS7h²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjf7h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjS7h²hh³je7h´MubjÍ )�”}”(hŒdrm_mipi_dbi_dev_init”h]”jÓ )�”}”(hŒdrm_mipi_dbi_dev_init”h]”hŒdrm_mipi_dbi_dev_init”…”�”}”(hjx7h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjt7ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjS7h²hh³je7h´MubjÞ)�”}”(hŒy(struct mipi_dbi_dev *dbidev, const struct drm_display_mode *mode, u32 format, unsigned int rotation, size_t tx_buf_size)”h]”(jä)�”}”(hŒstruct mipi_dbi_dev *dbidev”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj”7h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj�7ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡7h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj�7ubh)�”}”(hhh]”jÓ )�”}”(hŒ mipi_dbi_dev”h]”hŒ mipi_dbi_dev”…”�”}”(hj²7h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¯7ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j´7Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjz7sbŒc.drm_mipi_dbi_dev_init”†”asbuh1hhj�7ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒ7h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj�7ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjà7h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�7ubjÓ )�”}”(hŒdbidev”h]”hŒdbidev”…”�”}”(hjí7h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj�7ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjŒ7ubjä)�”}”(hŒ#const struct drm_display_mode *mode”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj8ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj8ubjª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj!8h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj8ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.8h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj8ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_display_mode”h]”hŒdrm_display_mode”…”�”}”(hj?8h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj<8ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jA8Œmodname”NŒ classname”Njé jì )�”}”jï ]”jÎ7Œc.drm_mipi_dbi_dev_init”†”asbuh1hhj8ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]8h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj8ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjk8h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj8ubjÓ )�”}”(hŒmode”h]”hŒmode”…”�”}”(hjx8h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjŒ7ubjä)�”}”(hŒ u32 format”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu32”h]”hŒu32”…”�”}”(hj”8h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj‘8ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j–8Œmodname”NŒ classname”Njé jì )�”}”jï ]”jÎ7Œc.drm_mipi_dbi_dev_init”†”asbuh1hhj�8ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²8h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj�8ubjÓ )�”}”(hŒformat”h]”hŒformat”…”�”}”(hjÀ8h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj�8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjŒ7ubjä)�”}”(hŒunsigned int rotation”h]”(j¦)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÙ8h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjÕ8ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjç8h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÕ8ubj¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjõ8h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjÕ8ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÕ8ubjÓ )�”}”(hŒrotation”h]”hŒrotation”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÕ8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjŒ7ubjä)�”}”(hŒsize_t tx_buf_size”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj-9h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj*9ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j/9Œmodname”NŒ classname”Njé jì )�”}”jï ]”jÎ7Œc.drm_mipi_dbi_dev_init”†”asbuh1hhj&9ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjK9h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj&9ubjÓ )�”}”(hŒ tx_buf_size”h]”hŒ tx_buf_size”…”�”}”(hjY9h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj&9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjŒ7ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjS7h²hh³je7h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjO7h²hh³je7h´Mubah}”(h]”jJ7ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³je7h´MhjL7h²hubj )�”}”(hhh]”hÎ)�”}”(hŒMIPI DBI device initialization”h]”hŒMIPI DBI device initialization”…”�”}”(hjƒ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´Mhj€9h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjL7h²hh³je7h´Mubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j›9j$ j›9j% ‰j& ‰j' ‰uh1j˜ h²hhjZh³Nh´Nubj) )�”}”(hXr**Parameters** ``struct mipi_dbi_dev *dbidev`` MIPI DBI device structure to initialize ``const struct drm_display_mode *mode`` Hardware display mode ``u32 format`` Hardware color format (DRM_FORMAT\_\*). ``unsigned int rotation`` Initial rotation in degrees Counter Clock Wise ``size_t tx_buf_size`` Allocate a transmit buffer of at least this size. **Description** Initializes a MIPI-DBI device. The minimum size of the transmit buffer in **tx_buf_size** is optional. Pass 0 to allocate enough memory to transmit a single scanline of the display. **Return** Zero on success, negative error code on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj¥9h]”hŒ Parameters”…”�”}”(hj§9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj£9ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´M hjŸ9ubjw )�”}”(hhh]”(j| )�”}”(hŒH``struct mipi_dbi_dev *dbidev`` MIPI DBI device structure to initialize ”h]”(j‚ )�”}”(hŒ``struct mipi_dbi_dev *dbidev``”h]”jˆ )�”}”(hjÄ9h]”hŒstruct mipi_dbi_dev *dbidev”…”�”}”(hjÆ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÂ9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´Mhj¾9ubjž )�”}”(hhh]”hÎ)�”}”(hŒ'MIPI DBI device structure to initialize”h]”hŒ'MIPI DBI device structure to initialize”…”�”}”(hjÝ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÙ9h´MhjÚ9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¾9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÙ9h´Mhj»9ubj| )�”}”(hŒ>``const struct drm_display_mode *mode`` Hardware display mode ”h]”(j‚ )�”}”(hŒ'``const struct drm_display_mode *mode``”h]”jˆ )�”}”(hjý9h]”hŒ#const struct drm_display_mode *mode”…”�”}”(hjÿ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjû9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´Mhj÷9ubjž )�”}”(hhh]”hÎ)�”}”(hŒHardware display mode”h]”hŒHardware display mode”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j:h´Mhj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj÷9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j:h´Mhj»9ubj| )�”}”(hŒ7``u32 format`` Hardware color format (DRM_FORMAT\_\*). ”h]”(j‚ )�”}”(hŒ``u32 format``”h]”jˆ )�”}”(hj6:h]”hŒ u32 format”…”�”}”(hj8:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj4:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´Mhj0:ubjž )�”}”(hhh]”hÎ)�”}”(hŒ'Hardware color format (DRM_FORMAT\_\*).”h]”hŒ'Hardware color format (DRM_FORMAT_*).”…”�”}”(hjO:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jK:h´MhjL:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj0:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jK:h´Mhj»9ubj| )�”}”(hŒI``unsigned int rotation`` Initial rotation in degrees Counter Clock Wise ”h]”(j‚ )�”}”(hŒ``unsigned int rotation``”h]”jˆ )�”}”(hjo:h]”hŒunsigned int rotation”…”�”}”(hjq:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjm:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´M hji:ubjž )�”}”(hhh]”hÎ)�”}”(hŒ.Initial rotation in degrees Counter Clock Wise”h]”hŒ.Initial rotation in degrees Counter Clock Wise”…”�”}”(hjˆ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j„:h´M hj…:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hji:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j„:h´M hj»9ubj| )�”}”(hŒI``size_t tx_buf_size`` Allocate a transmit buffer of at least this size. ”h]”(j‚ )�”}”(hŒ``size_t tx_buf_size``”h]”jˆ )�”}”(hj¨:h]”hŒsize_t tx_buf_size”…”�”}”(hjª:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¦:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´M hj¢:ubjž )�”}”(hhh]”hÎ)�”}”(hŒ1Allocate a transmit buffer of at least this size.”h]”hŒ1Allocate a transmit buffer of at least this size.”…”�”}”(hjÁ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j½:h´M hj¾:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¢:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j½:h´M hj»9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjŸ9ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjã:h]”hŒ Description”…”�”}”(hjå:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjá:ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´M hjŸ9ubhÎ)�”}”(hŒµInitializes a MIPI-DBI device. The minimum size of the transmit buffer in **tx_buf_size** is optional. Pass 0 to allocate enough memory to transmit a single scanline of the display.”h]”(hŒJInitializes a MIPI-DBI device. The minimum size of the transmit buffer in ”…”�”}”(hjù:h²hh³Nh´Nubj3 )�”}”(hŒ**tx_buf_size**”h]”hŒ tx_buf_size”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjù:ubhŒ\ is optional. Pass 0 to allocate enough memory to transmit a single scanline of the display.”…”�”}”(hjù:h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´M hjŸ9ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj;h]”hŒReturn”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MhjŸ9ubhÎ)�”}”(hŒ0Zero on success, negative error code on failure.”h]”hŒ0Zero on success, negative error code on failure.”…”�”}”(hj2;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MhjŸ9ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjZh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œmipi_dbi_hw_reset (C function)”Œc.mipi_dbi_hw_reset”hNt”auh1j† hjZh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ-void mipi_dbi_hw_reset (struct mipi_dbi *dbi)”h]”j¤ )�”}”(hŒ,void mipi_dbi_hw_reset(struct mipi_dbi *dbi)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hja;h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj];h²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´M:ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjp;h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj];h²hh³jo;h´M:ubjÍ )�”}”(hŒmipi_dbi_hw_reset”h]”jÓ )�”}”(hŒmipi_dbi_hw_reset”h]”hŒmipi_dbi_hw_reset”…”�”}”(hj‚;h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj~;ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj];h²hh³jo;h´M:ubjÞ)�”}”(hŒ(struct mipi_dbi *dbi)”h]”jä)�”}”(hŒstruct mipi_dbi *dbi”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Œmipi_dbi”h]”hŒmipi_dbi”…”�”}”(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%)�”}”jj„;sbŒc.mipi_dbi_hw_reset”†”asbuh1hhjš;ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜ;h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjš;ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjê;h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjš;ubjÓ )�”}”(hŒdbi”h]”hŒdbi”…”�”}”(hj÷;h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjš;ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj–;ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj];h²hh³jo;h´M:ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjY;h²hh³jo;h´M:ubah}”(h]”jT;ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jo;h´M:hjV;h²hubj )�”}”(hhh]”hÎ)�”}”(hŒHardware reset of controller”h]”hŒHardware reset of controller”…”�”}”(hj!<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´M:hj<h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjV;h²hh³jo;h´M:ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j9<j$ j9<j% ‰j& ‰j' ‰uh1j˜ h²hhjZh³Nh´Nubj) )�”}”(hŒ™**Parameters** ``struct mipi_dbi *dbi`` MIPI DBI structure **Description** Reset controller if the :c:type:`mipi_dbi->reset ` gpio is set.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjC<h]”hŒ Parameters”…”�”}”(hjE<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjA<ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´M>hj=<ubjw )�”}”(hhh]”j| )�”}”(hŒ,``struct mipi_dbi *dbi`` MIPI DBI structure ”h]”(j‚ )�”}”(hŒ``struct mipi_dbi *dbi``”h]”jˆ )�”}”(hjb<h]”hŒstruct mipi_dbi *dbi”…”�”}”(hjd<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj`<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´M;hj\<ubjž )�”}”(hhh]”hÎ)�”}”(hŒMIPI DBI structure”h]”hŒMIPI DBI structure”…”�”}”(hj{<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jw<h´M;hjx<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj\<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jw<h´M;hjY<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj=<ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj�<h]”hŒ Description”…”�”}”(hjŸ<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj›<ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´M=hj=<ubhÎ)�”}”(hŒIReset controller if the :c:type:`mipi_dbi->reset ` gpio is set.”h]”(hŒReset controller if the ”…”�”}”(hj³<h²hh³Nh´Nubh)�”}”(hŒ$:c:type:`mipi_dbi->reset `”h]”jˆ )�”}”(hj½<h]”hŒmipi_dbi->reset”…”�”}”(hj¿<h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj»<ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œmipi_dbi”uh1hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´M<hj³<ubhŒ gpio is set.”…”�”}”(hj³<h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÚ<h´M<hj=<ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjZh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ#mipi_dbi_display_is_on (C function)”Œc.mipi_dbi_display_is_on”hNt”auh1j† hjZh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ2bool mipi_dbi_display_is_on (struct mipi_dbi *dbi)”h]”j¤ )�”}”(hŒ1bool mipi_dbi_display_is_on(struct mipi_dbi *dbi)”h]”(j¦)�”}”(hj£Ih]”hŒbool”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj=h²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MLubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj=h²hh³j=h´MLubjÍ )�”}”(hŒmipi_dbi_display_is_on”h]”jÓ )�”}”(hŒmipi_dbi_display_is_on”h]”hŒmipi_dbi_display_is_on”…”�”}”(hj%=h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj!=ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj=h²hh³j=h´MLubjÞ)�”}”(hŒ(struct mipi_dbi *dbi)”h]”jä)�”}”(hŒstruct mipi_dbi *dbi”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjA=h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj==ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjN=h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj==ubh)�”}”(hhh]”jÓ )�”}”(hŒmipi_dbi”h]”hŒmipi_dbi”…”�”}”(hj_=h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj\=ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”ja=Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj'=sbŒc.mipi_dbi_display_is_on”†”asbuh1hhj==ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj==ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj�=h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj==ubjÓ )�”}”(hŒdbi”h]”hŒdbi”…”�”}”(hjš=h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj==ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj9=ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj=h²hh³j=h´MLubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjý<h²hh³j=h´MLubah}”(h]”jø<ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j=h´MLhjú<h²hubj )�”}”(hhh]”hÎ)�”}”(hŒCheck if display is on”h]”hŒCheck if display is on”…”�”}”(hjÄ=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MLhjÁ=h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjú<h²hh³j=h´MLubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jÜ=j$ jÜ=j% ‰j& ‰j' ‰uh1j˜ h²hhjZh³Nh´Nubj) )�”}”(hXx**Parameters** ``struct mipi_dbi *dbi`` MIPI DBI structure **Description** This function checks the Power Mode register (if readable) to see if display output is turned on. This can be used to see if the bootloader has already turned on the display avoiding flicker when the pipeline is enabled. **Return** true if the display can be verified to be on, false otherwise.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjæ=h]”hŒ Parameters”…”�”}”(hjè=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjä=ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MPhjà=ubjw )�”}”(hhh]”j| )�”}”(hŒ,``struct mipi_dbi *dbi`` MIPI DBI structure ”h]”(j‚ )�”}”(hŒ``struct mipi_dbi *dbi``”h]”jˆ )�”}”(hj>h]”hŒstruct mipi_dbi *dbi”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MMhjÿ=ubjž )�”}”(hhh]”hÎ)�”}”(hŒMIPI DBI structure”h]”hŒMIPI DBI structure”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j>h´MMhj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÿ=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j>h´MMhjü=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjà=ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj@>h]”hŒ Description”…”�”}”(hjB>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj>>ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MOhjà=ubhÎ)�”}”(hŒÜThis function checks the Power Mode register (if readable) to see if display output is turned on. This can be used to see if the bootloader has already turned on the display avoiding flicker when the pipeline is enabled.”h]”hŒÜThis function checks the Power Mode register (if readable) to see if display output is turned on. This can be used to see if the bootloader has already turned on the display avoiding flicker when the pipeline is enabled.”…”�”}”(hjV>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MNhjà=ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjg>h]”hŒReturn”…”�”}”(hji>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hje>ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MShjà=ubhÎ)�”}”(hŒ>true if the display can be verified to be on, false otherwise.”h]”hŒ>true if the display can be verified to be on, false otherwise.”…”�”}”(hj}>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MThjà=ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjZh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ#mipi_dbi_poweron_reset (C function)”Œc.mipi_dbi_poweron_reset”hNt”auh1j† hjZh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ8int mipi_dbi_poweron_reset (struct mipi_dbi_dev *dbidev)”h]”j¤ )�”}”(hŒ7int mipi_dbi_poweron_reset(struct mipi_dbi_dev *dbidev)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj¬>h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj¨>h²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.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Œmipi_dbi_poweron_reset”h]”jÓ )�”}”(hŒmipi_dbi_poweron_reset”h]”hŒmipi_dbi_poweron_reset”…”�”}”(hjÍ>h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÉ>ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj¨>h²hh³jº>h´MŸubjÞ)�”}”(hŒ(struct mipi_dbi_dev *dbidev)”h]”jä)�”}”(hŒstruct mipi_dbi_dev *dbidev”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Œ mipi_dbi_dev”h]”hŒ mipi_dbi_dev”…”�”}”(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%)�”}”jjÏ>sbŒc.mipi_dbi_poweron_reset”†”asbuh1hhjå>ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'?h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjå>ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj5?h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjå>ubjÓ )�”}”(hŒdbidev”h]”hŒdbidev”…”�”}”(hjB?h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjå>ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjá>ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj¨>h²hh³jº>h´MŸubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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ŒMIPI DBI poweron and reset”h]”hŒMIPI DBI poweron and reset”…”�”}”(hjl?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MŸhji?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²hhjZh³Nh´Nubj) )�”}”(hŒé**Parameters** ``struct mipi_dbi_dev *dbidev`` MIPI DBI device structure **Description** This function enables the regulator if used and does a hardware and software reset. **Return** Zero on success, or a negative error code.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjŽ?h]”hŒ Parameters”…”�”}”(hj�?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjŒ?ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´M£hjˆ?ubjw )�”}”(hhh]”j| )�”}”(hŒ:``struct mipi_dbi_dev *dbidev`` MIPI DBI device structure ”h]”(j‚ )�”}”(hŒ``struct mipi_dbi_dev *dbidev``”h]”jˆ )�”}”(hj­?h]”hŒstruct mipi_dbi_dev *dbidev”…”�”}”(hj¯?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj«?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´M hj§?ubjž )�”}”(hhh]”hÎ)�”}”(hŒMIPI DBI device structure”h]”hŒMIPI DBI device structure”…”�”}”(hjÆ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÂ?h´M hjÃ?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj§?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÂ?h´M hj¤?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjˆ?ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjè?h]”hŒ Description”…”�”}”(hjê?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjæ?ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´M¢hjˆ?ubhÎ)�”}”(hŒSThis function enables the regulator if used and does a hardware and software reset.”h]”hŒSThis function enables the regulator if used and does a hardware and software reset.”…”�”}”(hjþ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´M¡hjˆ?ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj@h]”hŒReturn”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj @ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´M¤hjˆ?ubhÎ)�”}”(hŒ*Zero on success, or a negative error code.”h]”hŒ*Zero on success, or a negative error code.”…”�”}”(hj%@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´M¥hjˆ?ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjZh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ/mipi_dbi_poweron_conditional_reset (C function)”Œ$c.mipi_dbi_poweron_conditional_reset”hNt”auh1j† hjZh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒDint mipi_dbi_poweron_conditional_reset (struct mipi_dbi_dev *dbidev)”h]”j¤ )�”}”(hŒCint mipi_dbi_poweron_conditional_reset(struct mipi_dbi_dev *dbidev)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjT@h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjP@h²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´M¯ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjc@h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjP@h²hh³jb@h´M¯ubjÍ )�”}”(hŒ"mipi_dbi_poweron_conditional_reset”h]”jÓ )�”}”(hŒ"mipi_dbi_poweron_conditional_reset”h]”hŒ"mipi_dbi_poweron_conditional_reset”…”�”}”(hju@h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjq@ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjP@h²hh³jb@h´M¯ubjÞ)�”}”(hŒ(struct mipi_dbi_dev *dbidev)”h]”jä)�”}”(hŒstruct mipi_dbi_dev *dbidev”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Œ mipi_dbi_dev”h]”hŒ mipi_dbi_dev”…”�”}”(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%)�”}”jjw@sbŒ$c.mipi_dbi_poweron_conditional_reset”†”asbuh1hhj�@ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏ@h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj�@ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÝ@h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�@ubjÓ )�”}”(hŒdbidev”h]”hŒdbidev”…”�”}”(hjê@h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj�@ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj‰@ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjP@h²hh³jb@h´M¯ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjL@h²hh³jb@h´M¯ubah}”(h]”jG@ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jb@h´M¯hjI@h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ&MIPI DBI poweron and conditional reset”h]”hŒ&MIPI DBI poweron and conditional reset”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´M¯hjAh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjI@h²hh³jb@h´M¯ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j,Aj$ j,Aj% ‰j& ‰j' ‰uh1j˜ h²hhjZh³Nh´Nubj) )�”}”(hX‹**Parameters** ``struct mipi_dbi_dev *dbidev`` MIPI DBI device structure **Description** This function enables the regulator if used and if the display is off, it does a hardware and software reset. If mipi_dbi_display_is_on() determines that the display is on, no reset is performed. **Return** Zero if the controller was reset, 1 if the display was already on, or a negative error code.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj6Ah]”hŒ Parameters”…”�”}”(hj8Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj4Aubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´M³hj0Aubjw )�”}”(hhh]”j| )�”}”(hŒ:``struct mipi_dbi_dev *dbidev`` MIPI DBI device structure ”h]”(j‚ )�”}”(hŒ``struct mipi_dbi_dev *dbidev``”h]”jˆ )�”}”(hjUAh]”hŒstruct mipi_dbi_dev *dbidev”…”�”}”(hjWAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjSAubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´M°hjOAubjž )�”}”(hhh]”hÎ)�”}”(hŒMIPI DBI device structure”h]”hŒMIPI DBI device structure”…”�”}”(hjnAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jjAh´M°hjkAubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjOAubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jjAh´M°hjLAubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj0AubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj�Ah]”hŒ Description”…”�”}”(hj’Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjŽAubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´M²hj0AubhÎ)�”}”(hŒÃThis function enables the regulator if used and if the display is off, it does a hardware and software reset. If mipi_dbi_display_is_on() determines that the display is on, no reset is performed.”h]”hŒÃThis function enables the regulator if used and if the display is off, it does a hardware and software reset. If mipi_dbi_display_is_on() determines that the display is on, no reset is performed.”…”�”}”(hj¦Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´M±hj0AubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj·Ah]”hŒReturn”…”�”}”(hj¹Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjµAubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´Mµhj0AubhÎ)�”}”(hŒ\Zero if the controller was reset, 1 if the display was already on, or a negative error code.”h]”hŒ\Zero if the controller was reset, 1 if the display was already on, or a negative error code.”…”�”}”(hjÍAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´M¶hj0Aubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjZh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ'mipi_dbi_spi_cmd_max_speed (C function)”Œc.mipi_dbi_spi_cmd_max_speed”hNt”auh1j† hjZh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒCu32 mipi_dbi_spi_cmd_max_speed (struct spi_device *spi, size_t len)”h]”j¤ )�”}”(hŒBu32 mipi_dbi_spi_cmd_max_speed(struct spi_device *spi, size_t len)”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu32”h]”hŒu32”…”�”}”(hjÿAh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjüAubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jBŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jŒmipi_dbi_spi_cmd_max_speed”sbŒc.mipi_dbi_spi_cmd_max_speed”†”asbuh1hhjøAh²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MÃubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!Bh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjøAh²hh³j Bh´MÃubjÍ )�”}”(hŒmipi_dbi_spi_cmd_max_speed”h]”jÓ )�”}”(hjBh]”hŒmipi_dbi_spi_cmd_max_speed”…”�”}”(hj3Bh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj/Bubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjøAh²hh³j Bh´MÃubjÞ)�”}”(hŒ$(struct spi_device *spi, size_t len)”h]”(jä)�”}”(hŒstruct spi_device *spi”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjNBh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjJBubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[Bh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjJBubh)�”}”(hhh]”jÓ )�”}”(hŒ spi_device”h]”hŒ spi_device”…”�”}”(hjlBh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjiBubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jnBŒmodname”NŒ classname”Njé jì )�”}”jï ]”jBŒc.mipi_dbi_spi_cmd_max_speed”†”asbuh1hhjJBubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠBh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjJBubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj˜Bh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjJBubjÓ )�”}”(hŒspi”h]”hŒspi”…”�”}”(hj¥Bh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjJBubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjFBubjä)�”}”(hŒ size_t len”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjÁBh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¾Bubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jÃBŒmodname”NŒ classname”Njé jì )�”}”jï ]”jBŒc.mipi_dbi_spi_cmd_max_speed”†”asbuh1hhjºBubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjßBh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjºBubjÓ )�”}”(hŒlen”h]”hŒlen”…”�”}”(hjíBh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjºBubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjFBubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjøAh²hh³j Bh´MÃubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjôAh²hh³j Bh´MÃubah}”(h]”jïAah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j Bh´MÃhjñAh²hubj )�”}”(hhh]”hÎ)�”}”(hŒget the maximum SPI bus speed”h]”hŒget the maximum SPI bus speed”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MÃhjCh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjñAh²hh³j Bh´MÃubeh}”(h]”h ]”(j Œfunction”e•.h"]”h$]”h&]”j" j j# j/Cj$ j/Cj% ‰j& ‰j' ‰uh1j˜ h²hhjZh³Nh´Nubj) )�”}”(hXU**Parameters** ``struct spi_device *spi`` SPI device ``size_t len`` The transfer buffer length. **Description** Many controllers have a max speed of 10MHz, but can be pushed way beyond that. Increase reliability by running pixel data at max speed and the rest at 10MHz, preventing transfer glitches from messing up the init settings.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj9Ch]”hŒ Parameters”…”�”}”(hj;Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj7Cubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MÇhj3Cubjw )�”}”(hhh]”(j| )�”}”(hŒ&``struct spi_device *spi`` SPI device ”h]”(j‚ )�”}”(hŒ``struct spi_device *spi``”h]”jˆ )�”}”(hjXCh]”hŒstruct spi_device *spi”…”�”}”(hjZCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjVCubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MÄhjRCubjž )�”}”(hhh]”hÎ)�”}”(hŒ SPI device”h]”hŒ SPI device”…”�”}”(hjqCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jmCh´MÄhjnCubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjRCubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jmCh´MÄhjOCubj| )�”}”(hŒ+``size_t len`` The transfer buffer length. ”h]”(j‚ )�”}”(hŒ``size_t len``”h]”jˆ )�”}”(hj‘Ch]”hŒ size_t len”…”�”}”(hj“Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj�Cubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MÅhj‹Cubjž )�”}”(hhh]”hÎ)�”}”(hŒThe transfer buffer length.”h]”hŒThe transfer buffer length.”…”�”}”(hjªCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¦Ch´MÅhj§Cubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj‹Cubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¦Ch´MÅhjOCubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj3CubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjÌCh]”hŒ Description”…”�”}”(hjÎCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÊCubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MÇhj3CubhÎ)�”}”(hŒÝMany controllers have a max speed of 10MHz, but can be pushed way beyond that. Increase reliability by running pixel data at max speed and the rest at 10MHz, preventing transfer glitches from messing up the init settings.”h]”hŒÝMany controllers have a max speed of 10MHz, but can be pushed way beyond that. Increase reliability by running pixel data at max speed and the rest at 10MHz, preventing transfer glitches from messing up the init settings.”…”�”}”(hjâCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MÆhj3Cubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjZh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œmipi_dbi_spi_init (C function)”Œc.mipi_dbi_spi_init”hNt”auh1j† hjZh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒZint mipi_dbi_spi_init (struct spi_device *spi, struct mipi_dbi *dbi, struct gpio_desc *dc)”h]”j¤ )�”}”(hŒYint mipi_dbi_spi_init(struct spi_device *spi, struct mipi_dbi *dbi, struct gpio_desc *dc)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj Dh²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MLubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Dh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj Dh²hh³jDh´MLubjÍ )�”}”(hŒmipi_dbi_spi_init”h]”jÓ )�”}”(hŒmipi_dbi_spi_init”h]”hŒmipi_dbi_spi_init”…”�”}”(hj2Dh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj.Dubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj Dh²hh³jDh´MLubjÞ)�”}”(hŒD(struct spi_device *spi, struct mipi_dbi *dbi, struct gpio_desc *dc)”h]”(jä)�”}”(hŒstruct spi_device *spi”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjNDh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjJDubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[Dh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjJDubh)�”}”(hhh]”jÓ )�”}”(hŒ spi_device”h]”hŒ spi_device”…”�”}”(hjlDh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjiDubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jnDŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj4DsbŒc.mipi_dbi_spi_init”†”asbuh1hhjJDubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒDh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjJDubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjšDh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjJDubjÓ )�”}”(hŒspi”h]”hŒspi”…”�”}”(hj§Dh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjJDubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjFDubjä)�”}”(hŒstruct mipi_dbi *dbi”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjÀDh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj¼Dubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍDh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¼Dubh)�”}”(hhh]”jÓ )�”}”(hŒmipi_dbi”h]”hŒmipi_dbi”…”�”}”(hjÞDh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÛDubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jàDŒmodname”NŒ classname”Njé jì )�”}”jï ]”jˆDŒc.mipi_dbi_spi_init”†”asbuh1hhj¼Dubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjüDh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¼Dubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj Eh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¼DubjÓ )�”}”(hŒdbi”h]”hŒdbi”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¼Dubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjFDubjä)�”}”(hŒstruct gpio_desc *dc”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj0Eh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj,Eubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=Eh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj,Eubh)�”}”(hhh]”jÓ )�”}”(hŒ gpio_desc”h]”hŒ gpio_desc”…”�”}”(hjNEh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjKEubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jPEŒmodname”NŒ classname”Njé jì )�”}”jï ]”jˆDŒc.mipi_dbi_spi_init”†”asbuh1hhj,Eubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjlEh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj,Eubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjzEh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj,EubjÓ )�”}”(hŒdc”h]”hŒdc”…”�”}”(hj‡Eh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj,Eubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjFDubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj Dh²hh³jDh´MLubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj Dh²hh³jDh´MLubah}”(h]”jDah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jDh´MLhjDh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ!Initialize MIPI DBI SPI interface”h]”hŒ!Initialize MIPI DBI SPI interface”…”�”}”(hj±Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MLhj®Eh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjDh²hh³jDh´MLubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jÉEj$ jÉEj% ‰j& ‰j' ‰uh1j˜ h²hhjZh³Nh´Nubj) )�”}”(hXþ**Parameters** ``struct spi_device *spi`` SPI device ``struct mipi_dbi *dbi`` MIPI DBI structure to initialize ``struct gpio_desc *dc`` D/C gpio (optional) **Description** This function sets :c:type:`mipi_dbi->command `, enables :c:type:`mipi_dbi->read_commands ` for the usual read commands. It should be followed by a call to mipi_dbi_dev_init() or a driver-specific init. If **dc** is set, a Type C Option 3 interface is assumed, if not Type C Option 1. If the command is ``MIPI_DCS_WRITE_MEMORY_START`` and the pixel format is RGB565, endianness has to be taken into account. The MIPI DBI serial interface is big endian and framebuffers are assumed stored in memory as little endian (``DRM_FORMAT_BIG_ENDIAN`` is not supported). This is how endianness is handled: Option 1 (D/C as a bit): The buffer is sent on the wire byte by byte so the 16-bit buffer is byteswapped before transfer. Option 3 (D/C as a gpio): If the SPI controller supports 16 bits per word the buffer can be sent as-is. If not the caller is responsible for swapping the bytes before calling mipi_dbi_command_buf() and the buffer is sent 8 bpw. This handling is optimised for ``DRM_FORMAT_RGB565`` framebuffers. If the interface is Option 1 and the SPI controller doesn't support 9 bits per word, the buffer is sent as 9x 8-bit words, padded with MIPI DCS no-op commands if necessary. **Return** Zero on success, negative error code on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjÓEh]”hŒ Parameters”…”�”}”(hjÕEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÑEubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MPhjÍEubjw )�”}”(hhh]”(j| )�”}”(hŒ&``struct spi_device *spi`` SPI device ”h]”(j‚ )�”}”(hŒ``struct spi_device *spi``”h]”jˆ )�”}”(hjòEh]”hŒstruct spi_device *spi”…”�”}”(hjôEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjðEubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MMhjìEubjž )�”}”(hhh]”hÎ)�”}”(hŒ SPI device”h]”hŒ SPI device”…”�”}”(hj Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jFh´MMhjFubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjìEubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jFh´MMhjéEubj| )�”}”(hŒ:``struct mipi_dbi *dbi`` MIPI DBI structure to initialize ”h]”(j‚ )�”}”(hŒ``struct mipi_dbi *dbi``”h]”jˆ )�”}”(hj+Fh]”hŒstruct mipi_dbi *dbi”…”�”}”(hj-Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj)Fubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MNhj%Fubjž )�”}”(hhh]”hÎ)�”}”(hŒ MIPI DBI structure to initialize”h]”hŒ MIPI DBI structure to initialize”…”�”}”(hjDFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j@Fh´MNhjAFubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj%Fubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j@Fh´MNhjéEubj| )�”}”(hŒ-``struct gpio_desc *dc`` D/C gpio (optional) ”h]”(j‚ )�”}”(hŒ``struct gpio_desc *dc``”h]”jˆ )�”}”(hjdFh]”hŒstruct gpio_desc *dc”…”�”}”(hjfFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjbFubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MOhj^Fubjž )�”}”(hhh]”hÎ)�”}”(hŒD/C gpio (optional)”h]”hŒD/C gpio (optional)”…”�”}”(hj}Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jyFh´MOhjzFubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj^Fubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jyFh´MOhjéEubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÍEubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjŸFh]”hŒ Description”…”�”}”(hj¡Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj�Fubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MQhjÍEubhÎ)�”}”(hŒÞThis function sets :c:type:`mipi_dbi->command `, enables :c:type:`mipi_dbi->read_commands ` for the usual read commands. It should be followed by a call to mipi_dbi_dev_init() or a driver-specific init.”h]”(hŒThis function sets ”…”�”}”(hjµFh²hh³Nh´Nubh)�”}”(hŒ&:c:type:`mipi_dbi->command `”h]”jˆ )�”}”(hj¿Fh]”hŒmipi_dbi->command”…”�”}”(hjÁFh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj½Fubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œmipi_dbi”uh1hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MPhjµFubhŒ , enables ”…”�”}”(hjµFh²hh³Nh´Nubh)�”}”(hŒ,:c:type:`mipi_dbi->read_commands `”h]”jˆ )�”}”(hjãFh]”hŒmipi_dbi->read_commands”…”�”}”(hjåFh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjáFubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œmipi_dbi”uh1hh³jÜFh´MPhjµFubhŒo for the usual read commands. It should be followed by a call to mipi_dbi_dev_init() or a driver-specific init.”…”�”}”(hjµFh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÜFh´MPhjÍEubhÎ)�”}”(hŒQIf **dc** is set, a Type C Option 3 interface is assumed, if not Type C Option 1.”h]”(hŒIf ”…”�”}”(hj Gh²hh³Nh´Nubj3 )�”}”(hŒ**dc**”h]”hŒdc”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj GubhŒH is set, a Type C Option 3 interface is assumed, if not Type C Option 1.”…”�”}”(hj Gh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MThjÍEubhÎ)�”}”(hXIf the command is ``MIPI_DCS_WRITE_MEMORY_START`` and the pixel format is RGB565, endianness has to be taken into account. The MIPI DBI serial interface is big endian and framebuffers are assumed stored in memory as little endian (``DRM_FORMAT_BIG_ENDIAN`` is not supported).”h]”(hŒIf the command is ”…”�”}”(hj+Gh²hh³Nh´Nubjˆ )�”}”(hŒ``MIPI_DCS_WRITE_MEMORY_START``”h]”hŒMIPI_DCS_WRITE_MEMORY_START”…”�”}”(hj3Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj+GubhŒ¶ and the pixel format is RGB565, endianness has to be taken into account. The MIPI DBI serial interface is big endian and framebuffers are assumed stored in memory as little endian (”…”�”}”(hj+Gh²hh³Nh´Nubjˆ )�”}”(hŒ``DRM_FORMAT_BIG_ENDIAN``”h]”hŒDRM_FORMAT_BIG_ENDIAN”…”�”}”(hjEGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj+GubhŒ is not supported).”…”�”}”(hj+Gh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MWhjÍEubhÎ)�”}”(hŒ"This is how endianness is handled:”h]”hŒ"This is how endianness is handled:”…”�”}”(hj^Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´M[hjÍEubjw )�”}”(hhh]”(j| )�”}”(hŒzOption 1 (D/C as a bit): The buffer is sent on the wire byte by byte so the 16-bit buffer is byteswapped before transfer. ”h]”(j‚ )�”}”(hŒ\Option 1 (D/C as a bit): The buffer is sent on the wire byte by byte so the 16-bit buffer is”h]”hŒ\Option 1 (D/C as a bit): The buffer is sent on the wire byte by byte so the 16-bit buffer is”…”�”}”(hjtGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´M^hjpGubjž )�”}”(hhh]”hÎ)�”}”(hŒbyteswapped before transfer.”h]”hŒbyteswapped before transfer.”…”�”}”(hj†Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j‚Gh´M^hjƒGubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjpGubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j‚Gh´M^hjmGubj| )�”}”(hŒäOption 3 (D/C as a gpio): If the SPI controller supports 16 bits per word the buffer can be sent as-is. If not the caller is responsible for swapping the bytes before calling mipi_dbi_command_buf() and the buffer is sent 8 bpw. ”h]”(j‚ )�”}”(hŒ[Option 3 (D/C as a gpio): If the SPI controller supports 16 bits per word the buffer can be”h]”hŒ[Option 3 (D/C as a gpio): If the SPI controller supports 16 bits per word the buffer can be”…”�”}”(hj¤Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´Mbhj Gubjž )�”}”(hhh]”hÎ)�”}”(hŒ‡sent as-is. If not the caller is responsible for swapping the bytes before calling mipi_dbi_command_buf() and the buffer is sent 8 bpw.”h]”hŒ‡sent as-is. If not the caller is responsible for swapping the bytes before calling mipi_dbi_command_buf() and the buffer is sent 8 bpw.”…”�”}”(hj¶Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´Mahj³Gubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj Gubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j²Gh´MbhjmGubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÍEubhÎ)�”}”(hŒBThis handling is optimised for ``DRM_FORMAT_RGB565`` framebuffers.”h]”(hŒThis handling is optimised for ”…”�”}”(hj×Gh²hh³Nh´Nubjˆ )�”}”(hŒ``DRM_FORMAT_RGB565``”h]”hŒDRM_FORMAT_RGB565”…”�”}”(hjßGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj×GubhŒ framebuffers.”…”�”}”(hj×Gh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MdhjÍEubhÎ)�”}”(hŒ¬If the interface is Option 1 and the SPI controller doesn't support 9 bits per word, the buffer is sent as 9x 8-bit words, padded with MIPI DCS no-op commands if necessary.”h]”hŒ®If the interface is Option 1 and the SPI controller doesn’t support 9 bits per word, the buffer is sent as 9x 8-bit words, padded with MIPI DCS no-op commands if necessary.”…”�”}”(hjøGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MfhjÍEubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj Hh]”hŒReturn”…”�”}”(hj Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjHubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MihjÍEubhÎ)�”}”(hŒ0Zero on success, negative error code on failure.”h]”hŒ0Zero on success, negative error code on failure.”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MjhjÍEubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjZh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ"mipi_dbi_spi_transfer (C function)”Œc.mipi_dbi_spi_transfer”hNt”auh1j† hjZh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒeint mipi_dbi_spi_transfer (struct spi_device *spi, u32 speed_hz, u8 bpw, const void *buf, size_t len)”h]”j¤ )�”}”(hŒdint mipi_dbi_spi_transfer(struct spi_device *spi, u32 speed_hz, u8 bpw, const void *buf, size_t len)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjNHh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjJHh²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´M¡ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]Hh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjJHh²hh³j\Hh´M¡ubjÍ )�”}”(hŒmipi_dbi_spi_transfer”h]”jÓ )�”}”(hŒmipi_dbi_spi_transfer”h]”hŒmipi_dbi_spi_transfer”…”�”}”(hjoHh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjkHubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjJHh²hh³j\Hh´M¡ubjÞ)�”}”(hŒK(struct spi_device *spi, u32 speed_hz, u8 bpw, const void *buf, size_t len)”h]”(jä)�”}”(hŒstruct spi_device *spi”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj‹Hh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj‡Hubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜Hh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj‡Hubh)�”}”(hhh]”jÓ )�”}”(hŒ spi_device”h]”hŒ spi_device”…”�”}”(hj©Hh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¦Hubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j«HŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjqHsbŒc.mipi_dbi_spi_transfer”†”asbuh1hhj‡Hubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉHh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj‡Hubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj×Hh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‡HubjÓ )�”}”(hŒspi”h]”hŒspi”…”�”}”(hjäHh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj‡Hubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjƒHubjä)�”}”(hŒ u32 speed_hz”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu32”h]”hŒu32”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjýHubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jIŒmodname”NŒ classname”Njé jì )�”}”jï ]”jÅHŒc.mipi_dbi_spi_transfer”†”asbuh1hhjùHubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjùHubjÓ )�”}”(hŒspeed_hz”h]”hŒspeed_hz”…”�”}”(hj,Ih²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjùHubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjƒHubjä)�”}”(hŒu8 bpw”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(hjHIh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjEIubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jJIŒmodname”NŒ classname”Njé jì )�”}”jï ]”jÅHŒc.mipi_dbi_spi_transfer”†”asbuh1hhjAIubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfIh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjAIubjÓ )�”}”(hŒbpw”h]”hŒbpw”…”�”}”(hjtIh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjAIubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjƒHubjä)�”}”(hŒconst void *buf”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hj�Ih²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj‰Iubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjšIh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj‰Iubj¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¨Ih²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj‰Iubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶Ih²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj‰Iubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÄIh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‰IubjÓ )�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hjÑIh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj‰Iubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjƒHubjä)�”}”(hŒ size_t len”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjíIh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjêIubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jïIŒmodname”NŒ classname”Njé jì )�”}”jï ]”jÅHŒc.mipi_dbi_spi_transfer”†”asbuh1hhjæIubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Jh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjæIubjÓ )�”}”(hŒlen”h]”hŒlen”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjæIubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjƒHubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjJHh²hh³j\Hh´M¡ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjFHh²hh³j\Hh´M¡ubah}”(h]”jAHah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j\Hh´M¡hjCHh²hubj )�”}”(hhh]”hÎ)�”}”(hŒSPI transfer helper”h]”hŒSPI transfer helper”…”�”}”(hjCJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´M¡hj@Jh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjCHh²hh³j\Hh´M¡ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j[Jj$ j[Jj% ‰j& ‰j' ‰uh1j˜ h²hhjZh³Nh´Nubj) )�”}”(hX¼**Parameters** ``struct spi_device *spi`` SPI device ``u32 speed_hz`` Override speed (optional) ``u8 bpw`` Bits per word ``const void *buf`` Buffer to transfer ``size_t len`` Buffer length **Description** This SPI transfer helper breaks up the transfer of **buf** into chunks which the SPI controller driver can handle. The SPI bus must be locked when calling this. **Return** Zero on success, negative error code on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjeJh]”hŒ Parameters”…”�”}”(hjgJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjcJubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´M¥hj_Jubjw )�”}”(hhh]”(j| )�”}”(hŒ&``struct spi_device *spi`` SPI device ”h]”(j‚ )�”}”(hŒ``struct spi_device *spi``”h]”jˆ )�”}”(hj„Jh]”hŒstruct spi_device *spi”…”�”}”(hj†Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj‚Jubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´M¢hj~Jubjž )�”}”(hhh]”hÎ)�”}”(hŒ SPI device”h]”hŒ SPI device”…”�”}”(hj�Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j™Jh´M¢hjšJubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj~Jubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j™Jh´M¢hj{Jubj| )�”}”(hŒ+``u32 speed_hz`` Override speed (optional) ”h]”(j‚ )�”}”(hŒ``u32 speed_hz``”h]”jˆ )�”}”(hj½Jh]”hŒ u32 speed_hz”…”�”}”(hj¿Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj»Jubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´M£hj·Jubjž )�”}”(hhh]”hÎ)�”}”(hŒOverride speed (optional)”h]”hŒOverride speed (optional)”…”�”}”(hjÖJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÒJh´M£hjÓJubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj·Jubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÒJh´M£hj{Jubj| )�”}”(hŒ``u8 bpw`` Bits per word ”h]”(j‚ )�”}”(hŒ ``u8 bpw``”h]”jˆ )�”}”(hjöJh]”hŒu8 bpw”…”�”}”(hjøJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjôJubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´M¤hjðJubjž )�”}”(hhh]”hÎ)�”}”(hŒ Bits per word”h]”hŒ Bits per word”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j Kh´M¤hj Kubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjðJubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j Kh´M¤hj{Jubj| )�”}”(hŒ'``const void *buf`` Buffer to transfer ”h]”(j‚ )�”}”(hŒ``const void *buf``”h]”jˆ )�”}”(hj/Kh]”hŒconst void *buf”…”�”}”(hj1Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj-Kubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´M¥hj)Kubjž )�”}”(hhh]”hÎ)�”}”(hŒBuffer to transfer”h]”hŒBuffer to transfer”…”�”}”(hjHKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jDKh´M¥hjEKubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj)Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jDKh´M¥hj{Jubj| )�”}”(hŒ``size_t len`` Buffer length ”h]”(j‚ )�”}”(hŒ``size_t len``”h]”jˆ )�”}”(hjhKh]”hŒ size_t len”…”�”}”(hjjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjfKubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´M¦hjbKubjž )�”}”(hhh]”hÎ)�”}”(hŒ Buffer length”h]”hŒ Buffer length”…”�”}”(hj�Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j}Kh´M¦hj~Kubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjbKubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j}Kh´M¦hj{Jubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj_JubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj£Kh]”hŒ Description”…”�”}”(hj¥Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¡Kubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´M¨hj_JubhÎ)�”}”(hŒ This SPI transfer helper breaks up the transfer of **buf** into chunks which the SPI controller driver can handle. The SPI bus must be locked when calling this.”h]”(hŒ3This SPI transfer helper breaks up the transfer of ”…”�”}”(hj¹Kh²hh³Nh´Nubj3 )�”}”(hŒ**buf**”h]”hŒbuf”…”�”}”(hjÁKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¹KubhŒf into chunks which the SPI controller driver can handle. The SPI bus must be locked when calling this.”…”�”}”(hj¹Kh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´M§hj_JubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjÜKh]”hŒReturn”…”�”}”(hjÞKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÚKubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´M«hj_JubhÎ)�”}”(hŒ0Zero on success, negative error code on failure.”h]”hŒ0Zero on success, negative error code on failure.”…”�”}”(hjòKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´M¬hj_Jubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjZh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ"mipi_dbi_debugfs_init (C function)”Œc.mipi_dbi_debugfs_init”hNt”auh1j† hjZh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ4void mipi_dbi_debugfs_init (struct drm_minor *minor)”h]”j¤ )�”}”(hŒ3void mipi_dbi_debugfs_init(struct drm_minor *minor)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj!Lh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjLh²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MRubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0Lh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjLh²hh³j/Lh´MRubjÍ )�”}”(hŒmipi_dbi_debugfs_init”h]”jÓ )�”}”(hŒmipi_dbi_debugfs_init”h]”hŒmipi_dbi_debugfs_init”…”�”}”(hjBLh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj>Lubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjLh²hh³j/Lh´MRubjÞ)�”}”(hŒ(struct drm_minor *minor)”h]”jä)�”}”(hŒstruct drm_minor *minor”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj^Lh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjZLubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjkLh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjZLubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_minor”h]”hŒ drm_minor”…”�”}”(hj|Lh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjyLubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j~LŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjDLsbŒc.mipi_dbi_debugfs_init”†”asbuh1hhjZLubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœLh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjZLubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjªLh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjZLubjÓ )�”}”(hŒminor”h]”hŒminor”…”�”}”(hj·Lh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjZLubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjVLubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjLh²hh³j/Lh´MRubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjLh²hh³j/Lh´MRubah}”(h]”jLah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j/Lh´MRhjLh²hubj )�”}”(hhh]”hÎ)�”}”(hŒCreate debugfs entries”h]”hŒCreate debugfs entries”…”�”}”(hjáLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MRhjÞLh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjLh²hh³j/Lh´MRubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jùLj$ jùLj% ‰j& ‰j' ‰uh1j˜ h²hhjZh³Nh´Nubj) )�”}”(hX**Parameters** ``struct drm_minor *minor`` DRM minor **Description** This function creates a 'command' debugfs file for sending commands to the controller or getting the read command values. Drivers can use this as their :c:type:`drm_driver->debugfs_init ` callback.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjMh]”hŒ Parameters”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjMubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MVhjýLubjw )�”}”(hhh]”j| )�”}”(hŒ&``struct drm_minor *minor`` DRM minor ”h]”(j‚ )�”}”(hŒ``struct drm_minor *minor``”h]”jˆ )�”}”(hj"Mh]”hŒstruct drm_minor *minor”…”�”}”(hj$Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj Mubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MShjMubjž )�”}”(hhh]”hÎ)�”}”(hŒ DRM minor”h]”hŒ DRM minor”…”�”}”(hj;Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j7Mh´MShj8Mubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjMubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j7Mh´MShjMubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjýLubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj]Mh]”hŒ Description”…”�”}”(hj_Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj[Mubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MUhjýLubhÎ)�”}”(hŒÑThis function creates a 'command' debugfs file for sending commands to the controller or getting the read command values. Drivers can use this as their :c:type:`drm_driver->debugfs_init ` callback.”h]”(hŒœThis function creates a ‘command’ debugfs file for sending commands to the controller or getting the read command values. Drivers can use this as their ”…”�”}”(hjsMh²hh³Nh´Nubh)�”}”(hŒ/:c:type:`drm_driver->debugfs_init `”h]”jˆ )�”}”(hj}Mh]”hŒdrm_driver->debugfs_init”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj{Mubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ drm_driver”uh1hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:344: ./drivers/gpu/drm/drm_mipi_dbi.c”h´MThjsMubhŒ callback.”…”�”}”(hjsMh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jšMh´MThjýLubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjZh²hh³Nh´Nubeh}”(h]”jfah ]”h"]”Œ#mipi dbi helper functions reference”ah$]”h&]”uh1hµhh·h²hh³hÌh´MPubh¶)�”}”(hhh]”(h»)�”}”(hŒ#MIPI DSI Helper Functions Reference”h]”hŒ#MIPI DSI Helper Functions Reference”…”�”}”(hj¶Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÊj‚uh1hºhj³Mh²hh³hÌh´M\ubhÎ)�”}”(hŒXThese functions contain some common logic and helpers to deal with MIPI DSI peripherals.”h]”hŒXThese functions contain some common logic and helpers to deal with MIPI DSI peripherals.”…”�”}”(hjÄMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:350: ./drivers/gpu/drm/drm_mipi_dsi.c”h´K-hj³Mh²hubhÎ)�”}”(hŒoHelpers are provided for a number of standard MIPI DSI command as well as a subset of the MIPI DCS command set.”h]”hŒoHelpers are provided for a number of standard MIPI DSI command as well as a subset of the MIPI DCS command set.”…”�”}”(hjÓMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:350: ./drivers/gpu/drm/drm_mipi_dsi.c”h´K0hj³Mh²hubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œmipi_dsi_msg (C struct)”Œc.mipi_dsi_msg”hNt”auh1j† hj³Mh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ mipi_dsi_msg”h]”j¤ )�”}”(hŒstruct mipi_dsi_msg”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjûMh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj÷Mh²hh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´Kubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Nh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj÷Mh²hh³jNh´KubjÍ )�”}”(hŒ mipi_dsi_msg”h]”jÓ )�”}”(hjõMh]”hŒ mipi_dsi_msg”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjNubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj÷Mh²hh³jNh´Kubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjóMh²hh³jNh´Kubah}”(h]”jîMah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jNh´KhjðMh²hubj )�”}”(hhh]”hÎ)�”}”(hŒread/write DSI buffer”h]”hŒread/write DSI buffer”…”�”}”(hj=Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´Khj:Nh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjðMh²hh³jNh´Kubeh}”(h]”h ]”(j Œstruct”eh"]”h$]”h&]”j" j j# jUNj$ jUNj% ‰j& ‰j' ‰uh1j˜ h²hhj³Mh³Nh´Nubj) )�”}”(hXÌ**Definition**:: struct mipi_dsi_msg { u8 channel; u8 type; u16 flags; size_t tx_len; const void *tx_buf; size_t rx_len; void *rx_buf; }; **Members** ``channel`` virtual channel id ``type`` payload data type ``flags`` flags controlling this message transmission ``tx_len`` length of **tx_buf** ``tx_buf`` data to be written ``rx_len`` length of **rx_buf** ``rx_buf`` data to be read, or NULL”h]”(hÎ)�”}”(hŒ**Definition**::”h]”(j3 )�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjaNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj]NubhŒ:”…”�”}”(hj]Nh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´KhjYNubjN )�”}”(hŒ”struct mipi_dsi_msg { u8 channel; u8 type; u16 flags; size_t tx_len; const void *tx_buf; size_t rx_len; void *rx_buf; };”h]”hŒ”struct mipi_dsi_msg { u8 channel; u8 type; u16 flags; size_t tx_len; const void *tx_buf; size_t rx_len; void *rx_buf; };”…”�”}”hjzNsbah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jM h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´KhjYNubhÎ)�”}”(hŒ **Members**”h]”j3 )�”}”(hj‹Nh]”hŒMembers”…”�”}”(hj�Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj‰Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´K)hjYNubjw )�”}”(hhh]”(j| )�”}”(hŒ``channel`` virtual channel id ”h]”(j‚ )�”}”(hŒ ``channel``”h]”jˆ )�”}”(hjªNh]”hŒchannel”…”�”}”(hj¬Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¨Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´Khj¤Nubjž )�”}”(hhh]”hÎ)�”}”(hŒvirtual channel id”h]”hŒvirtual channel id”…”�”}”(hjÃNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¿Nh´KhjÀNubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¤Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¿Nh´Khj¡Nubj| )�”}”(hŒ``type`` payload data type ”h]”(j‚ )�”}”(hŒ``type``”h]”jˆ )�”}”(hjãNh]”hŒtype”…”�”}”(hjåNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjáNubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´KhjÝNubjž )�”}”(hhh]”hÎ)�”}”(hŒpayload data type”h]”hŒpayload data type”…”�”}”(hjüNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jøNh´KhjùNubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÝNubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jøNh´Khj¡Nubj| )�”}”(hŒ6``flags`` flags controlling this message transmission ”h]”(j‚ )�”}”(hŒ ``flags``”h]”jˆ )�”}”(hjOh]”hŒflags”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjOubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´KhjOubjž )�”}”(hhh]”hÎ)�”}”(hŒ+flags controlling this message transmission”h]”hŒ+flags controlling this message transmission”…”�”}”(hj5Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j1Oh´Khj2Oubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjOubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j1Oh´Khj¡Nubj| )�”}”(hŒ ``tx_len`` length of **tx_buf** ”h]”(j‚ )�”}”(hŒ ``tx_len``”h]”jˆ )�”}”(hjUOh]”hŒtx_len”…”�”}”(hjWOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjSOubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´KhjOOubjž )�”}”(hhh]”hÎ)�”}”(hŒlength of **tx_buf**”h]”(hŒ length of ”…”�”}”(hjnOh²hh³Nh´Nubj3 )�”}”(hŒ **tx_buf**”h]”hŒtx_buf”…”�”}”(hjvOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjnOubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jjOh´KhjkOubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjOOubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jjOh´Khj¡Nubj| )�”}”(hŒ``tx_buf`` data to be written ”h]”(j‚ )�”}”(hŒ ``tx_buf``”h]”jˆ )�”}”(hjœOh]”hŒtx_buf”…”�”}”(hjžOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjšOubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´Khj–Oubjž )�”}”(hhh]”hÎ)�”}”(hŒdata to be written”h]”hŒdata to be written”…”�”}”(hjµOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j±Oh´Khj²Oubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj–Oubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j±Oh´Khj¡Nubj| )�”}”(hŒ ``rx_len`` length of **rx_buf** ”h]”(j‚ )�”}”(hŒ ``rx_len``”h]”jˆ )�”}”(hjÕOh]”hŒrx_len”…”�”}”(hj×Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÓOubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´K hjÏOubjž )�”}”(hhh]”hÎ)�”}”(hŒlength of **rx_buf**”h]”(hŒ length of ”…”�”}”(hjîOh²hh³Nh´Nubj3 )�”}”(hŒ **rx_buf**”h]”hŒrx_buf”…”�”}”(hjöOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjîOubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jêOh´K hjëOubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÏOubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jêOh´K hj¡Nubj| )�”}”(hŒ#``rx_buf`` data to be read, or NULL”h]”(j‚ )�”}”(hŒ ``rx_buf``”h]”jˆ )�”}”(hjPh]”hŒrx_buf”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjPubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´K hjPubjž )�”}”(hhh]”hÎ)�”}”(hŒdata to be read, or NULL”h]”hŒdata to be read, or NULL”…”�”}”(hj5Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´K!hj2Pubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjPubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j1Ph´K hj¡Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjYNubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj³Mh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œmipi_dsi_packet (C struct)”Œc.mipi_dsi_packet”hNt”auh1j† hj³Mh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒmipi_dsi_packet”h]”j¤ )�”}”(hŒstruct mipi_dsi_packet”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjvPh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjrPh²hh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´K'ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„Ph²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjrPh²hh³jƒPh´K'ubjÍ )�”}”(hŒmipi_dsi_packet”h]”jÓ )�”}”(hjpPh]”hŒmipi_dsi_packet”…”�”}”(hj–Ph²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj’Pubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjrPh²hh³jƒPh´K'ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjnPh²hh³jƒPh´K'ubah}”(h]”jiPah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jƒPh´K'hjkPh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ/represents a MIPI DSI packet in protocol format”h]”hŒ/represents a MIPI DSI packet in protocol format”…”�”}”(hj¸Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´K2hjµPh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjkPh²hh³jƒPh´K'ubeh}”(h]”h ]”(j Œstruct”eh"]”h$]”h&]”j" j j# jÐPj$ jÐPj% ‰j& ‰j' ‰uh1j˜ h²hhj³Mh³Nh´Nubj) )�”}”(hX£**Definition**:: struct mipi_dsi_packet { size_t size; u8 header[4]; size_t payload_length; const u8 *payload; }; **Members** ``size`` size (in bytes) of the packet ``header`` the four bytes that make up the header (Data ID, Word Count or Packet Data, and ECC) ``payload_length`` number of bytes in the payload ``payload`` a pointer to a buffer containing the payload, if any”h]”(hÎ)�”}”(hŒ**Definition**::”h]”(j3 )�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjÜPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjØPubhŒ:”…”�”}”(hjØPh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´K6hjÔPubjN )�”}”(hŒpstruct mipi_dsi_packet { size_t size; u8 header[4]; size_t payload_length; const u8 *payload; };”h]”hŒpstruct mipi_dsi_packet { size_t size; u8 header[4]; size_t payload_length; const u8 *payload; };”…”�”}”hjõPsbah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jM h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´K8hjÔPubhÎ)�”}”(hŒ **Members**”h]”j3 )�”}”(hjQh]”hŒMembers”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjQubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´K?hjÔPubjw )�”}”(hhh]”(j| )�”}”(hŒ'``size`` size (in bytes) of the packet ”h]”(j‚ )�”}”(hŒ``size``”h]”jˆ )�”}”(hj%Qh]”hŒsize”…”�”}”(hj'Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj#Qubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´K4hjQubjž )�”}”(hhh]”hÎ)�”}”(hŒsize (in bytes) of the packet”h]”hŒsize (in bytes) of the packet”…”�”}”(hj>Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j:Qh´K4hj;Qubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjQubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j:Qh´K4hjQubj| )�”}”(hŒ```header`` the four bytes that make up the header (Data ID, Word Count or Packet Data, and ECC) ”h]”(j‚ )�”}”(hŒ ``header``”h]”jˆ )�”}”(hj^Qh]”hŒheader”…”�”}”(hj`Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj\Qubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´K6hjXQubjž )�”}”(hhh]”hÎ)�”}”(hŒTthe four bytes that make up the header (Data ID, Word Count or Packet Data, and ECC)”h]”hŒTthe four bytes that make up the header (Data ID, Word Count or Packet Data, and ECC)”…”�”}”(hjwQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´K5hjtQubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjXQubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jsQh´K6hjQubj| )�”}”(hŒ2``payload_length`` number of bytes in the payload ”h]”(j‚ )�”}”(hŒ``payload_length``”h]”jˆ )�”}”(hj˜Qh]”hŒpayload_length”…”�”}”(hjšQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj–Qubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´K7hj’Qubjž )�”}”(hhh]”hÎ)�”}”(hŒnumber of bytes in the payload”h]”hŒnumber of bytes in the payload”…”�”}”(hj±Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j­Qh´K7hj®Qubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj’Qubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j­Qh´K7hjQubj| )�”}”(hŒ@``payload`` a pointer to a buffer containing the payload, if any”h]”(j‚ )�”}”(hŒ ``payload``”h]”jˆ )�”}”(hjÑQh]”hŒpayload”…”�”}”(hjÓQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÏQubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´K7hjËQubjž )�”}”(hhh]”hÎ)�”}”(hŒ4a pointer to a buffer containing the payload, if any”h]”hŒ4a pointer to a buffer containing the payload, if any”…”�”}”(hjêQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´K8hjçQubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjËQubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jæQh´K7hjQubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÔPubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj³Mh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œmipi_dsi_host_ops (C struct)”Œc.mipi_dsi_host_ops”hNt”auh1j† hj³Mh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒmipi_dsi_host_ops”h]”j¤ )�”}”(hŒstruct mipi_dsi_host_ops”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj+Rh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj'Rh²hh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´K>ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9Rh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj'Rh²hh³j8Rh´K>ubjÍ )�”}”(hŒmipi_dsi_host_ops”h]”jÓ )�”}”(hj%Rh]”hŒmipi_dsi_host_ops”…”�”}”(hjKRh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjGRubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj'Rh²hh³j8Rh´K>ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj#Rh²hh³j8Rh´K>ubah}”(h]”jRah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j8Rh´K>hj Rh²hubj )�”}”(hhh]”hÎ)�”}”(hŒDSI bus operations”h]”hŒDSI bus operations”…”�”}”(hjmRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´KDhjjRh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj Rh²hh³j8Rh´K>ubeh}”(h]”h ]”(j Œstruct”eh"]”h$]”h&]”j" j j# j…Rj$ j…Rj% ‰j& ‰j' ‰uh1j˜ h²hhj³Mh³Nh´Nubj) )�”}”(hX³**Definition**:: struct mipi_dsi_host_ops { int (*attach)(struct mipi_dsi_host *host, struct mipi_dsi_device *dsi); int (*detach)(struct mipi_dsi_host *host, struct mipi_dsi_device *dsi); ssize_t (*transfer)(struct mipi_dsi_host *host, const struct mipi_dsi_msg *msg); }; **Members** ``attach`` attach DSI device to DSI host ``detach`` detach DSI device from DSI host ``transfer`` transmit a DSI packet”h]”(hÎ)�”}”(hŒ**Definition**::”h]”(j3 )�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj‘Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj�RubhŒ:”…”�”}”(hj�Rh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´KHhj‰RubjN )�”}”(hX struct mipi_dsi_host_ops { int (*attach)(struct mipi_dsi_host *host, struct mipi_dsi_device *dsi); int (*detach)(struct mipi_dsi_host *host, struct mipi_dsi_device *dsi); ssize_t (*transfer)(struct mipi_dsi_host *host, const struct mipi_dsi_msg *msg); };”h]”hX struct mipi_dsi_host_ops { int (*attach)(struct mipi_dsi_host *host, struct mipi_dsi_device *dsi); int (*detach)(struct mipi_dsi_host *host, struct mipi_dsi_device *dsi); ssize_t (*transfer)(struct mipi_dsi_host *host, const struct mipi_dsi_msg *msg); };”…”�”}”hjªRsbah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jM h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´KJhj‰RubhÎ)�”}”(hŒ **Members**”h]”j3 )�”}”(hj»Rh]”hŒMembers”…”�”}”(hj½Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¹Rubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´KPhj‰Rubjw )�”}”(hhh]”(j| )�”}”(hŒ)``attach`` attach DSI device to DSI host ”h]”(j‚ )�”}”(hŒ ``attach``”h]”jˆ )�”}”(hjÚRh]”hŒattach”…”�”}”(hjÜRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjØRubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´KFhjÔRubjž )�”}”(hhh]”hÎ)�”}”(hŒattach DSI device to DSI host”h]”hŒattach DSI device to DSI host”…”�”}”(hjóRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jïRh´KFhjðRubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÔRubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jïRh´KFhjÑRubj| )�”}”(hŒ+``detach`` detach DSI device from DSI host ”h]”(j‚ )�”}”(hŒ ``detach``”h]”jˆ )�”}”(hjSh]”hŒdetach”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjSubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´KGhj Subjž )�”}”(hhh]”hÎ)�”}”(hŒdetach DSI device from DSI host”h]”hŒdetach DSI device from DSI host”…”�”}”(hj,Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j(Sh´KGhj)Subah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj Subeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j(Sh´KGhjÑRubj| )�”}”(hŒ"``transfer`` transmit a DSI packet”h]”(j‚ )�”}”(hŒ ``transfer``”h]”jˆ )�”}”(hjLSh]”hŒtransfer”…”�”}”(hjNSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjJSubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´KGhjFSubjž )�”}”(hhh]”hÎ)�”}”(hŒtransmit a DSI packet”h]”hŒtransmit a DSI packet”…”�”}”(hjeSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´KHhjbSubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjFSubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jaSh´KGhjÑRubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj‰Rubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj³Mh²hh³Nh´NubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj�Sh]”hŒ Description”…”�”}”(hj‘Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj�Subah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´KKhj³Mh²hubhÎ)�”}”(hX®DSI packets transmitted by .transfer() are passed in as mipi_dsi_msg structures. This structure contains information about the type of packet being transmitted as well as the transmit and receive buffers. When an error is encountered during transmission, this function will return a negative error code. On success it shall return the number of bytes transmitted for write packets or the number of bytes received for read packets.”h]”hX®DSI packets transmitted by .transfer() are passed in as mipi_dsi_msg structures. This structure contains information about the type of packet being transmitted as well as the transmit and receive buffers. When an error is encountered during transmission, this function will return a negative error code. On success it shall return the number of bytes transmitted for write packets or the number of bytes received for read packets.”…”�”}”(hj¥Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´KHhj³Mh²hubhÎ)�”}”(hŒ¼Note that typically DSI packet transmission is atomic, so the .transfer() function will seldomly return anything other than the number of bytes contained in the transmit buffer on success.”h]”hŒ¼Note that typically DSI packet transmission is atomic, so the .transfer() function will seldomly return anything other than the number of bytes contained in the transmit buffer on success.”…”�”}”(hj´Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´KPhj³Mh²hubhÎ)�”}”(hŒÛAlso note that those callbacks can be called no matter the state the host is in. Drivers that need the underlying device to be powered to perform these operations will first need to make sure it's been properly enabled.”h]”hŒÝAlso note that those callbacks can be called no matter the state the host is in. Drivers that need the underlying device to be powered to perform these operations will first need to make sure it’s been properly enabled.”…”�”}”(hjÃSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´KThj³Mh²hubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œmipi_dsi_host (C struct)”Œc.mipi_dsi_host”hNt”auh1j† hj³Mh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ mipi_dsi_host”h]”j¤ )�”}”(hŒstruct mipi_dsi_host”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjëSh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjçSh²hh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´K\ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùSh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjçSh²hh³jøSh´K\ubjÍ )�”}”(hŒ mipi_dsi_host”h]”jÓ )�”}”(hjåSh]”hŒ mipi_dsi_host”…”�”}”(hj Th²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjTubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjçSh²hh³jøSh´K\ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjãSh²hh³jøSh´K\ubah}”(h]”jÞSah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jøSh´K\hjàSh²hubj )�”}”(hhh]”hÎ)�”}”(hŒDSI host device”h]”hŒDSI host device”…”�”}”(hj-Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´Kdhj*Th²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjàSh²hh³jøSh´K\ubeh}”(h]”h ]”(j Œstruct”eh"]”h$]”h&]”j" j j# jETj$ jETj% ‰j& ‰j' ‰uh1j˜ h²hhj³Mh³Nh´Nubj) )�”}”(hX**Definition**:: struct mipi_dsi_host { struct device *dev; const struct mipi_dsi_host_ops *ops; struct list_head list; }; **Members** ``dev`` driver model device node for this DSI host ``ops`` DSI host operations ``list`` list management”h]”(hÎ)�”}”(hŒ**Definition**::”h]”(j3 )�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjQTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjMTubhŒ:”…”�”}”(hjMTh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´KhhjITubjN )�”}”(hŒustruct mipi_dsi_host { struct device *dev; const struct mipi_dsi_host_ops *ops; struct list_head list; };”h]”hŒustruct mipi_dsi_host { struct device *dev; const struct mipi_dsi_host_ops *ops; struct list_head list; };”…”�”}”hjjTsbah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jM h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´KjhjITubhÎ)�”}”(hŒ **Members**”h]”j3 )�”}”(hj{Th]”hŒMembers”…”�”}”(hj}Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjyTubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´KphjITubjw )�”}”(hhh]”(j| )�”}”(hŒ3``dev`` driver model device node for this DSI host ”h]”(j‚ )�”}”(hŒ``dev``”h]”jˆ )�”}”(hjšTh]”hŒdev”…”�”}”(hjœTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj˜Tubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´Kfhj”Tubjž )�”}”(hhh]”hÎ)�”}”(hŒ*driver model device node for this DSI host”h]”hŒ*driver model device node for this DSI host”…”�”}”(hj³Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¯Th´Kfhj°Tubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj”Tubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¯Th´Kfhj‘Tubj| )�”}”(hŒ``ops`` DSI host operations ”h]”(j‚ )�”}”(hŒ``ops``”h]”jˆ )�”}”(hjÓTh]”hŒops”…”�”}”(hjÕTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÑTubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´KghjÍTubjž )�”}”(hhh]”hÎ)�”}”(hŒDSI host operations”h]”hŒDSI host operations”…”�”}”(hjìTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jèTh´KghjéTubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÍTubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jèTh´Kghj‘Tubj| )�”}”(hŒ``list`` list management”h]”(j‚ )�”}”(hŒ``list``”h]”jˆ )�”}”(hj Uh]”hŒlist”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj Uubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´KghjUubjž )�”}”(hhh]”hÎ)�”}”(hŒlist management”h]”hŒlist management”…”�”}”(hj%Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´Khhj"Uubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjUubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j!Uh´Kghj‘Tubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjITubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj³Mh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œmipi_dsi_device_info (C struct)”Œc.mipi_dsi_device_info”hNt”auh1j† hj³Mh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒmipi_dsi_device_info”h]”j¤ )�”}”(hŒstruct mipi_dsi_device_info”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjfUh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjbUh²hh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´Knubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjtUh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjbUh²hh³jsUh´KnubjÍ )�”}”(hŒmipi_dsi_device_info”h]”jÓ )�”}”(hj`Uh]”hŒmipi_dsi_device_info”…”�”}”(hj†Uh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj‚Uubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjbUh²hh³jsUh´Knubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj^Uh²hh³jsUh´Knubah}”(h]”jYUah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jsUh´Knhj[Uh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ'template for creating a mipi_dsi_device”h]”hŒ'template for creating a mipi_dsi_device”…”�”}”(hj¨Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´K›hj¥Uh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj[Uh²hh³jsUh´Knubeh}”(h]”h ]”(j Œstruct”eh"]”h$]”h&]”j" j j# jÀUj$ jÀUj% ‰j& ‰j' ‰uh1j˜ h²hhj³Mh³Nh´Nubj) )�”}”(hX'**Definition**:: struct mipi_dsi_device_info { char type[DSI_DEV_NAME_SIZE]; u32 channel; struct device_node *node; }; **Members** ``type`` DSI peripheral chip type ``channel`` DSI virtual channel assigned to peripheral ``node`` pointer to OF device node or NULL”h]”(hÎ)�”}”(hŒ**Definition**::”h]”(j3 )�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjÌUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÈUubhŒ:”…”�”}”(hjÈUh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´KŸhjÄUubjN )�”}”(hŒqstruct mipi_dsi_device_info { char type[DSI_DEV_NAME_SIZE]; u32 channel; struct device_node *node; };”h]”hŒqstruct mipi_dsi_device_info { char type[DSI_DEV_NAME_SIZE]; u32 channel; struct device_node *node; };”…”�”}”hjåUsbah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jM h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´K¡hjÄUubhÎ)�”}”(hŒ **Members**”h]”j3 )�”}”(hjöUh]”hŒMembers”…”�”}”(hjøUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjôUubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´K§hjÄUubjw )�”}”(hhh]”(j| )�”}”(hŒ"``type`` DSI peripheral chip type ”h]”(j‚ )�”}”(hŒ``type``”h]”jˆ )�”}”(hjVh]”hŒtype”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjVubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´K�hjVubjž )�”}”(hhh]”hÎ)�”}”(hŒDSI peripheral chip type”h]”hŒDSI peripheral chip type”…”�”}”(hj.Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j*Vh´K�hj+Vubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjVubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j*Vh´K�hj Vubj| )�”}”(hŒ7``channel`` DSI virtual channel assigned to peripheral ”h]”(j‚ )�”}”(hŒ ``channel``”h]”jˆ )�”}”(hjNVh]”hŒchannel”…”�”}”(hjPVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjLVubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´KžhjHVubjž )�”}”(hhh]”hÎ)�”}”(hŒ*DSI virtual channel assigned to peripheral”h]”hŒ*DSI virtual channel assigned to peripheral”…”�”•}”(hjgVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jcVh´KžhjdVubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjHVubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jcVh´Kžhj Vubj| )�”}”(hŒ*``node`` pointer to OF device node or NULL”h]”(j‚ )�”}”(hŒ``node``”h]”jˆ )�”}”(hj‡Vh]”hŒnode”…”�”}”(hj‰Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj…Vubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´Kžhj�Vubjž )�”}”(hhh]”hÎ)�”}”(hŒ!pointer to OF device node or NULL”h]”hŒ!pointer to OF device node or NULL”…”�”}”(hj Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´KŸhj�Vubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj�Vubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jœVh´Kžhj Vubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÄUubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj³Mh²hh³Nh´NubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjÊVh]”hŒ Description”…”�”}”(hjÌVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÈVubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´K¢hj³Mh²hubhÎ)�”}”(hŒNThis is populated and passed to mipi_dsi_device_new to create a new DSI device”h]”hŒNThis is populated and passed to mipi_dsi_device_new to create a new DSI device”…”�”}”(hjàVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´KŸhj³Mh²hubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œmipi_dsi_device (C struct)”Œc.mipi_dsi_device”hNt”auh1j† hj³Mh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒmipi_dsi_device”h]”j¤ )�”}”(hŒstruct mipi_dsi_device”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjWh²hh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´K¥ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjWh²hh³jWh´K¥ubjÍ )�”}”(hŒmipi_dsi_device”h]”jÓ )�”}”(hjWh]”hŒmipi_dsi_device”…”�”}”(hj(Wh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj$Wubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjWh²hh³jWh´K¥ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjWh²hh³jWh´K¥ubah}”(h]”jûVah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jWh´K¥hjýVh²hubj )�”}”(hhh]”hÎ)�”}”(hŒDSI peripheral device”h]”hŒDSI peripheral device”…”�”}”(hjJWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´KªhjGWh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjýVh²hh³jWh´K¥ubeh}”(h]”h ]”(j Œstruct”eh"]”h$]”h&]”j" j j# jbWj$ jbWj% ‰j& ‰j' ‰uh1j˜ h²hhj³Mh³Nh´Nubj) )�”}”(hX“**Definition**:: struct mipi_dsi_device { struct mipi_dsi_host *host; struct device dev; bool attached; char name[DSI_DEV_NAME_SIZE]; unsigned int channel; unsigned int lanes; enum mipi_dsi_pixel_format format; unsigned long mode_flags; unsigned long hs_rate; unsigned long lp_rate; struct drm_dsc_config *dsc; }; **Members** ``host`` DSI host for this peripheral ``dev`` driver model device node for this peripheral ``attached`` the DSI device has been successfully attached ``name`` DSI peripheral chip type ``channel`` virtual channel assigned to the peripheral ``lanes`` number of active data lanes ``format`` pixel format for video mode ``mode_flags`` DSI operation mode related flags ``hs_rate`` maximum lane frequency for high speed mode in hertz, this should be set to the real limits of the hardware, zero is only accepted for legacy drivers ``lp_rate`` maximum lane frequency for low power mode in hertz, this should be set to the real limits of the hardware, zero is only accepted for legacy drivers ``dsc`` panel/bridge DSC pps payload to be sent”h]”(hÎ)�”}”(hŒ**Definition**::”h]”(j3 )�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjnWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjjWubhŒ:”…”�”}”(hjjWh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´K®hjfWubjN )�”}”(hXTstruct mipi_dsi_device { struct mipi_dsi_host *host; struct device dev; bool attached; char name[DSI_DEV_NAME_SIZE]; unsigned int channel; unsigned int lanes; enum mipi_dsi_pixel_format format; unsigned long mode_flags; unsigned long hs_rate; unsigned long lp_rate; struct drm_dsc_config *dsc; };”h]”hXTstruct mipi_dsi_device { struct mipi_dsi_host *host; struct device dev; bool attached; char name[DSI_DEV_NAME_SIZE]; unsigned int channel; unsigned int lanes; enum mipi_dsi_pixel_format format; unsigned long mode_flags; unsigned long hs_rate; unsigned long lp_rate; struct drm_dsc_config *dsc; };”…”�”}”hj‡Wsbah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jM h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´K°hjfWubhÎ)�”}”(hŒ **Members**”h]”j3 )�”}”(hj˜Wh]”hŒMembers”…”�”}”(hjšWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj–Wubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´K¾hjfWubjw )�”}”(hhh]”(j| )�”}”(hŒ&``host`` DSI host for this peripheral ”h]”(j‚ )�”}”(hŒ``host``”h]”jˆ )�”}”(hj·Wh]”hŒhost”…”�”}”(hj¹Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjµWubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´K¬hj±Wubjž )�”}”(hhh]”hÎ)�”}”(hŒDSI host for this peripheral”h]”hŒDSI host for this peripheral”…”�”}”(hjÐWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÌWh´K¬hjÍWubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj±Wubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÌWh´K¬hj®Wubj| )�”}”(hŒ5``dev`` driver model device node for this peripheral ”h]”(j‚ )�”}”(hŒ``dev``”h]”jˆ )�”}”(hjðWh]”hŒdev”…”�”}”(hjòWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjîWubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´K­hjêWubjž )�”}”(hhh]”hÎ)�”}”(hŒ,driver model device node for this peripheral”h]”hŒ,driver model device node for this peripheral”…”�”}”(hj Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jXh´K­hjXubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjêWubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jXh´K­hj®Wubj| )�”}”(hŒ;``attached`` the DSI device has been successfully attached ”h]”(j‚ )�”}”(hŒ ``attached``”h]”jˆ )�”}”(hj)Xh]”hŒattached”…”�”}”(hj+Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj'Xubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´K®hj#Xubjž )�”}”(hhh]”hÎ)�”}”(hŒ-the DSI device has been successfully attached”h]”hŒ-the DSI device has been successfully attached”…”�”}”(hjBXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j>Xh´K®hj?Xubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj#Xubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j>Xh´K®hj®Wubj| )�”}”(hŒ"``name`` DSI peripheral chip type ”h]”(j‚ )�”}”(hŒ``name``”h]”jˆ )�”}”(hjbXh]”hŒname”…”�”}”(hjdXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj`Xubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´K¯hj\Xubjž )�”}”(hhh]”hÎ)�”}”(hŒDSI peripheral chip type”h]”hŒDSI peripheral chip type”…”�”}”(hj{Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jwXh´K¯hjxXubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj\Xubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jwXh´K¯hj®Wubj| )�”}”(hŒ7``channel`` virtual channel assigned to the peripheral ”h]”(j‚ )�”}”(hŒ ``channel``”h]”jˆ )�”}”(hj›Xh]”hŒchannel”…”�”}”(hj�Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj™Xubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´K°hj•Xubjž )�”}”(hhh]”hÎ)�”}”(hŒ*virtual channel assigned to the peripheral”h]”hŒ*virtual channel assigned to the peripheral”…”�”}”(hj´Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j°Xh´K°hj±Xubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj•Xubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j°Xh´K°hj®Wubj| )�”}”(hŒ&``lanes`` number of active data lanes ”h]”(j‚ )�”}”(hŒ ``lanes``”h]”jˆ )�”}”(hjÔXh]”hŒlanes”…”�”}”(hjÖXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÒXubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´K²hjÎXubjž )�”}”(hhh]”hÎ)�”}”(hŒnumber of active data lanes”h]”hŒnumber of active data lanes”…”�”}”(hjíXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jéXh´K²hjêXubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÎXubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jéXh´K²hj®Wubj| )�”}”(hŒ'``format`` pixel format for video mode ”h]”(j‚ )�”}”(hŒ ``format``”h]”jˆ )�”}”(hj Yh]”hŒformat”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj Yubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´K±hjYubjž )�”}”(hhh]”hÎ)�”}”(hŒpixel format for video mode”h]”hŒpixel format for video mode”…”�”}”(hj&Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j"Yh´K±hj#Yubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjYubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j"Yh´K±hj®Wubj| )�”}”(hŒ0``mode_flags`` DSI operation mode related flags ”h]”(j‚ )�”}”(hŒ``mode_flags``”h]”jˆ )�”}”(hjFYh]”hŒ mode_flags”…”�”}”(hjHYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjDYubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´K³hj@Yubjž )�”}”(hhh]”hÎ)�”}”(hŒ DSI operation mode related flags”h]”hŒ DSI operation mode related flags”…”�”}”(hj_Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j[Yh´K³hj\Yubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj@Yubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j[Yh´K³hj®Wubj| )�”}”(hŒ¡``hs_rate`` maximum lane frequency for high speed mode in hertz, this should be set to the real limits of the hardware, zero is only accepted for legacy drivers ”h]”(j‚ )�”}”(hŒ ``hs_rate``”h]”jˆ )�”}”(hjYh]”hŒhs_rate”…”�”}”(hj�Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj}Yubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´K¶hjyYubjž )�”}”(hhh]”hÎ)�”}”(hŒ”maximum lane frequency for high speed mode in hertz, this should be set to the real limits of the hardware, zero is only accepted for legacy drivers”h]”hŒ”maximum lane frequency for high speed mode in hertz, this should be set to the real limits of the hardware, zero is only accepted for legacy drivers”…”�”}”(hj˜Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´K´hj•Yubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjyYubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j”Yh´K¶hj®Wubj| )�”}”(hŒ ``lp_rate`` maximum lane frequency for low power mode in hertz, this should be set to the real limits of the hardware, zero is only accepted for legacy drivers ”h]”(j‚ )�”}”(hŒ ``lp_rate``”h]”jˆ )�”}”(hj¹Yh]”hŒlp_rate”…”�”}”(hj»Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj·Yubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´K¹hj³Yubjž )�”}”(hhh]”hÎ)�”}”(hŒ“maximum lane frequency for low power mode in hertz, this should be set to the real limits of the hardware, zero is only accepted for legacy drivers”h]”hŒ“maximum lane frequency for low power mode in hertz, this should be set to the real limits of the hardware, zero is only accepted for legacy drivers”…”�”}”(hjÒYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´K·hjÏYubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj³Yubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÎYh´K¹hj®Wubj| )�”}”(hŒ/``dsc`` panel/bridge DSC pps payload to be sent”h]”(j‚ )�”}”(hŒ``dsc``”h]”jˆ )�”}”(hjóYh]”hŒdsc”…”�”}”(hjõYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjñYubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´K¹hjíYubjž )�”}”(hhh]”hÎ)�”}”(hŒ'panel/bridge DSC pps payload to be sent”h]”hŒ'panel/bridge DSC pps payload to be sent”…”�”}”(hj Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´Kºhj Zubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjíYubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jZh´K¹hj®Wubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjfWubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj³Mh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ!mipi_dsi_multi_context (C struct)”Œc.mipi_dsi_multi_context”hNt”auh1j† hj³Mh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒmipi_dsi_multi_context”h]”j¤ )�”}”(hŒstruct mipi_dsi_multi_context”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjMZh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjIZh²hh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´KÀubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[Zh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjIZh²hh³jZZh´KÀubjÍ )�”}”(hŒmipi_dsi_multi_context”h]”jÓ )�”}”(hjGZh]”hŒmipi_dsi_multi_context”…”�”}”(hjmZh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjiZubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjIZh²hh³jZZh´KÀubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjEZh²hh³jZZh´KÀubah}”(h]”j@Zah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jZZh´KÀhjBZh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ0Context to call multiple MIPI DSI funcs in a row”h]”hŒ0Context to call multiple MIPI DSI funcs in a row”…”�”}”(hj�Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´KËhjŒZh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjBZh²hh³jZZh´KÀubeh}”(h]”h ]”(j Œstruct”eh"]”h$]”h&]”j" j j# j§Zj$ j§Zj% ‰j& ‰j' ‰uh1j˜ h²hhj³Mh³Nh´Nubj) )�”}”(hX(**Definition**:: struct mipi_dsi_multi_context { struct mipi_dsi_device *dsi; int accum_err; }; **Members** ``dsi`` Pointer to the MIPI DSI device ``accum_err`` Storage for the accumulated error over the multiple calls Init to 0. If a function encounters an error then the error code will be stored here. If you call a function and this points to a non-zero value then the function will be a noop. This allows calling a function many times in a row and just checking the error at the end to see if any of them failed.”h]”(hÎ)�”}”(hŒ**Definition**::”h]”(j3 )�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj³Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¯ZubhŒ:”…”�”}”(hj¯Zh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´KÏhj«ZubjN )�”}”(hŒVstruct mipi_dsi_multi_context { struct mipi_dsi_device *dsi; int accum_err; };”h]”hŒVstruct mipi_dsi_multi_context { struct mipi_dsi_device *dsi; int accum_err; };”…”�”}”hjÌZsbah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jM h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´KÑhj«ZubhÎ)�”}”(hŒ **Members**”h]”j3 )�”}”(hjÝZh]”hŒMembers”…”�”}”(hjßZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÛZubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´KÖhj«Zubjw )�”}”(hhh]”(j| )�”}”(hŒ'``dsi`` Pointer to the MIPI DSI device ”h]”(j‚ )�”}”(hŒ``dsi``”h]”jˆ )�”}”(hjüZh]”hŒdsi”…”�”}”(hjþZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjúZubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´KÐhjöZubjž )�”}”(hhh]”hÎ)�”}”(hŒPointer to the MIPI DSI device”h]”hŒPointer to the MIPI DSI device”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j[h´KÐhj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjöZubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j[h´KÐhjóZubj| )�”}”(hXs``accum_err`` Storage for the accumulated error over the multiple calls Init to 0. If a function encounters an error then the error code will be stored here. If you call a function and this points to a non-zero value then the function will be a noop. This allows calling a function many times in a row and just checking the error at the end to see if any of them failed.”h]”(j‚ )�”}”(hŒ ``accum_err``”h]”jˆ )�”}”(hj5[h]”hŒ accum_err”…”�”}”(hj7[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj3[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´KÚhj/[ubjž )�”}”(hhh]”(hÎ)�”}”(hŒ9Storage for the accumulated error over the multiple calls”h]”hŒ9Storage for the accumulated error over the multiple calls”…”�”}”(hjN[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´KÕhjK[ubhÎ)�”}”(hX*Init to 0. If a function encounters an error then the error code will be stored here. If you call a function and this points to a non-zero value then the function will be a noop. This allows calling a function many times in a row and just checking the error at the end to see if any of them failed.”h]”hX*Init to 0. If a function encounters an error then the error code will be stored here. If you call a function and this points to a non-zero value then the function will be a noop. This allows calling a function many times in a row and just checking the error at the end to see if any of them failed.”…”�”}”(hj][h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´K×hjK[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j� hj/[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jJ[h´KÚhjóZubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj«Zubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj³Mh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ)mipi_dsi_pixel_format_to_bpp (C function)”Œc.mipi_dsi_pixel_format_to_bpp”hNt”auh1j† hj³Mh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒAint mipi_dsi_pixel_format_to_bpp (enum mipi_dsi_pixel_format fmt)”h]”j¤ )�”}”(hŒ@int mipi_dsi_pixel_format_to_bpp(enum mipi_dsi_pixel_format fmt)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjž[h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjš[h²hh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”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Œmipi_dsi_pixel_format_to_bpp”h]”jÓ )�”}”(hŒmipi_dsi_pixel_format_to_bpp”h]”hŒmipi_dsi_pixel_format_to_bpp”…”�”}”(hj¿[h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj»[ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjš[h²hh³j¬[h´KçubjÞ)�”}”(hŒ (enum mipi_dsi_pixel_format fmt)”h]”jä)�”}”(hŒenum mipi_dsi_pixel_format fmt”h]”(jª )�”}”(hjÂ7h]”hŒenum”…”�”}”(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Œmipi_dsi_pixel_format”h]”hŒmipi_dsi_pixel_format”…”�”}”(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%)�”}”jjÁ[sbŒc.mipi_dsi_pixel_format_to_bpp”†”asbuh1hhj×[ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj×[ubjÓ )�”}”(hŒfmt”h]”hŒfmt”…”�”}”(hj'\h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj×[ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÓ[ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjš[h²hh³j¬[h´Kçubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œdobtain the number of bits per pixel for any given pixel format defined by the MIPI DSI specification”h]”hŒdobtain the number of bits per pixel for any given pixel format defined by the MIPI DSI specification”…”�”}”(hjQ\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´KçhjN\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# ji\j$ ji\j% ‰j& ‰j' ‰uh1j˜ h²hhj³Mh³Nh´Nubj) )�”}”(hŒ�**Parameters** ``enum mipi_dsi_pixel_format fmt`` MIPI DSI pixel format **Return** The number of bits per pixel of the given pixel format.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjs\h]”hŒ Parameters”…”�”}”(hju\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjq\ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´Këhjm\ubjw )�”}”(hhh]”j| )�”}”(hŒ9``enum mipi_dsi_pixel_format fmt`` MIPI DSI pixel format ”h]”(j‚ )�”}”(hŒ"``enum mipi_dsi_pixel_format fmt``”h]”jˆ )�”}”(hj’\h]”hŒenum mipi_dsi_pixel_format fmt”…”�”}”(hj”\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj�\ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´KêhjŒ\ubjž )�”}”(hhh]”hÎ)�”}”(hŒMIPI DSI pixel format”h]”hŒMIPI DSI pixel format”…”�”}”(hj«\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j§\h´Kêhj¨\ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjŒ\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j§\h´Kêhj‰\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjm\ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjÍ\h]”hŒReturn”…”�”}”(hjÏ\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjË\ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´Kìhjm\ubhÎ)�”}”(hŒ7The number of bits per pixel of the given pixel format.”h]”hŒ7The number of bits per pixel of the given pixel format.”…”�”}”(hjã\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´Kìhjm\ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj³Mh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œmipi_dsi_dcs_tear_mode (C enum)”Œc.mipi_dsi_dcs_tear_mode”hNt”auh1j† hj³Mh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒmipi_dsi_dcs_tear_mode”h]”j¤ )�”}”(hŒenum mipi_dsi_dcs_tear_mode”h]”(jª )�”}”(hjÂ7h]”hŒenum”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj]h²hh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”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Œmipi_dsi_dcs_tear_mode”h]”jÓ )�”}”(hj ]h]”hŒmipi_dsi_dcs_tear_mode”…”�”}”(hj2]h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj.]ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj]h²hh³j]h´Kñubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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ŒTearing Effect Output Line mode”h]”hŒTearing Effect Output Line mode”…”�”}”(hjT]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´M@hjQ]h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj]h²hh³j]h´Kñubeh}”(h]”h ]”(j Œenum”eh"]”h$]”h&]”j" j j# jl]j$ jl]j% ‰j& ‰j' ‰uh1j˜ h²hhj³Mh³Nh´Nubj) )�”}”(hŒá**Constants** ``MIPI_DSI_DCS_TEAR_MODE_VBLANK`` the TE output line consists of V-Blanking information only ``MIPI_DSI_DCS_TEAR_MODE_VHBLANK`` the TE output line consists of both V-Blanking and H-Blanking information”h]”(hÎ)�”}”(hŒ **Constants**”h]”j3 )�”}”(hjv]h]”hŒ Constants”…”�”}”(hjx]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjt]ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´MDhjp]ubjw )�”}”(hhh]”(j| )�”}”(hŒ]``MIPI_DSI_DCS_TEAR_MODE_VBLANK`` the TE output line consists of V-Blanking information only ”h]”(j‚ )�”}”(hŒ!``MIPI_DSI_DCS_TEAR_MODE_VBLANK``”h]”jˆ )�”}”(hj•]h]”hŒMIPI_DSI_DCS_TEAR_MODE_VBLANK”…”�”}”(hj—]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj“]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´MHhj�]ubjž )�”}”(hhh]”hÎ)�”}”(hŒ:the TE output line consists of V-Blanking information only”h]”hŒ:the TE output line consists of V-Blanking information only”…”�”}”(hj®]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´MGhj«]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj�]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jª]h´MHhjŒ]ubj| )�”}”(hŒl``MIPI_DSI_DCS_TEAR_MODE_VHBLANK`` the TE output line consists of both V-Blanking and H-Blanking information”h]”(j‚ )�”}”(hŒ"``MIPI_DSI_DCS_TEAR_MODE_VHBLANK``”h]”jˆ )�”}”(hjÏ]h]”hŒMIPI_DSI_DCS_TEAR_MODE_VHBLANK”…”�”}”(hjÑ]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÍ]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´MKhjÉ]ubjž )�”}”(hhh]”hÎ)�”}”(hŒIthe TE output line consists of both V-Blanking and H-Blanking information”h]”hŒIthe TE output line consists of both V-Blanking and H-Blanking information”…”�”}”(hjè]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jä]h´MKhjå]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÉ]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jä]h´MKhjŒ]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjp]ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj³Mh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ*mipi_dsi_generic_write_seq_multi (C macro)”Œ"c.mipi_dsi_generic_write_seq_multi”hNt”auh1j† hj³Mh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ mipi_dsi_generic_write_seq_multi”h]”j¤ )�”}”(hŒ mipi_dsi_generic_write_seq_multi”h]”jÍ )�”}”(hŒ mipi_dsi_generic_write_seq_multi”h]”jÓ )�”}”(hj"^h]”hŒ mipi_dsi_generic_write_seq_multi”…”�”}”(hj,^h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj(^ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj$^h²hh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´M‘ubah}”(h]”h ]”h"]”h$]”h&]”jê jë 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]”h ]”h"]”h$]”h&]”uh1j hj^h²hh³j?^h´M‘ubeh}”(h]”h ]”(j Œmacro”eh"]”h$]”h&]”j" j j# jX^j$ jX^j% ‰j& ‰j' ‰uh1j˜ h²hhj³Mh³Nh´NubhÎ)�”}”(hŒ2``mipi_dsi_generic_write_seq_multi (ctx, seq...)``”h]”jˆ )�”}”(hj^^h]”hŒ.mipi_dsi_generic_write_seq_multi (ctx, seq...)”…”�”}”(hj`^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj\^ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´M“hj³Mh²hubj^E)�”}”(hŒ+transmit data using a generic write packet ”h]”hÎ)�”}”(hŒ*transmit data using a generic write packet”h]”hŒ*transmit data using a generic write packet”…”�”}”(hjx^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´M‘hjt^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]Eh³j†^h´M‘hj³Mh²hubj) )�”}”(hŒö**Parameters** ``ctx`` Context for multiple DSI transactions ``seq...`` buffer containing the payload **Description** This macro will print errors for you and error handling is optimized for callers that call this multiple times in a row.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj“^h]”hŒ Parameters”…”�”}”(hj•^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj‘^ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´M•hj�^ubjw )�”}”(hhh]”(j| )�”}”(hŒ.``ctx`` Context for multiple DSI transactions ”h]”(j‚ )�”}”(hŒ``ctx``”h]”jˆ )�”}”(hj²^h]”hŒctx”…”�”}”(hj´^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj°^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´M–hj¬^ubjž )�”}”(hhh]”hÎ)�”}”(hŒ%Context for multiple DSI transactions”h]”hŒ%Context for multiple DSI transactions”…”�”}”(hjË^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÇ^h´M–hjÈ^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¬^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÇ^h´M–hj©^ubj| )�”}”(hŒ)``seq...`` buffer containing the payload ”h]”(j‚ )�”}”(hŒ ``seq...``”h]”jˆ )�”}”(hjë^h]”hŒseq...”…”�”}”(hjí^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjé^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´M—hjå^ubjž )�”}”(hhh]”hÎ)�”}”(hŒbuffer containing the payload”h]”hŒbuffer containing the payload”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j_h´M—hj_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjå^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j_h´M—hj©^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj�^ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj&_h]”hŒ Description”…”�”}”(hj(_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj$_ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´M™hj�^ubhÎ)�”}”(hŒxThis macro will print errors for you and error handling is optimized for callers that call this multiple times in a row.”h]”hŒxThis macro will print errors for you and error handling is optimized for callers that call this multiple times in a row.”…”�”}”(hj<_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´M’hj�^ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj³Mh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ.mipi_dsi_generic_write_var_seq_multi (C macro)”Œ&c.mipi_dsi_generic_write_var_seq_multi”hNt”auh1j† hj³Mh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ$mipi_dsi_generic_write_var_seq_multi”h]”j¤ )�”}”(hŒ$mipi_dsi_generic_write_var_seq_multi”h]”jÍ )�”}”(hŒ$mipi_dsi_generic_write_var_seq_multi”h]”jÓ )�”}”(hje_h]”hŒ$mipi_dsi_generic_write_var_seq_multi”…”�”}”(hjo_h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjk_ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjg_h²hh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´M ubah}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjc_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]”h ]”h"]”h$]”h&]”uh1j hj`_h²hh³j‚_h´M ubeh}”(h]”h ]”(j Œmacro”eh"]”h$]”h&]”j" j j# j›_j$ j›_j% ‰j& ‰j' ‰uh1j˜ h²hhj³Mh³Nh´NubhÎ)�”}”(hŒ6``mipi_dsi_generic_write_var_seq_multi (ctx, seq...)``”h]”jˆ )�”}”(hj¡_h]”hŒ2mipi_dsi_generic_write_var_seq_multi (ctx, seq...)”…”�”}”(hj£_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjŸ_ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´M¢hj³Mh²hubj^E)�”}”(hŒ8transmit non-constant data using a generic write packet ”h]”hÎ)�”}”(hŒ7transmit non-constant data using a generic write packet”h]”hŒ7transmit non-constant data using a generic write packet”…”�”}”(hj»_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´M hj·_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]Eh³jÉ_h´M hj³Mh²hubj) )�”}”(hŒö**Parameters** ``ctx`` Context for multiple DSI transactions ``seq...`` buffer containing the payload **Description** This macro will print errors for you and error handling is optimized for callers that call this multiple times in a row.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjÖ_h]”hŒ Parameters”…”�”}”(hjØ_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÔ_ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´M¤hjÐ_ubjw )�”}”(hhh]”(j| )�”}”(hŒ.``ctx`` Context for multiple DSI transactions ”h]”(j‚ )�”}”(hŒ``ctx``”h]”jˆ )�”}”(hjõ_h]”hŒctx”…”�”}”(hj÷_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjó_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´M¦hjï_ubjž )�”}”(hhh]”hÎ)�”}”(hŒ%Context for multiple DSI transactions”h]”hŒ%Context for multiple DSI transactions”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j `h´M¦hj `ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjï_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j `h´M¦hjì_ubj| )�”}”(hŒ)``seq...`` buffer containing the payload ”h]”(j‚ )�”}”(hŒ ``seq...``”h]”jˆ )�”}”(hj.`h]”hŒseq...”…”�”}”(hj0`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj,`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´M§hj(`ubjž )�”}”(hhh]”hÎ)�”}”(hŒbuffer containing the payload”h]”hŒbuffer containing the payload”…”�”}”(hjG`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jC`h´M§hjD`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj(`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jC`h´M§hjì_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÐ_ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hji`h]”hŒ Description”…”�”}”(hjk`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjg`ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´M©hjÐ_ubhÎ)�”}”(hŒxThis macro will print errors for you and error handling is optimized for callers that call this multiple times in a row.”h]”hŒxThis macro will print errors for you and error handling is optimized for callers that call this multiple times in a row.”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´M¡hjÐ_ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj³Mh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ&mipi_dsi_dcs_write_seq_multi (C macro)”Œc.mipi_dsi_dcs_write_seq_multi”hNt”auh1j† hj³Mh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒmipi_dsi_dcs_write_seq_multi”h]”j¤ )�”}”(hŒmipi_dsi_dcs_write_seq_multi”h]”jÍ )�”}”(hŒmipi_dsi_dcs_write_seq_multi”h]”jÓ )�”}”(hj¨`h]”hŒmipi_dsi_dcs_write_seq_multi”…”�”}”(hj²`h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj®`ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjª`h²hh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´M°ubah}”(h]”h ]”h"]”h$]”h&]”jê jë 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]”h ]”h"]”h$]”h&]”uh1j hj£`h²hh³jÅ`h´M°ubeh}”(h]”h ]”(j Œmacro”eh"]”h$]”h&]”j" j j# jÞ`j$ jÞ`j% ‰j& ‰j' ‰uh1j˜ h²hhj³Mh³Nh´NubhÎ)�”}”(hŒ3``mipi_dsi_dcs_write_seq_multi (ctx, cmd, seq...)``”h]”jˆ )�”}”(hjä`h]”hŒ/mipi_dsi_dcs_write_seq_multi (ctx, cmd, seq...)”…”�”}”(hjæ`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjâ`ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´M²hj³Mh²hubj^E)�”}”(hŒ$transmit a DCS command with payload ”h]”hÎ)�”}”(hŒ#transmit a DCS command with payload”h]”hŒ#transmit a DCS command with payload”…”�”}”(hjþ`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´M°hjú`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j]Eh³j ah´M°hj³Mh²hubj) )�”}”(hX**Parameters** ``ctx`` Context for multiple DSI transactions ``cmd`` Command ``seq...`` buffer containing data to be transmitted **Description** This macro will print errors for you and error handling is optimized for callers that call this multiple times in a row.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjah]”hŒ Parameters”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjaubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´M´hjaubjw )�”}”(hhh]”(j| )�”}”(hŒ.``ctx`` Context for multiple DSI transactions ”h]”(j‚ )�”}”(hŒ``ctx``”h]”jˆ )�”}”(hj8ah]”hŒctx”…”�”}”(hj:ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj6aubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´Mµhj2aubjž )�”}”(hhh]”hÎ)�”}”(hŒ%Context for multiple DSI transactions”h]”hŒ%Context for multiple DSI transactions”…”�”}”(hjQah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jMah´MµhjNaubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj2aubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jMah´Mµhj/aubj| )�”}”(hŒ``cmd`` Command ”h]”(j‚ )�”}”(hŒ``cmd``”h]”jˆ )�”}”(hjqah]”hŒcmd”…”�”}”(hjsah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjoaubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´M¶hjkaubjž )�”}”(hhh]”hÎ)�”}”(hŒCommand”h]”hŒCommand”…”�”}”(hjŠah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j†ah´M¶hj‡aubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjkaubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j†ah´M¶hj/aubj| )�”}”(hŒ4``seq...`` buffer containing data to be transmitted ”h]”(j‚ )�”}”(hŒ ``seq...``”h]”jˆ )�”}”(hjªah]”hŒseq...”…”�”}”(hj¬ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¨aubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´M·hj¤aubjž )�”}”(hhh]”hÎ)�”}”(hŒ(buffer containing data to be transmitted”h]”hŒ(buffer containing data to be transmitted”…”�”}”(hjÃah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¿ah´M·hjÀaubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¤aubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¿ah´M·hj/aubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjaubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjåah]”hŒ Description”…”�”}”(hjçah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjãaubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´M¹hjaubhÎ)�”}”(hŒxThis macro will print errors for you and error handling is optimized for callers that call this multiple times in a row.”h]”hŒxThis macro will print errors for you and error handling is optimized for callers that call this multiple times in a row.”…”�”}”(hjûah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´M±hjaubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj³Mh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ*mipi_dsi_dcs_write_var_seq_multi (C macro)”Œ"c.mipi_dsi_dcs_write_var_seq_multi”hNt”auh1j† hj³Mh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ mipi_dsi_dcs_write_var_seq_multi”h]”j¤ )�”}”(hŒ mipi_dsi_dcs_write_var_seq_multi”h]”jÍ )�”}”(hŒ mipi_dsi_dcs_write_var_seq_multi”h]”jÓ )�”}”(hj$bh]”hŒ mipi_dsi_dcs_write_var_seq_multi”…”�”}”(hj.bh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj*bubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj&bh²hh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´MÀubah}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj"bh²hh³jAbh´MÀubah}”(h]”jbah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jAbh´MÀhjbh²hubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j hjbh²hh³jAbh´MÀubeh}”(h]”h ]”(j Œmacro”eh"]”h$]”h&]”j" j j# jZbj$ jZbj% ‰j& ‰j' ‰uh1j˜ h²hhj³Mh³Nh´NubhÎ)�”}”(hŒ7``mipi_dsi_dcs_write_var_seq_multi (ctx, cmd, seq...)``”h]”jˆ )�”}”(hj`bh]”hŒ3mipi_dsi_dcs_write_var_seq_multi (ctx, cmd, seq...)”…”�”}”(hjbbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj^bubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´MÂhj³Mh²hubj^E)�”}”(hŒ1transmit a DCS command with non-constant payload ”h]”hÎ)�”}”(hŒ0transmit a DCS command with non-constant payload”h]”hŒ0transmit a DCS command with non-constant payload”…”�”}”(hjzbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´MÀhjvbubah}”(h]”h ]”h"]”h$]”h&]”uh1j]Eh³jˆbh´MÀhj³Mh²hubj) )�”}”(hX**Parameters** ``ctx`` Context for multiple DSI transactions ``cmd`` Command ``seq...`` buffer containing data to be transmitted **Description** This macro will print errors for you and error handling is optimized for callers that call this multiple times in a row.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj•bh]”hŒ Parameters”…”�”}”(hj—bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj“bubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´MÄhj�bubjw )�”}”(hhh]”(j| )�”}”(hŒ.``ctx`` Context for multiple DSI transactions ”h]”(j‚ )�”}”(hŒ``ctx``”h]”jˆ )�”}”(hj´bh]”hŒctx”…”�”}”(hj¶bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj²bubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´MÆhj®bubjž )�”}”(hhh]”hÎ)�”}”(hŒ%Context for multiple DSI transactions”h]”hŒ%Context for multiple DSI transactions”…”�”}”(hjÍbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÉbh´MÆhjÊbubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj®bubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÉbh´MÆhj«bubj| )�”}”(hŒ``cmd`` Command ”h]”(j‚ )�”}”(hŒ``cmd``”h]”jˆ )�”}”(hjíbh]”hŒcmd”…”�”}”(hjïbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjëbubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´MÇhjçbubjž )�”}”(hhh]”hÎ)�”}”(hŒCommand”h]”hŒCommand”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jch´MÇhjcubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjçbubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jch´MÇhj«bubj| )�”}”(hŒ4``seq...`` buffer containing data to be transmitted ”h]”(j‚ )�”}”(hŒ ``seq...``”h]”jˆ )�”}”(hj&ch]”hŒseq...”…”�”}”(hj(ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj$cubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´MÈhj cubjž )�”}”(hhh]”hÎ)�”}”(hŒ(buffer containing data to be transmitted”h]”hŒ(buffer containing data to be transmitted”…”�”}”(hj?ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j;ch´MÈhjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj:fubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´Mhj6fubjž )�”}”(hhh]”hÎ)�”}”(hŒ%Context for multiple DSI transactions”h]”hŒ%Context for multiple DSI transactions”…”�”}”(hjUfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jQfh´MhjRfubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj6fubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jQfh´Mhj3fubj| )�”}”(hŒ<``_dsi1`` First DSI interface to act as recipient of packet ”h]”(j‚ )�”}”(hŒ ``_dsi1``”h]”jˆ )�”}”(hjufh]”hŒ_dsi1”…”�”}”(hjwfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjsfubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´Mhjofubjž )�”}”(hhh]”hÎ)�”}”(hŒ1First DSI interface to act as recipient of packet”h]”hŒ1First DSI interface to act as recipient of packet”…”�”}”(hjŽfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jŠfh´Mhj‹fubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjofubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jŠfh´Mhj3fubj| )�”}”(hŒ=``_dsi2`` Second DSI interface to act as recipient of packet ”h]”(j‚ )�”}”(hŒ ``_dsi2``”h]”jˆ )�”}”(hj®fh]”hŒ_dsi2”…”�”}”(hj°fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¬fubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´Mhj¨fubjž )�”}”(hhh]”hÎ)�”}”(hŒ2Second DSI interface to act as recipient of packet”h]”hŒ2Second DSI interface to act as recipient of packet”…”�”}”(hjÇfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÃfh´MhjÄfubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¨fubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÃfh´Mhj3fubj| )�”}”(hŒ*``_seq...`` buffer containing the payload ”h]”(j‚ )�”}”(hŒ ``_seq...``”h]”jˆ )�”}”(hjçfh]”hŒ_seq...”…”�”}”(hjéfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjåfubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´Mhjáfubjž )�”}”(hhh]”hÎ)�”}”(hŒbuffer containing the payload”h]”hŒbuffer containing the payload”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jüfh´Mhjýfubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjáfubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jüfh´Mhj3fubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjfubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj"gh]”hŒ Description”…”�”}”(hj$gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj gubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´MhjfubhÎ)�”}”(hŒÑThis macro will send the specified generic packet twice, once per each of the two interfaces supplied. This is useful for reducing duplication of code in panel drivers which use two parallel serial interfaces.”h]”hŒÑThis macro will send the specified generic packet twice, once per each of the two interfaces supplied. This is useful for reducing duplication of code in panel drivers which use two parallel serial interfaces.”…”�”}”(hj8gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´MôhjfubhÎ)�”}”(hŒ�Note that if an error occurs while transmitting the packet to the first DSI interface, the packet will not be sent to the second DSI interface.”h]”hŒ�Note that if an error occurs while transmitting the packet to the first DSI interface, the packet will not be sent to the second DSI interface.”…”�”}”(hjGgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´MøhjfubhÎ)�”}”(hŒxThis macro will print errors for you and error handling is optimized for callers that call this multiple times in a row.”h]”hŒxThis macro will print errors for you and error handling is optimized for callers that call this multiple times in a row.”…”�”}”(hjVgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´Mûhjfubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj³Mh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ+mipi_dsi_dual_dcs_write_seq_multi (C macro)”Œ#c.mipi_dsi_dual_dcs_write_seq_multi”hNt”auh1j† hj³Mh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ!mipi_dsi_dual_dcs_write_seq_multi”h]”j¤ )�”}”(hŒ!mipi_dsi_dual_dcs_write_seq_multi”h]”jÍ )�”}”(hŒ!mipi_dsi_dual_dcs_write_seq_multi”h]”jÓ )�”}”(hjgh]”hŒ!mipi_dsi_dual_dcs_write_seq_multi”…”�”}”(hj‰gh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj…gubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj�gh²hh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´M ubah}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj}gh²hh³jœgh´M ubah}”(h]”jxgah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jœgh´M hjzgh²hubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j hjzgh²hh³jœgh´M ubeh}”(h]”h ]”(j Œmacro”eh"]”h$]”h&]”j" j j# jµgj$ jµgj% ‰j& ‰j' ‰uh1j˜ h²hhj³Mh³Nh´NubhÎ)�”}”(hŒI``mipi_dsi_dual_dcs_write_seq_multi (_ctx, _dsi1, _dsi2, _cmd, _seq...)``”h]”jˆ )�”}”(hj»gh]”hŒEmipi_dsi_dual_dcs_write_seq_multi (_ctx, _dsi1, _dsi2, _cmd, _seq...)”…”�”}”(hj½gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¹gubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´Mhj³Mh²hubj^E)�”}”(hŒOtransmit a DCS command with payload to two dsi interfaces, one after the other ”h]”hÎ)�”}”(hŒNtransmit a DCS command with payload to two dsi interfaces, one after the other”h]”hŒNtransmit a DCS command with payload to two dsi interfaces, one after the other”…”�”}”(hjÕgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´M hjÑgubah}”(h]”h ]”h"]”h$]”h&]”uh1j]Eh³jãgh´•M hj³Mh²hubj) )�”}”(hXû**Parameters** ``_ctx`` Context for multiple DSI transactions ``_dsi1`` First DSI interface to act as recipient of packet ``_dsi2`` Second DSI interface to act as recipient of packet ``_cmd`` Command ``_seq...`` buffer containing the payload **Description** This macro will send the specified DCS command with payload twice, once per each of the two interfaces supplied. This is useful for reducing duplication of code in panel drivers which use two parallel serial interfaces. Note that if an error occurs while transmitting the payload to the first DSI interface, the payload will not be sent to the second DSI interface. This macro will print errors for you and error handling is optimized for callers that call this multiple times in a row.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjðgh]”hŒ Parameters”…”�”}”(hjògh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjîgubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´Mhjêgubjw )�”}”(hhh]”(j| )�”}”(hŒ/``_ctx`` Context for multiple DSI transactions ”h]”(j‚ )�”}”(hŒ``_ctx``”h]”jˆ )�”}”(hjhh]”hŒ_ctx”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj hubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´Mhj hubjž )�”}”(hhh]”hÎ)�”}”(hŒ%Context for multiple DSI transactions”h]”hŒ%Context for multiple DSI transactions”…”�”}”(hj(hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j$hh´Mhj%hubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj hubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j$hh´Mhjhubj| )�”}”(hŒ<``_dsi1`` First DSI interface to act as recipient of packet ”h]”(j‚ )�”}”(hŒ ``_dsi1``”h]”jˆ )�”}”(hjHhh]”hŒ_dsi1”…”�”}”(hjJhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjFhubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´MhjBhubjž )�”}”(hhh]”hÎ)�”}”(hŒ1First DSI interface to act as recipient of packet”h]”hŒ1First DSI interface to act as recipient of packet”…”�”}”(hjahh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j]hh´Mhj^hubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjBhubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j]hh´Mhjhubj| )�”}”(hŒ=``_dsi2`` Second DSI interface to act as recipient of packet ”h]”(j‚ )�”}”(hŒ ``_dsi2``”h]”jˆ )�”}”(hj�hh]”hŒ_dsi2”…”�”}”(hjƒhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjhubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´Mhj{hubjž )�”}”(hhh]”hÎ)�”}”(hŒ2Second DSI interface to act as recipient of packet”h]”hŒ2Second DSI interface to act as recipient of packet”…”�”}”(hjšhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j–hh´Mhj—hubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj{hubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j–hh´Mhjhubj| )�”}”(hŒ``_cmd`` Command ”h]”(j‚ )�”}”(hŒ``_cmd``”h]”jˆ )�”}”(hjºhh]”hŒ_cmd”…”�”}”(hj¼hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¸hubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´Mhj´hubjž )�”}”(hhh]”hÎ)�”}”(hŒCommand”h]”hŒCommand”…”�”}”(hjÓhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÏhh´MhjÐhubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj´hubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÏhh´Mhjhubj| )�”}”(hŒ*``_seq...`` buffer containing the payload ”h]”(j‚ )�”}”(hŒ ``_seq...``”h]”jˆ )�”}”(hjóhh]”hŒ_seq...”…”�”}”(hjõhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjñhubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´Mhjíhubjž )�”}”(hhh]”hÎ)�”}”(hŒbuffer containing the payload”h]”hŒbuffer containing the payload”…”�”}”(hj ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jih´Mhj iubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjíhubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jih´Mhjhubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjêgubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj.ih]”hŒ Description”…”�”}”(hj0ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj,iubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´M hjêgubhÎ)�”}”(hŒÛThis macro will send the specified DCS command with payload twice, once per each of the two interfaces supplied. This is useful for reducing duplication of code in panel drivers which use two parallel serial interfaces.”h]”hŒÛThis macro will send the specified DCS command with payload twice, once per each of the two interfaces supplied. This is useful for reducing duplication of code in panel drivers which use two parallel serial interfaces.”…”�”}”(hjDih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´MhjêgubhÎ)�”}”(hŒ‘Note that if an error occurs while transmitting the payload to the first DSI interface, the payload will not be sent to the second DSI interface.”h]”hŒ‘Note that if an error occurs while transmitting the payload to the first DSI interface, the payload will not be sent to the second DSI interface.”…”�”}”(hjSih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´MhjêgubhÎ)�”}”(hŒxThis macro will print errors for you and error handling is optimized for callers that call this multiple times in a row.”h]”hŒxThis macro will print errors for you and error handling is optimized for callers that call this multiple times in a row.”…”�”}”(hjbih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´Mhjêgubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj³Mh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œmipi_dsi_driver (C struct)”Œc.mipi_dsi_driver”hNt”auh1j† hj³Mh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒmipi_dsi_driver”h]”j¤ )�”}”(hŒstruct mipi_dsi_driver”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj‘ih²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj�ih²hh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸih²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj�ih²hh³jžih´MubjÍ )�”}”(hŒmipi_dsi_driver”h]”jÓ )�”}”(hj‹ih]”hŒmipi_dsi_driver”…”�”}”(hj±ih²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj­iubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj�ih²hh³jžih´Mubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj‰ih²hh³jžih´Mubah}”(h]”j„iah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jžih´Mhj†ih²hubj )�”}”(hhh]”hÎ)�”}”(hŒ DSI driver”h]”hŒ DSI driver”…”�”}”(hjÓih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´M(hjÐih²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj†ih²hh³jžih´Mubeh}”(h]”h ]”(j Œstruct”eh"]”h$]”h&]”j" j j# jëij$ jëij% ‰j& ‰j' ‰uh1j˜ h²hhj³Mh³Nh´Nubj) )�”}”(hXµ**Definition**:: struct mipi_dsi_driver { struct device_driver driver; int(*probe)(struct mipi_dsi_device *dsi); void (*remove)(struct mipi_dsi_device *dsi); void (*shutdown)(struct mipi_dsi_device *dsi); }; **Members** ``driver`` device driver model driver ``probe`` callback for device binding ``remove`` callback for device unbinding ``shutdown`` called at shutdown time to quiesce the device”h]”(hÎ)�”}”(hŒ**Definition**::”h]”(j3 )�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj÷ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjóiubhŒ:”…”�”}”(hjóih²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´M,hjïiubjN )�”}”(hŒÎstruct mipi_dsi_driver { struct device_driver driver; int(*probe)(struct mipi_dsi_device *dsi); void (*remove)(struct mipi_dsi_device *dsi); void (*shutdown)(struct mipi_dsi_device *dsi); };”h]”hŒÎstruct mipi_dsi_driver { struct device_driver driver; int(*probe)(struct mipi_dsi_device *dsi); void (*remove)(struct mipi_dsi_device *dsi); void (*shutdown)(struct mipi_dsi_device *dsi); };”…”�”}”hjjsbah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jM h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´M.hjïiubhÎ)�”}”(hŒ **Members**”h]”j3 )�”}”(hj!jh]”hŒMembers”…”�”}”(hj#jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´M5hjïiubjw )�”}”(hhh]”(j| )�”}”(hŒ&``driver`` device driver model driver ”h]”(j‚ )�”}”(hŒ ``driver``”h]”jˆ )�”}”(hj@jh]”hŒdriver”…”�”}”(hjBjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj>jubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´M*hj:jubjž )�”}”(hhh]”hÎ)�”}”(hŒdevice driver model driver”h]”hŒdevice driver model driver”…”�”}”(hjYjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jUjh´M*hjVjubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj:jubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jUjh´M*hj7jubj| )�”}”(hŒ&``probe`` callback for device binding ”h]”(j‚ )�”}”(hŒ ``probe``”h]”jˆ )�”}”(hjyjh]”hŒprobe”…”�”}”(hj{jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjwjubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´M+hjsjubjž )�”}”(hhh]”hÎ)�”}”(hŒcallback for device binding”h]”hŒcallback for device binding”…”�”}”(hj’jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jŽjh´M+hj�jubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjsjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jŽjh´M+hj7jubj| )�”}”(hŒ)``remove`` callback for device unbinding ”h]”(j‚ )�”}”(hŒ ``remove``”h]”jˆ )�”}”(hj²jh]”hŒremove”…”�”}”(hj´jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj°jubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´M,hj¬jubjž )�”}”(hhh]”hÎ)�”}”(hŒcallback for device unbinding”h]”hŒcallback for device unbinding”…”�”}”(hjËjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÇjh´M,hjÈjubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¬jubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÇjh´M,hj7jubj| )�”}”(hŒ:``shutdown`` called at shutdown time to quiesce the device”h]”(j‚ )�”}”(hŒ ``shutdown``”h]”jˆ )�”}”(hjëjh]”hŒshutdown”…”�”}”(hjíjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjéjubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´M,hjåjubjž )�”}”(hhh]”hÎ)�”}”(hŒ-called at shutdown time to quiesce the device”h]”hŒ-called at shutdown time to quiesce the device”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:353: ./include/drm/drm_mipi_dsi.h”h´M-hjkubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjåjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jkh´M,hj7jubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjïiubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj³Mh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ,of_find_mipi_dsi_device_by_node (C function)”Œ!c.of_find_mipi_dsi_device_by_node”hNt”auh1j† hj³Mh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒQstruct mipi_dsi_device * of_find_mipi_dsi_device_by_node (struct device_node *np)”h]”j¤ )�”}”(hŒOstruct mipi_dsi_device *of_find_mipi_dsi_device_by_node(struct device_node *np)”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjEkh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjAkh²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Khubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSkh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjAkh²hh³jRkh´Khubh)�”}”(hhh]”jÓ )�”}”(hŒmipi_dsi_device”h]”hŒmipi_dsi_device”…”�”}”(hjdkh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjakubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jfkŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jŒof_find_mipi_dsi_device_by_node”sbŒ!c.of_find_mipi_dsi_device_by_node”†”asbuh1hhjAkh²hh³jRkh´Khubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…kh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjAkh²hh³jRkh´Khubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj“kh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjAkh²hh³jRkh´KhubjÍ )�”}”(hŒof_find_mipi_dsi_device_by_node”h]”jÓ )�”}”(hj‚kh]”hŒof_find_mipi_dsi_device_by_node”…”�”}”(hj¤kh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj kubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjAkh²hh³jRkh´KhubjÞ)�”}”(hŒ(struct device_node *np)”h]”jä)�”}”(hŒstruct device_node *np”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj¿kh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj»kubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌkh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj»kubh)�”}”(hhh]”jÓ )�”}”(hŒ device_node”h]”hŒ device_node”…”�”}”(hjÝkh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÚkubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jßkŒmodname”NŒ classname”Njé jì )�”}”jï ]”j€kŒ!c.of_find_mipi_dsi_device_by_node”†”asbuh1hhj»kubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjûkh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj»kubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj lh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj»kubjÓ )�”}”(hŒnp”h]”hŒnp”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj»kubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj·kubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjAkh²hh³jRkh´Khubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj=kh²hh³jRkh´Khubah}”(h]”j8kah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jRkh´Khhj:kh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ4find the MIPI DSI device matching a device tree node”h]”hŒ4find the MIPI DSI device matching a device tree node”…”�”}”(hj@lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Khhj=lh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj:kh²hh³jRkh´Khubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jXlj$ jXlj% ‰j& ‰j' ‰uh1j˜ h²hhj³Mh³Nh´Nubj) )�”}”(hŒÆ**Parameters** ``struct device_node *np`` device tree node **Return** A pointer to the MIPI DSI device corresponding to **np** or NULL if no such device exists (or has not been registered yet).”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjblh]”hŒ Parameters”…”�”}”(hjdlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj`lubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Klhj\lubjw )�”}”(hhh]”j| )�”}”(hŒ,``struct device_node *np`` device tree node ”h]”(j‚ )�”}”(hŒ``struct device_node *np``”h]”jˆ )�”}”(hj�lh]”hŒstruct device_node *np”…”�”}”(hjƒlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjlubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Kjhj{lubjž )�”}”(hhh]”hÎ)�”}”(hŒdevice tree node”h]”hŒdevice tree node”…”�”}”(hjšlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j–lh´Kjhj—lubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj{lubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j–lh´Kjhjxlubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj\lubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj¼lh]”hŒReturn”…”�”}”(hj¾lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjºlubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Klhj\lubhÎ)�”}”(hŒ{A pointer to the MIPI DSI device corresponding to **np** or NULL if no such device exists (or has not been registered yet).”h]”(hŒ2A pointer to the MIPI DSI device corresponding to ”…”�”}”(hjÒlh²hh³Nh´Nubj3 )�”}”(hŒ**np**”h]”hŒnp”…”�”}”(hjÚlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÒlubhŒC or NULL if no such device exists (or has not been registered yet).”…”�”}”(hjÒlh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Klhj\lubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj³Mh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ*mipi_dsi_device_register_full (C function)”Œc.mipi_dsi_device_register_full”hNt”auh1j† hj³Mh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ|struct mipi_dsi_device * mipi_dsi_device_register_full (struct mipi_dsi_host *host, const struct mipi_dsi_device_info *info)”h]”j¤ )�”}”(hŒzstruct mipi_dsi_device *mipi_dsi_device_register_full(struct mipi_dsi_host *host, const struct mipi_dsi_device_info *info)”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjmh²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´KÂubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!mh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjmh²hh³j mh´KÂubh)�”}”(hhh]”jÓ )�”}”(hŒmipi_dsi_device”h]”hŒmipi_dsi_device”…”�”}”(hj2mh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj/mubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j4mŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jŒmipi_dsi_device_register_full”sbŒc.mipi_dsi_device_register_full”†”asbuh1hhjmh²hh³j mh´KÂubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSmh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjmh²hh³j mh´KÂubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjamh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjmh²hh³j mh´KÂubjÍ )�”}”(hŒmipi_dsi_device_register_full”h]”jÓ )�”}”(hjPmh]”hŒmipi_dsi_device_register_full”…”�”}”(hjrmh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjnmubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjmh²hh³j mh´KÂubjÞ)�”}”(hŒE(struct mipi_dsi_host *host, const struct mipi_dsi_device_info *info)”h]”(jä)�”}”(hŒstruct mipi_dsi_host *host”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj�mh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj‰mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjšmh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj‰mubh)�”}”(hhh]”jÓ )�”}”(hŒ mipi_dsi_host”h]”hŒ mipi_dsi_host”…”�”}”(hj«mh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¨mubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j­mŒmodname”NŒ classname”Njé jì )�”}”jï ]”jNmŒc.mipi_dsi_device_register_full”†”asbuh1hhj‰mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉmh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj‰mubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj×mh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‰mubjÓ )�”}”(hŒhost”h]”hŒhost”…”�”}”(hjämh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj‰mubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj…mubjä)�”}”(hŒ'const struct mipi_dsi_device_info *info”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hjýmh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjùmubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj nh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjùmubjª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjùmubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%nh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjùmubh)�”}”(hhh]”jÓ )�”}”(hŒmipi_dsi_device_info”h]”hŒmipi_dsi_device_info”…”�”}”(hj6nh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj3nubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j8nŒmodname”NŒ classname”Njé jì )�”}”jï ]”jNmŒc.mipi_dsi_device_register_full”†”asbuh1hhjùmubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTnh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjùmubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjbnh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjùmubjÓ )�”}”(hŒinfo”h]”hŒinfo”…”�”}”(hjonh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjùmubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj…mubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjmh²hh³j mh´KÂubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj mh²hh³j mh´KÂubah}”(h]”jmah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j mh´KÂhjmh²hubj )�”}”(hhh]”hÎ)�”}”(hŒcreate a MIPI DSI device”h]”hŒcreate a MIPI DSI device”…”�”}”(hj™nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´KÂhj–nh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjmh²hh³j mh´KÂubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j±nj$ j±nj% ‰j& ‰j' ‰uh1j˜ h²hhj³Mh³Nh´Nubj) )�”}”(hX–**Parameters** ``struct mipi_dsi_host *host`` DSI host to which this device is connected ``const struct mipi_dsi_device_info *info`` pointer to template containing DSI device information **Description** Create a MIPI DSI device by using the device information provided by mipi_dsi_device_info template **Return** A pointer to the newly created MIPI DSI device, or, a pointer encoded with an error”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj»nh]”hŒ Parameters”…”�”}”(hj½nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¹nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´KÆhjµnubjw )�”}”(hhh]”(j| )�”}”(hŒJ``struct mipi_dsi_host *host`` DSI host to which this device is connected ”h]”(j‚ )�”}”(hŒ``struct mipi_dsi_host *host``”h]”jˆ )�”}”(hjÚnh]”hŒstruct mipi_dsi_host *host”…”�”}”(hjÜnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjØnubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´KÃhjÔnubjž )�”}”(hhh]”hÎ)�”}”(hŒ*DSI host to which this device is connected”h]”hŒ*DSI host to which this device is connected”…”�”}”(hjónh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jïnh´KÃhjðnubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÔnubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jïnh´KÃhjÑnubj| )�”}”(hŒb``const struct mipi_dsi_device_info *info`` pointer to template containing DSI device information ”h]”(j‚ )�”}”(hŒ+``const struct mipi_dsi_device_info *info``”h]”jˆ )�”}”(hjoh]”hŒ'const struct mipi_dsi_device_info *info”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjoubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´KÄhj oubjž )�”}”(hhh]”hÎ)�”}”(hŒ5pointer to template containing DSI device information”h]”hŒ5pointer to template containing DSI device information”…”�”}”(hj,oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j(oh´KÄhj)oubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj oubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j(oh´KÄhjÑnubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjµnubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjNoh]”hŒ Description”…”�”}”(hjPoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjLoubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´KÆhjµnubhÎ)�”}”(hŒbCreate a MIPI DSI device by using the device information provided by mipi_dsi_device_info template”h]”hŒbCreate a MIPI DSI device by using the device information provided by mipi_dsi_device_info template”…”�”}”(hjdoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´KÅhjµnubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjuoh]”hŒReturn”…”�”}”(hjwoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjsoubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´KÈhjµnubhÎ)�”}”(hŒSA pointer to the newly created MIPI DSI device, or, a pointer encoded with an error”h]”hŒSA pointer to the newly created MIPI DSI device, or, a pointer encoded with an error”…”�”}”(hj‹oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´KÉhjµnubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj³Mh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ'mipi_dsi_device_unregister (C function)”Œc.mipi_dsi_device_unregister”hNt”auh1j† hj³Mh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ=void mipi_dsi_device_unregister (struct mipi_dsi_device *dsi)”h]”j¤ )�”}”(hŒ{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M¬hjVzubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj³Mh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ,mipi_dsi_packet_format_is_short (C function)”Œ!c.mipi_dsi_packet_format_is_short”hNt”auh1j† hj³Mh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ.bool mipi_dsi_packet_format_is_short (u8 type)”h]”j¤ )�”}”(hŒ-bool mipi_dsi_packet_format_is_short(u8 type)”h]”(j¦)�”}”(hj£Ih]”hŒbool”…”�”}”(hjm{h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hji{h²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MÏubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{{h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hji{h²hh³jz{h´MÏubjÍ )�”}”(hŒmipi_dsi_packet_format_is_short”h]”jÓ )�”}”(hŒmipi_dsi_packet_format_is_short”h]”hŒmipi_dsi_packet_format_is_short”…”�”}”(hj�{h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj‰{ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hji{h²hh³jz{h´MÏubjÞ)�”}”(hŒ (u8 type)”h]”jä)�”}”(hŒu8 type”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(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%)�”}”jj�{sbŒ!c.mipi_dsi_packet_format_is_short”†”asbuh1hhj¥{ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌ{h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¥{ubjÓ )�”}”(hŒtype”h]”hŒtype”…”�”}”(hjÚ{h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¥{ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¡{ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhji{h²hh³jz{h´MÏubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hje{h²hh³jz{h´MÏubah}”(h]”j`{ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jz{h´MÏhjb{h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ(check if a packet is of the short format”h]”hŒ(check if a packet is of the short format”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MÏhj|h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjb{h²hh³jz{h´MÏubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j|j$ j|j% ‰j& ‰j' ‰uh1j˜ h²hhj³Mh³Nh´Nubj) )�”}”(hŒš**Parameters** ``u8 type`` MIPI DSI data type of the packet **Return** true if the packet for the given data type is a short packet, false otherwise.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj&|h]”hŒ Parameters”…”�”}”(hj(|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj$|ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MÓhj |ubjw )�”}”(hhh]”j| )�”}”(hŒ-``u8 type`` MIPI DSI data type of the packet ”h]”(j‚ )�”}”(hŒ ``u8 type``”h]”jˆ )�”}”(hjE|h]”hŒu8 type”…”�”}”(hjG|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjC|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MÐhj?|ubjž )�”}”(hhh]”hÎ)�”}”(hŒ MIPI DSI data type of the packet”h]”hŒ MIPI DSI data type of the packet”…”�”}”(hj^|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jZ|h´MÐhj[|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj?|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jZ|h´MÐhj<|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj |ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj€|h]”hŒReturn”…”�”}”(hj‚|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj~|ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MÒhj |ubhÎ)�”}”(hŒNtrue if the packet for the given data type is a short packet, false otherwise.”h]”hŒNtrue if the packet for the given data type is a short packet, false otherwise.”…”�”}”(hj–|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MÒhj |ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj³Mh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ+mipi_dsi_packet_format_is_long (C function)”Œ c.mipi_dsi_packet_format_is_long”hNt”auh1j† hj³Mh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ-bool mipi_dsi_packet_format_is_long (u8 type)”h]”j¤ )�”}”(hŒ,bool mipi_dsi_packet_format_is_long(u8 type)”•h]”(j¦)�”}”(hj£Ih]”hŒbool”…”�”}”(hjÅ|h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjÁ|h²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.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Œmipi_dsi_packet_format_is_long”h]”jÓ )�”}”(hŒmipi_dsi_packet_format_is_long”h]”hŒmipi_dsi_packet_format_is_long”…”�”}”(hjå|h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjá|ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÁ|h²hh³jÒ|h´MõubjÞ)�”}”(hŒ (u8 type)”h]”jä)�”}”(hŒu8 type”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(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%)�”}”jjç|sbŒ c.mipi_dsi_packet_format_is_long”†”asbuh1hhjý|ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$}h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjý|ubjÓ )�”}”(hŒtype”h]”hŒtype”…”�”}”(hj2}h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjý|ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjù|ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjÁ|h²hh³jÒ|h´Mõubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ'check if a packet is of the long format”h]”hŒ'check if a packet is of the long format”…”�”}”(hj\}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MõhjY}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# jt}j$ jt}j% ‰j& ‰j' ‰uh1j˜ h²hhj³Mh³Nh´Nubj) )�”}”(hŒ™**Parameters** ``u8 type`` MIPI DSI data type of the packet **Return** true if the packet for the given data type is a long packet, false otherwise.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj~}h]”hŒ Parameters”…”�”}”(hj€}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj|}ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Mùhjx}ubjw )�”}”(hhh]”j| )�”}”(hŒ-``u8 type`` MIPI DSI data type of the packet ”h]”(j‚ )�”}”(hŒ ``u8 type``”h]”jˆ )�”}”(hj�}h]”hŒu8 type”…”�”}”(hjŸ}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj›}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Möhj—}ubjž )�”}”(hhh]”hÎ)�”}”(hŒ MIPI DSI data type of the packet”h]”hŒ MIPI DSI data type of the packet”…”�”}”(hj¶}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j²}h´Möhj³}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj—}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j²}h´Möhj”}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjx}ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjØ}h]”hŒReturn”…”�”}”(hjÚ}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÖ}ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Møhjx}ubhÎ)�”}”(hŒMtrue if the packet for the given data type is a long packet, false otherwise.”h]”hŒMtrue if the packet for the given data type is a long packet, false otherwise.”…”�”}”(hjî}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Møhjx}ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj³Mh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ#mipi_dsi_create_packet (C function)”Œc.mipi_dsi_create_packet”hNt”auh1j† hj³Mh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ[int mipi_dsi_create_packet (struct mipi_dsi_packet *packet, const struct mipi_dsi_msg *msg)”h]”j¤ )�”}”(hŒZint mipi_dsi_create_packet(struct mipi_dsi_packet *packet, const struct mipi_dsi_msg *msg)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj~h²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,~h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj~h²hh³j+~h´MubjÍ )�”}”(hŒmipi_dsi_create_packet”h]”jÓ )�”}”(hŒmipi_dsi_create_packet”h]”hŒmipi_dsi_create_packet”…”�”}”(hj>~h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj:~ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj~h²hh³j+~h´MubjÞ)�”}”(hŒ@(struct mipi_dsi_packet *packet, const struct mipi_dsi_msg *msg)”h]”(jä)�”}”(hŒstruct mipi_dsi_packet *packet”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjZ~h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjV~ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjg~h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjV~ubh)�”}”(hhh]”jÓ )�”}”(hŒmipi_dsi_packet”h]”hŒmipi_dsi_packet”…”�”}”(hjx~h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hju~ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jz~Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj@~sbŒc.mipi_dsi_create_packet”†”asbuh1hhjV~ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜~h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjV~ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj¦~h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjV~ubjÓ )�”}”(hŒpacket”h]”hŒpacket”…”�”}”(hj³~h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjV~ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjR~ubjä)�”}”(hŒconst struct mipi_dsi_msg *msg”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(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Œ mipi_dsi_msg”h]”hŒ mipi_dsi_msg”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jŒmodname”NŒ classname”Njé jì )�”}”jï ]”j”~Œc.mipi_dsi_create_packet”†”asbuh1hhjÈ~ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÈ~ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÈ~ubjÓ )�”}”(hŒmsg”h]”hŒmsg”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÈ~ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjR~ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj~h²hh³j+~h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj~h²hh³j+~h´Mubah}”(h]”j~ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j+~h´Mhj~h²hubj )�”}”(hhh]”hÎ)�”}”(hŒint mipi_dsi_shutdown_peripheral (struct mipi_dsi_device *dsi)”h]”j¤ )�”}”(hŒ=int mipi_dsi_shutdown_peripheral(struct mipi_dsi_device *dsi)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjb€h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj^€h²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MKubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjq€h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj^€h²hh³jp€h´MKubjÍ )�”}”(hŒmipi_dsi_shutdown_peripheral”h]”jÓ )�”}”(hŒmipi_dsi_shutdown_peripheral”h]”hŒmipi_dsi_shutdown_peripheral”…”�”}”(hjƒ€h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj€ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj^€h²hh³jp€h´MKubjÞ)�”}”(hŒ(struct mipi_dsi_device *dsi)”h]”jä)�”}”(hŒstruct mipi_dsi_device *dsi”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Œmipi_dsi_device”h]”hŒmipi_dsi_device”…”�”}”(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%)�”}”jj…€sbŒc.mipi_dsi_shutdown_peripheral”†”asbuh1hhj›€ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝ€h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj›€ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjë€h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj›€ubjÓ )�”}”(hŒdsi”h]”hŒdsi”…”�”}”(hjø€h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj›€ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj—€ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj^€h²hh³jp€h´MKubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjZ€h²hh³jp€h´MKubah}”(h]”jU€ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jp€h´MKhjW€h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ#sends a Shutdown Peripheral command”h]”hŒ#sends a Shutdown Peripheral command”…”�”}”(hj"�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MKhj�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjW€h²hh³jp€h´MKubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j:�j$ j:�j% ‰j& ‰j' ‰uh1j˜ h²hhj³Mh³Nh´Nubj) )�”}”(hŒç**Parameters** ``struct mipi_dsi_device *dsi`` DSI peripheral device **Description** This function is deprecated. Use mipi_dsi_shutdown_peripheral_multi() instead. **Return** 0 on success or a negative error code on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjD�h]”hŒ Parameters”…”�”}”(hjF�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjB�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MOhj>�ubjw )�”}”(hhh]”j| )�”}”(hŒ6``struct mipi_dsi_device *dsi`` DSI peripheral device ”h]”(j‚ )�”}”(hŒ``struct mipi_dsi_device *dsi``”h]”jˆ )�”}”(hjc�h]”hŒstruct mipi_dsi_device *dsi”…”�”}”(hje�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hja�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MLhj]�ubjž )�”}”(hhh]”hÎ)�”}”(hŒDSI peripheral device”h]”hŒDSI peripheral device”…”�”}”(hj|�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jx�h´MLhjy�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj]�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jx�h´MLhjZ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj>�ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjž�h]”hŒ Description”…”�”}”(hj �h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjœ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MNhj>�ubhÎ)�”}”(hŒNThis function is deprecated. Use mipi_dsi_shutdown_peripheral_multi() instead.”h]”hŒNThis function is deprecated. Use mipi_dsi_shutdown_peripheral_multi() instead.”…”�”}”(hj´�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MMhj>�ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjÅ�h]”hŒReturn”…”�”}”(hjÇ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÃ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MPhj>�ubhÎ)�”}”(hŒ10 on success or a negative error code on failure.”h]”hŒ10 on success or a negative error code on failure.”…”�”}”(hjÛ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MQhj>�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj³Mh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ(mipi_dsi_turn_on_peripheral (C function)”Œc.mipi_dsi_turn_on_peripheral”hNt”auh1j† hj³Mh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ=int mipi_dsi_turn_on_peripheral (struct mipi_dsi_device *dsi)”h]”j¤ )�”}”(hŒ—h]”hŒconst void *params”…”�”}”(hj@—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj<—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MAhj8—ubjž )�”}”(hhh]”hÎ)�”}”(hŒ(buffer containing the request parameters”h]”hŒ(buffer containing the request parameters”…”�”}”(hjW—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jS—h´MAhjT—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj8—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jS—h´MAhjü–ubj| )�”}”(hŒ3``size_t num_params`` number of request parameters ”h]”(j‚ )�”}”(hŒ``size_t num_params``”h]”jˆ )�”}”(hjw—h]”hŒsize_t num_params”…”�”}”(hjy—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hju—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MBhjq—ubjž )�”}”(hhh]”hÎ)�”}”(hŒnumber of request parameters”h]”hŒnumber of request parameters”…”�”}”(hj�—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jŒ—h´MBhj�—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjq—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jŒ—h´MBhjü–ubj| )�”}”(hŒ;``void *data`` buffer in which to return the received data ”h]”(j‚ )�”}”(hŒ``void *data``”h]”jˆ )�”}”(hj°—h]”hŒ void *data”…”�”}”(hj²—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj®—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MChjª—ubjž )�”}”(hhh]”hÎ)�”}”(hŒ+buffer in which to return the received data”h]”hŒ+buffer in which to return the received data”…”�”}”(hjÉ—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÅ—h´MChjÆ—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjª—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÅ—h´MChjü–ubj| )�”}”(hŒ'``size_t size`` size of receive buffer ”h]”(j‚ )�”}”(hŒ``size_t size``”h]”jˆ )�”}”(hjé—h]”hŒ size_t size”…”�”}”(hjë—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjç—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MDhjã—ubjž )�”}”(hhh]”hÎ)�”}”(hŒsize of receive buffer”h]”hŒsize of receive buffer”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jþ—h´MDhjÿ—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjã—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jþ—h´MDhjü–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjà–ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj$˜h]”hŒ Description”…”�”}”(hj&˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj"˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MFhjà–ubhÎ)�”}”(hŒlThis function will automatically choose the right data type depending on the number of parameters passed in.”h]”hŒlThis function will automatically choose the right data type depending on the number of parameters passed in.”…”�”}”(hj:˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MEhjà–ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjK˜h]”hŒReturn”…”�”}”(hjM˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjI˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MHhjà–ubhÎ)�”}”(hŒJThe number of bytes successfully read or a negative error code on failure.”h]”hŒJThe number of bytes successfully read or a negative error code on failure.”…”�”}”(hja˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MIhjà–ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj³Mh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ+drm_mipi_dsi_get_input_bus_fmt (C function)”Œ c.drm_mipi_dsi_get_input_bus_fmt”hNt”auh1j† hj³Mh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒJu32 drm_mipi_dsi_get_input_bus_fmt (enum mipi_dsi_pixel_format dsi_format)”h]”j¤ )�”}”(hŒIu32 drm_mipi_dsi_get_input_bus_fmt(enum mipi_dsi_pixel_format dsi_format)”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%)�”}”jŒdrm_mipi_dsi_get_input_bus_fmt”sbŒ c.drm_mipi_dsi_get_input_bus_fmt”†”asbuh1hhjŒ˜h²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Mmubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµ˜h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjŒ˜h²hh³j´˜h´MmubjÍ )�”}”(hŒdrm_mipi_dsi_get_input_bus_fmt”h]”jÓ )�”}”(hj±˜h]”hŒdrm_mipi_dsi_get_input_bus_fmt”…”�”}”(hjǘh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjØubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjŒ˜h²hh³j´˜h´MmubjÞ)�”}”(hŒ'(enum mipi_dsi_pixel_format dsi_format)”h]”jä)�”}”(hŒ%enum mipi_dsi_pixel_format dsi_format”h]”(jª )�”}”(hjÂ7h]”hŒenum”…”�”}”(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Œmipi_dsi_pixel_format”h]”hŒmipi_dsi_pixel_format”…”�”}”(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.drm_mipi_dsi_get_input_bus_fmt”†”asbuh1hhjÞ˜ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÞ˜ubjÓ )�”}”(hŒ dsi_format”h]”hŒ dsi_format”…”�”}”(hj,™h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÞ˜ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÚ˜ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjŒ˜h²hh³j´˜h´Mmubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjˆ˜h²hh³j´˜h´Mmubah}”(h]”jƒ˜ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j´˜h´Mmhj…˜h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ]Get the required MEDIA_BUS_FMT_* based input pixel format for a given DSI output pixel format”h]”hŒ]Get the required MEDIA_BUS_FMT_* based input pixel format for a given DSI output pixel format”…”�”}”(hjV™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MmhjS™h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj…˜h²hh³j´˜h´Mmubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jn™j$ jn™j% ‰j& ‰j' ‰uh1j˜ h²hhj³Mh³Nh´Nubj) )�”}”(hX’**Parameters** ``enum mipi_dsi_pixel_format dsi_format`` pixel format that a DSI host needs to output **Description** Various DSI hosts can use this function during their :c:type:`drm_bridge_funcs.atomic_get_input_bus_fmts ` operation to ascertain the MEDIA_BUS_FMT_* pixel format required as input. **Return** a 32-bit MEDIA_BUS_FMT_* value on success or 0 in case of failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjx™h]”hŒ Parameters”…”�”}”(hjz™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjv™ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Mqhjr™ubjw )�”}”(hhh]”j| )�”}”(hŒW``enum mipi_dsi_pixel_format dsi_format`` pixel format that a DSI host needs to output ”h]”(j‚ )�”}”(hŒ)``enum mipi_dsi_pixel_format dsi_format``”h]”jˆ )�”}”(hj—™h]”hŒ%enum mipi_dsi_pixel_format dsi_format”…”�”}”(hj™™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj•™ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Mphj‘™ubjž )�”}”(hhh]”hÎ)�”}”(hŒ,pixel format that a DSI host needs to output”h]”hŒ,pixel format that a DSI host needs to output”…”�”}”(hj°™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¬™h´Mphj­™ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj‘™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¬™h´MphjŽ™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjr™ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjÒ™h]”hŒ Description”…”�”}”(hjÔ™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjЙubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Mrhjr™ubhÎ)�”}”(hŒÇVarious DSI hosts can use this function during their :c:type:`drm_bridge_funcs.atomic_get_input_bus_fmts ` operation to ascertain the MEDIA_BUS_FMT_* pixel format required as input.”h]”(hŒ5Various DSI hosts can use this function during their ”…”�”}”(hjè™h²hh³Nh´Nubh)�”}”(hŒG:c:type:`drm_bridge_funcs.atomic_get_input_bus_fmts `”h]”jˆ )�”}”(hjò™h]”hŒ*drm_bridge_funcs.atomic_get_input_bus_fmts”…”�”}”(hjô™h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjð™ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Mqhjè™ubhŒK operation to ascertain the MEDIA_BUS_FMT_* pixel format required as input.”…”�”}”(hjè™h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jšh´Mqhjr™ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjšh]”hŒReturn”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjšubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Muhjr™ubhÎ)�”}”(hŒBa 32-bit MEDIA_BUS_FMT_* value on success or 0 in case of failure.”h]”hŒBa 32-bit MEDIA_BUS_FMT_* value on success or 0 in case of failure.”…”�”}”(hj2šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Mvhjr™ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj³Mh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ&mipi_dsi_dcs_write_buffer (C function)”Œc.mipi_dsi_dcs_write_buffer”hNt”auh1j† hj³Mh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ]ssize_t mipi_dsi_dcs_write_buffer (struct mipi_dsi_device *dsi, const void *data, size_t len)”h]”j¤ )�”}”(hŒ\ssize_t mipi_dsi_dcs_write_buffer(struct mipi_dsi_device *dsi, const void *data, size_t len)”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒssize_t”h]”hŒssize_t”…”�”}”(hjdšh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjašubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jfšŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jŒmipi_dsi_dcs_write_buffer”sbŒc.mipi_dsi_dcs_write_buffer”†”asbuh1hhj]šh²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.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Œmipi_dsi_dcs_write_buffer”h]”jÓ )�”}”(hj‚šh]”hŒmipi_dsi_dcs_write_buffer”…”�”}”(hj˜šh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj”šubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj]šh²hh³j…šh´M�ubjÞ)�”}”(hŒ;(struct mipi_dsi_device *dsi, const void *data, size_t len)”h]”(jä)�”}”(hŒstruct mipi_dsi_device *dsi”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Œmipi_dsi_device”h]”hŒmipi_dsi_device”…”�”}”(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.mipi_dsi_dcs_write_buffer”†”asbuh1hhj¯šubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïšh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¯šubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjýšh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¯šubjÓ )�”}”(hŒdsi”h]”hŒdsi”…”�”}”(hj ›h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¯šubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj«šubjä)�”}”(hŒconst void *data”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hj#›h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj›ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj0›h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj›ubj¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj>›h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj›ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjL›h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj›ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjZ›h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj›ubjÓ )�”}”(hŒdata”h]”hŒdata”…”�”}”(hjg›h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj›ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj«šubjä)�”}”(hŒ size_t len”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(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.mipi_dsi_dcs_write_buffer”†”asbuh1hhj|›ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡›h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj|›ubjÓ )�”}”(hŒlen”h]”hŒlen”…”�”}”(hj¯›h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj|›ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj«šubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj]šh²hh³j…šh´M�ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjYšh²hh³j…šh´M�ubah}”(h]”jTšah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j…šh´M�hjVšh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ#transmit a DCS command with payload”h]”hŒ#transmit a DCS command with payload”…”�”}”(hjÙ›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M�hjÖ›h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjVšh²hh³j…šh´M�ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jñ›j$ jñ›j% ‰j& ‰j' ‰uh1j˜ h²hhj³Mh³Nh´Nubj) )�”}”(hXŒ**Parameters** ``struct mipi_dsi_device *dsi`` DSI peripheral device ``const void *data`` buffer containing data to be transmitted ``size_t len`` size of transmission buffer **Description** This function will automatically choose the right data type depending on the command payload length. **Return** The number of bytes successfully transmitted or a negative error code on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjû›h]”hŒ Parameters”…”�”}”(hjý›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjù›ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M”hjõ›ubjw )�”}”(hhh]”(j| )�”}”(hŒ6``struct mipi_dsi_device *dsi`` DSI peripheral device ”h]”(j‚ )�”}”(hŒ``struct mipi_dsi_device *dsi``”h]”jˆ )�”}”(hjœh]”hŒstruct mipi_dsi_device *dsi”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjœubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M‘hjœubjž )�”}”(hhh]”hÎ)�”}”(hŒDSI peripheral device”h]”hŒDSI peripheral device”…”�”}”(hj3œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j/œh´M‘hj0œubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjœubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j/œh´M‘hjœubj| )�”}”(hŒ>``const void *data`` buffer containing data to be transmitted ”h]”(j‚ )�”}”(hŒ``const void *data``”h]”jˆ )�”}”(hjSœh]”hŒconst void *data”…”�”}”(hjUœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjQœubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M’hjMœubjž )�”}”(hhh]”hÎ)�”}”(hŒ(buffer containing data to be transmitted”h]”hŒ(buffer containing data to be transmitted”…”�”}”(hjlœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jhœh´M’hjiœubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjMœubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jhœh´M’hjœubj| )�”}”(hŒ+``size_t len`` size of transmission buffer ”h]”(j‚ )�”}”(hŒ``size_t len``”h]”jˆ )�”}”(hjŒœh]”hŒ size_t len”…”�”}”(hjŽœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjŠœubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M“hj†œubjž )�”}”(hhh]”hÎ)�”}”(hŒsize of transmission buffer”h]”hŒsize of transmission buffer”…”�”}”(hj¥œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¡œh´M“hj¢œubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj†œubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¡œh´M“hjœubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjõ›ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjÇœh]”hŒ Description”…”�”}”(hjÉœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÅœubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M•hjõ›ubhÎ)�”}”(hŒdThis function will automatically choose the right data type depending on the command payload length.”h]”hŒdThis function will automatically choose the right data type depending on the command payload length.”…”�”}”(hjÝœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M”hjõ›ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjîœh]”hŒReturn”…”�”}”(hjðœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjìœubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M—hjõ›ubhÎ)�”}”(hŒQThe number of bytes successfully transmitted or a negative error code on failure.”h]”hŒQThe number of bytes successfully transmitted or a negative error code on failure.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M˜hjõ›ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj³Mh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ-mipi_dsi_dcs_write_buffer_chatty (C function)”Œ"c.mipi_dsi_dcs_write_buffer_chatty”hNt”auh1j† hj³Mh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ`int mipi_dsi_dcs_write_buffer_chatty (struct mipi_dsi_device *dsi, const void *data, size_t len)”h]”j¤ )�”}”(hŒ_int mipi_dsi_dcs_write_buffer_chatty(struct mipi_dsi_device *dsi, const void *data, size_t len)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj3�h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj/�h²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Mºubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjB�h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj/�h²hh³jA�h´MºubjÍ )�”}”(hŒ mipi_dsi_dcs_write_buffer_chatty”h]”jÓ )�”}”(hŒ mipi_dsi_dcs_write_buffer_chatty”h]”hŒ mipi_dsi_dcs_write_buffer_chatty”…”�”}”(hjT�h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjP�ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj/�h²hh³jA�h´MºubjÞ)�”}”(hŒ;(struct mipi_dsi_device *dsi, const void *data, size_t len)”h]”(jä)�”}”(hŒstruct mipi_dsi_device *dsi”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjp�h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjl�ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}�h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjl�ubh)�”}”(hhh]”jÓ )�”}”(hŒmipi_dsi_device”h]”hŒmipi_dsi_device”…”�”}”(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%)�”}”jjV�sbŒ"c.mipi_dsi_dcs_write_buffer_chatty”†”asbuh1hhjl�ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®�h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjl�ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj¼�h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjl�ubjÓ )�”}”(hŒdsi”h]”hŒdsi”…”�”}”(hjÉ�h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjl�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjh�ubjä)�”}”(hŒconst void *data”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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Œvoid”h]”hŒvoid”…”�”}”(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Þ�ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÞ�ubjÓ )�”}”(hŒdata”h]”hŒdata”…”�”}”(hj&žh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÞ�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjh�ubjä)�”}”(hŒ size_t len”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjBžh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj?žubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jDžŒmodname”NŒ classname”Njé jì )�”}”jï ]”jª�Œ"c.mipi_dsi_dcs_write_buffer_chatty”†”asbuh1hhj;žubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`žh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj;žubjÓ )�”}”(hŒlen”h]”hŒlen”…”�”}”(hjnžh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj;žubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjh�ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj/�h²hh³jA�h´Mºubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj+�h²hh³jA�h´Mºubah}”(h]”j&�ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jA�h´Mºhj(�h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ+mipi_dsi_dcs_write_buffer() w/ an error log”h]”hŒ+mipi_dsi_dcs_write_buffer() w/ an error log”…”�”}”(hj˜žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Mºhj•žh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj(�h²hh³jA�h´Mºubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j°žj$ j°žj% ‰j& ‰j' ‰uh1j˜ h²hhj³Mh³Nh´Nubj) )�”}”(hXˆ**Parameters** ``struct mipi_dsi_device *dsi`` DSI peripheral device ``const void *data`` buffer containing data to be transmitted ``size_t len`` size of transmission buffer **Description** Like mipi_dsi_dcs_write_buffer() but includes a dev_err() call for you and returns 0 upon success, not the number of bytes sent. **Return** 0 on success or a negative error code on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjºžh]”hŒ Parameters”…”�”}”(hj¼žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¸žubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M¾hj´žubjw )�”}”(hhh]”(j| )�”}”(hŒ6``struct mipi_dsi_device *dsi`` DSI peripheral device ”h]”(j‚ )�”}”(hŒ``struct mipi_dsi_device *dsi``”h]”jˆ )�”}”(hjÙžh]”hŒstruct mipi_dsi_device *dsi”…”�”}”(hjÛžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjמubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M»hjÓžubjž )�”}”(hhh]”hÎ)�”}”(hŒDSI peripheral device”h]”hŒDSI peripheral device”…”�”}”(hjòžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jîžh´M»hjïžubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÓžubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jîžh´M»hjОubj| )�”}”(hŒ>``const void *data`` buffer containing data to be transmitted ”h]”(j‚ )�”}”(hŒ``const void *data``”h]”jˆ )�”}”(hjŸh]”hŒconst void *data”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M¼hj Ÿubjž )�”}”(hhh]”hÎ)�”}”(hŒ(buffer containing data to be transmitted”h]”hŒ(buffer containing data to be transmitted”…”�”}”(hj+Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j'Ÿh´M¼hj(Ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj Ÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j'Ÿh´M¼hjОubj| )�”}”(hŒ+``size_t len`` size of transmission buffer ”h]”(j‚ )�”}”(hŒ``size_t len``”h]”jˆ )�”}”(hjKŸh]”hŒ size_t len”…”�”}”(hjMŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjIŸubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M½hjEŸubjž )�”}”(hhh]”hÎ)�”}”(hŒsize of transmission buffer”h]”hŒsize of transmission buffer”…”�”}”(hjdŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j`Ÿh´M½hjaŸubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjEŸubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j`Ÿh´M½hjОubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj´žubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj†Ÿh]”hŒ Description”…”�”}”(hjˆŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj„Ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M¿hj´žubhÎ)�”}”(hŒ€Like mipi_dsi_dcs_write_buffer() but includes a dev_err() call for you and returns 0 upon success, not the number of bytes sent.”h]”hŒ€Like mipi_dsi_dcs_write_buffer() but includes a dev_err() call for you and returns 0 upon success, not the number of bytes sent.”…”�”}”(hjœŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M¾hj´žubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj­Ÿh]”hŒReturn”…”�”}”(hj¯Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj«Ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MÁhj´žubhÎ)�”}”(hŒ10 on success or a negative error code on failure.”h]”hŒ10 on success or a negative error code on failure.”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MÂhj´žubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj³Mh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ,mipi_dsi_dcs_write_buffer_multi (C function)”Œ!c.mipi_dsi_dcs_write_buffer_multi”hNt”auh1j† hj³Mh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒgvoid mipi_dsi_dcs_write_buffer_multi (struct mipi_dsi_multi_context *ctx, const void *data, size_t len)”h]”j¤ )�”}”(hŒfvoid mipi_dsi_dcs_write_buffer_multi(struct mipi_dsi_multi_context *ctx, const void *data, size_t len)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjòŸh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjîŸh²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.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Œmipi_dsi_dcs_write_buffer_multi”h]”jÓ )�”}”(hŒmipi_dsi_dcs_write_buffer_multi”h]”hŒmipi_dsi_dcs_write_buffer_multi”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjîŸh²hh³j h´MÖubjÞ)�”}”(hŒB(struct mipi_dsi_multi_context *ctx, const void *data, size_t len)”h]”(jä)�”}”(hŒ"struct mipi_dsi_multi_context *ctx”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Œmipi_dsi_multi_context”h]”hŒmipi_dsi_multi_context”…”�”}”(hjM h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjJ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jO Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj sbŒ!c.mipi_dsi_dcs_write_buffer_multi”†”asbuh1hhj+ ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjm h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj+ ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj{ h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj+ ubjÓ )�”}”(hŒctx”h]”hŒctx”…”�”}”(hjˆ h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj+ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj' ubjä)�”}”(hŒconst void *data”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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Œvoid”h]”hŒvoid”…”�”}”(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� ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjØ h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj� ubjÓ )�”}”(hŒdata”h]”hŒdata”…”�”}”(hjå h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj� ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj' ubjä)�”}”(hŒ size_t len”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(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ï ]”ji Œ!c.mipi_dsi_dcs_write_buffer_multi”†”asbuh1hhjú ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjú ubjÓ )�”}”(hŒlen”h]”hŒlen”…”�”}”(hj-¡h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjú ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj' ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjîŸh²hh³j h´MÖubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ/mipi_dsi_dcs_write_buffer_chatty() w/ accum_err”h]”hŒ/mipi_dsi_dcs_write_buffer_chatty() w/ accum_err”…”�”}”(hjW¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MÖhjT¡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# jo¡j$ jo¡j% ‰j& ‰j' ‰uh1j˜ h²hhj³Mh³Nh´Nubj) )�”}”(hX_**Parameters** ``struct mipi_dsi_multi_context *ctx`` Context for multiple DSI transactions ``const void *data`` buffer containing data to be transmitted ``size_t len`` size of transmission buffer **Description** Like mipi_dsi_dcs_write_buffer_chatty() but deals with errors in a way that makes it convenient to make several calls in a row.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjy¡h]”hŒ Parameters”…”�”}”(hj{¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjw¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MÚhjs¡ubjw )�”}”(hhh]”(j| )�”}”(hŒM``struct mipi_dsi_multi_context *ctx`` Context for multiple DSI transactions ”h]”(j‚ )�”}”(hŒ&``struct mipi_dsi_multi_context *ctx``”h]”jˆ )�”}”(hj˜¡h]”hŒ"struct mipi_dsi_multi_context *ctx”…”�”}”(hjš¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj–¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M×hj’¡ubjž )�”}”(hhh]”hÎ)�”}”(hŒ%Context for multiple DSI transactions”h]”hŒ%Context for multiple DSI transactions”…”�”}”(hj±¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j­¡h´M×hj®¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj’¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j­¡h´M×hj�¡ubj| )�”}”(hŒ>``const void *data`` buffer containing data to be transmitted ”h]”(j‚ )�”}”(hŒ``const void *data``”h]”jˆ )�”}”(hjÑ¡h]”hŒconst void *data”…”�”}”(hjÓ¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÏ¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MØhjË¡ubjž )�”}”(hhh]”hÎ)�”}”(hŒ(buffer containing data to be transmitted”h]”hŒ(buffer containing data to be transmitted”…”�”}”(hjê¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jæ¡h´MØhjç¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjË¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jæ¡h´MØhj�¡ubj| )�”}”(hŒ+``size_t len`` size of transmission buffer ”h]”(j‚ )�”}”(hŒ``size_t len``”h]”jˆ )�”}”(hj ¢h]”hŒ size_t len”…”�”}”(hj ¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MÙhj¢ubjž )�”}”(hhh]”hÎ)�”}”(hŒsize of transmission buffer”h]”hŒsize of transmission buffer”…”�”}”(hj#¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¢h´MÙhj ¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¢h´MÙhj�¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjs¡ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjE¢h]”hŒ Description”…”�”}”(hjG¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjC¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MÛhjs¡ubhÎ)�”}”(hŒLike mipi_dsi_dcs_write_buffer_chatty() but deals with errors in a way that makes it convenient to make several calls in a row.”h]”hŒLike mipi_dsi_dcs_write_buffer_chatty() but deals with errors in a way that makes it convenient to make several calls in a row.”…”�”}”(hj[¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MÚhjs¡ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj³Mh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ1mipi_dsi_dual_dcs_write_buffer_multi (C function)”Œ&c.mipi_dsi_dual_dcs_write_buffer_multi”hNt”auh1j† hj³Mh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ¨void mipi_dsi_dual_dcs_write_buffer_multi (struct mipi_dsi_multi_context *ctx, struct mipi_dsi_device *dsi1, struct mipi_dsi_device *dsi2, const void *data, size_t len)”h]”j¤ )�”}”(hŒ§void mipi_dsi_dual_dcs_write_buffer_multi(struct mipi_dsi_multi_context *ctx, struct mipi_dsi_device *dsi1, struct mipi_dsi_device *dsi2, const void *data, size_t len)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjŠ¢h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj†¢h²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.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Œ$mipi_dsi_dual_dcs_write_buffer_multi”h]”jÓ )�”}”(hŒ$mipi_dsi_dual_dcs_write_buffer_multi”h]”hŒ$mipi_dsi_dual_dcs_write_buffer_multi”…”�”}”(hj«¢h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj§¢ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj†¢h²hh³j˜¢h´MòubjÞ)�”}”(hŒ~(struct mipi_dsi_multi_context *ctx, struct mipi_dsi_device *dsi1, struct mipi_dsi_device *dsi2, const void *data, size_t len)”h]”(jä)�”}”(hŒ"struct mipi_dsi_multi_context *ctx”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Œmipi_dsi_multi_context”h]”hŒmipi_dsi_multi_context”…”�”}”(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%)�”}”jj­¢sbŒ&c.mipi_dsi_dual_dcs_write_buffer_multi”†”asbuh1hhjâubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjâubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjâubjÓ )�”}”(hŒctx”h]”hŒctx”…”�”}”(hj £h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjâubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¿¢ubjä)�”}”(hŒstruct mipi_dsi_device *dsi1”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj9£h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj5£ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjF£h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj5£ubh)�”}”(hhh]”jÓ )�”}”(hŒmipi_dsi_device”h]”hŒmipi_dsi_device”…”�”}”(hjW£h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjT£ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jY£Œmodname”NŒ classname”Njé jì )�”}”jï ]”j£Œ&c.mipi_dsi_dual_dcs_write_buffer_multi”†”asbuh1hhj5£ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hju£h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj5£ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjƒ£h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj5£ubjÓ )�”}”(hŒdsi1”h]”hŒdsi1”…”�”}”(hj�£h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj5£ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¿¢ubjä)�”}”(hŒstruct mipi_dsi_device *dsi2”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Œmipi_dsi_device”h]”hŒmipi_dsi_device”…”�”}”(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.mipi_dsi_dual_dcs_write_buffer_multi”†”asbuh1hhj¥£ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjå£h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¥£ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjó£h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¥£ubjÓ )�”}”(hŒdsi2”h]”hŒdsi2”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¥£ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¿¢ubjä)�”}”(hŒconst void *data”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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Œvoid”h]”hŒvoid”…”�”}”(hj4¤h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj¤ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjB¤h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¤ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjP¤h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¤ubjÓ )�”}”(hŒdata”h]”hŒdata”…”�”}”(hj]¤h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¤ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¿¢ubjä)�”}”(hŒ size_t len”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjy¤h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjv¤ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j{¤Œmodname”NŒ classname”Njé jì )�”}”jï ]”j£Œ&c.mipi_dsi_dual_dcs_write_buffer_multi”†”asbuh1hhjr¤ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—¤h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjr¤ubjÓ )�”}”(hŒlen”h]”hŒlen”…”�”}”(hj¥¤h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjr¤ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¿¢ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj†¢h²hh³j˜¢h´Mòubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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ŒKmipi_dsi_dcs_write_buffer_multi() for two dsi channels, one after the other”h]”hŒKmipi_dsi_dcs_write_buffer_multi() for two dsi channels, one after the other”…”�”}”(hjϤh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.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²hhj³Mh³Nh´Nubj) )�”}”(hXú**Parameters** ``struct mipi_dsi_multi_context *ctx`` Context for multiple DSI transactions ``struct mipi_dsi_device *dsi1`` First dsi channel to write buffer to ``struct mipi_dsi_device *dsi2`` Second dsi channel to write buffer to ``const void *data`` Buffer containing data to be transmitted ``size_t len`` Size of transmission buffer **Description** A wrapper around mipi_dsi_dcs_write_buffer_multi() that allows the user to conveniently write to two dsi channels, one after the other.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjñ¤h]”hŒ Parameters”…”�”}”(hjó¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjï¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Möhjë¤ubjw )�”}”(hhh]”(j| )�”}”(hŒM``struct mipi_dsi_multi_context *ctx`` Context for multiple DSI transactions ”h]”(j‚ )�”}”(hŒ&``struct mipi_dsi_multi_context *ctx``”h]”jˆ )�”}”(hj¥h]”hŒ"struct mipi_dsi_multi_context *ctx”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Môhj ¥ubjž )�”}”(hhh]”hÎ)�”}”(hŒ%Context for multiple DSI transactions”h]”hŒ%Context for multiple DSI transactions”…”�”}”(hj)¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j%¥h´Môhj&¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj ¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j%¥h´Môhj¥ubj| )�”}”(hŒF``struct mipi_dsi_device *dsi1`` First dsi channel to write buffer to ”h]”(j‚ )�”}”(hŒ ``struct mipi_dsi_device *dsi1``”h]”jˆ )�”}”(hjI¥h]”hŒstruct mipi_dsi_device *dsi1”…”�”}”(hjK¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjG¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MõhjC¥ubjž )�”}”(hhh]”hÎ)�”}”(hŒ$First dsi channel to write buffer to”h]”hŒ$First dsi channel to write buffer to”…”�”}”(hjb¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j^¥h´Mõhj_¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjC¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j^¥h´Mõhj¥ubj| )�”}”(hŒG``struct mipi_dsi_device *dsi2`` Second dsi channel to write buffer to ”h]”(j‚ )�”}”(hŒ ``struct mipi_dsi_device *dsi2``”h]”jˆ )�”}”(hj‚¥h]”hŒstruct mipi_dsi_device *dsi2”…”�”}”(hj„¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj€¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Möhj|¥ubjž )�”}”(hhh]”hÎ)�”}”(hŒ%Second dsi channel to write buffer to”h]”hŒ%Second dsi channel to write buffer to”…”�”}”(hj›¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j—¥h´Möhj˜¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj|¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j—¥h´Möhj¥ubj| )�”}”(hŒ>``const void *data`` Buffer containing data to be transmitted ”h]”(j‚ )�”}”(hŒ``const void *data``”h]”jˆ )�”}”(hj»¥h]”hŒconst void *data”…”�”}”(hj½¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¹¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M÷hjµ¥ubjž )�”}”(hhh]”hÎ)�”}”(hŒ(Buffer containing data to be transmitted”h]”hŒ(Buffer containing data to be transmitted”…”�”}”(hjÔ¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÐ¥h´M÷hjÑ¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjµ¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÐ¥h´M÷hj¥ubj| )�”}”(hŒ+``size_t len`` Size of transmission buffer ”h]”(j‚ )�”}”(hŒ``size_t len``”h]”jˆ )�”}”(hjô¥h]”hŒ size_t len”…”�”}”(hjö¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjò¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Møhjî¥ubjž )�”}”(hhh]”hÎ)�”}”(hŒSize of transmission buffer”h]”hŒSize of transmission buffer”…”�”}”(hj ¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j ¦h´Møhj ¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjî¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j ¦h´Møhj¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjë¤ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj/¦h]”hŒ Description”…”�”}”(hj1¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj-¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Múhjë¤ubhÎ)�”}”(hŒ‡A wrapper around mipi_dsi_dcs_write_buffer_multi() that allows the user to conveniently write to two dsi channels, one after the other.”h]”hŒ‡A wrapper around mipi_dsi_dcs_write_buffer_multi() that allows the user to conveniently write to two dsi channels, one after the other.”…”�”}”(hjE¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Mùhjë¤ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj³Mh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œmipi_dsi_dcs_write (C function)”Œc.mipi_dsi_dcs_write”hNt”auh1j† hj³Mh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ^ssize_t mipi_dsi_dcs_write (struct mipi_dsi_device *dsi, u8 cmd, const void *data, size_t len)”h]”j¤ )�”}”(hŒ]ssize_t mipi_dsi_dcs_write(struct mipi_dsi_device *dsi, u8 cmd, const void *data, size_t len)”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒssize_t”h]”hŒssize_t”…”�”}”(hjw¦h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjt¦ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jy¦Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jŒmipi_dsi_dcs_write”sbŒc.mipi_dsi_dcs_write”†”asbuh1hhjp¦h²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™¦h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjp¦h²hh³j˜¦h´M ubjÍ )�”}”(hŒmipi_dsi_dcs_write”h]”jÓ )�”}”(hj•¦h]”hŒmipi_dsi_dcs_write”…”�”}”(hj«¦h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj§¦ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjp¦h²hh³j˜¦h´M ubjÞ)�”}”(hŒC(struct mipi_dsi_device *dsi, u8 cmd, const void *data, size_t len)”h]”(jä)�”}”(hŒstruct mipi_dsi_device *dsi”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Œmipi_dsi_device”h]”hŒmipi_dsi_device”…”�”}”(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.mipi_dsi_dcs_write”†”asbuh1hhj¦ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¦ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¦ubjÓ )�”}”(hŒdsi”h]”hŒdsi”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¦ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¾¦ubjä)�”}”(hŒu8 cmd”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(hj9§h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj6§ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j;§Œmodname”NŒ classname”Njé jì )�”}”jï ]”j“¦Œc.mipi_dsi_dcs_write”†”asbuh1hhj2§ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjW§h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj2§ubjÓ )�”}”(hŒcmd”h]”hŒcmd”…”�”}”(hje§h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj2§ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¾¦ubjä)�”}”(hŒconst void *data”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hj~§h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjz§ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹§h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjz§ubj¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj™§h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjz§ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§§h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjz§ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjµ§h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjz§ubjÓ )�”}”(hŒdata”h]”hŒdata”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjz§ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¾¦ubjä)�”}”(hŒ size_t len”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(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.mipi_dsi_dcs_write”†”asbuh1hhj×§ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjü§h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj×§ubjÓ )�”}”(hŒlen”h]”hŒlen”…”�”}”(hj ¨h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj×§ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¾¦ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjp¦h²hh³j˜¦h´M ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô •$hjl¦h²hh³j˜¦h´M ubah}”(h]”jg¦ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j˜¦h´M hji¦h²hubj )�”}”(hhh]”hÎ)�”}”(hŒsend DCS write command”h]”hŒsend DCS write command”…”�”}”(hj4¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M hj1¨h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hji¦h²hh³j˜¦h´M ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jL¨j$ jL¨j% ‰j& ‰j' ‰uh1j˜ h²hhj³Mh³Nh´Nubj) )�”}”(hXž**Parameters** ``struct mipi_dsi_device *dsi`` DSI peripheral device ``u8 cmd`` DCS command ``const void *data`` buffer containing the command payload ``size_t len`` command payload length **Description** This function will automatically choose the right data type depending on the command payload length. **Return** The number of bytes successfully transmitted or a negative error code on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjV¨h]”hŒ Parameters”…”�”}”(hjX¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjT¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MhjP¨ubjw )�”}”(hhh]”(j| )�”}”(hŒ6``struct mipi_dsi_device *dsi`` DSI peripheral device ”h]”(j‚ )�”}”(hŒ``struct mipi_dsi_device *dsi``”h]”jˆ )�”}”(hju¨h]”hŒstruct mipi_dsi_device *dsi”…”�”}”(hjw¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjs¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M hjo¨ubjž )�”}”(hhh]”hÎ)�”}”(hŒDSI peripheral device”h]”hŒDSI peripheral device”…”�”}”(hjލh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jЍh´M hj‹¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjo¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jЍh´M hjl¨ubj| )�”}”(hŒ``u8 cmd`` DCS command ”h]”(j‚ )�”}”(hŒ ``u8 cmd``”h]”jˆ )�”}”(hj®¨h]”hŒu8 cmd”…”�”}”(hj°¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¬¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M hj¨¨ubjž )�”}”(hhh]”hÎ)�”}”(hŒ DCS command”h]”hŒ DCS command”…”�”}”(hjǨh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jèh´M hjĨubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¨¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jèh´M hjl¨ubj| )�”}”(hŒ;``const void *data`` buffer containing the command payload ”h]”(j‚ )�”}”(hŒ``const void *data``”h]”jˆ )�”}”(hjç¨h]”hŒconst void *data”…”�”}”(hjé¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjå¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M hjá¨ubjž )�”}”(hhh]”hÎ)�”}”(hŒ%buffer containing the command payload”h]”hŒ%buffer containing the command payload”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jü¨h´M hjý¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjá¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jü¨h´M hjl¨ubj| )�”}”(hŒ&``size_t len`` command payload length ”h]”(j‚ )�”}”(hŒ``size_t len``”h]”jˆ )�”}”(hj ©h]”hŒ size_t len”…”�”}”(hj"©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Mhj©ubjž )�”}”(hhh]”hÎ)�”}”(hŒcommand payload length”h]”hŒcommand payload length”…”�”}”(hj9©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j5©h´Mhj6©ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j5©h´Mhjl¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjP¨ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj[©h]”hŒ Description”…”�”}”(hj]©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjY©ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MhjP¨ubhÎ)�”}”(hŒdThis function will automatically choose the right data type depending on the command payload length.”h]”hŒdThis function will automatically choose the right data type depending on the command payload length.”…”�”}”(hjq©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MhjP¨ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj‚©h]”hŒReturn”…”�”}”(hj„©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj€©ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MhjP¨ubhÎ)�”}”(hŒQThe number of bytes successfully transmitted or a negative error code on failure.”h]”hŒQThe number of bytes successfully transmitted or a negative error code on failure.”…”�”}”(hj˜©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MhjP¨ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj³Mh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œmipi_dsi_dcs_read (C function)”Œc.mipi_dsi_dcs_read”hNt”auh1j† hj³Mh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒWssize_t mipi_dsi_dcs_read (struct mipi_dsi_device *dsi, u8 cmd, void *data, size_t len)”h]”j¤ )�”}”(hŒVssize_t mipi_dsi_dcs_read(struct mipi_dsi_device *dsi, u8 cmd, void *data, size_t len)”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒssize_t”h]”hŒssize_t”…”�”}”(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Œmipi_dsi_dcs_read”sbŒc.mipi_dsi_dcs_read”†”asbuh1hhjéh²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M6ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjì©h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjéh²hh³jë©h´M6ubjÍ )�”}”(hŒmipi_dsi_dcs_read”h]”jÓ )�”}”(hjè©h]”hŒmipi_dsi_dcs_read”…”�”}”(hjþ©h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjú©ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjéh²hh³jë©h´M6ubjÞ)�”}”(hŒ=(struct mipi_dsi_device *dsi, u8 cmd, void *data, size_t len)”h]”(jä)�”}”(hŒstruct mipi_dsi_device *dsi”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Œmipi_dsi_device”h]”hŒmipi_dsi_device”…”�”}”(hj7ªh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj4ªubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j9ªŒmodname”NŒ classname”Njé jì )�”}”jï ]”j橌c.mipi_dsi_dcs_read”†”asbuh1hhjªubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjUªh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjªubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjcªh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjªubjÓ )�”}”(hŒdsi”h]”hŒdsi”…”�”}”(hjpªh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjªubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjªubjä)�”}”(hŒu8 cmd”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(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.mipi_dsi_dcs_read”†”asbuh1hhj…ªubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªªh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj…ªubjÓ )�”}”(hŒcmd”h]”hŒcmd”…”�”}”(hj¸ªh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj…ªubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjªubjä)�”}”(hŒ void *data”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(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ͪubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjíªh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjͪubjÓ )�”}”(hŒdata”h]”hŒdata”…”�”}”(hjúªh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjͪubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjªubjä)�”}”(hŒ size_t len”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(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.mipi_dsi_dcs_read”†”asbuh1hhj«ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4«h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj«ubjÓ )�”}”(hŒlen”h]”hŒlen”…”�”}”(hjB«h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj«ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjªubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjéh²hh³jë©h´M6ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj¿©h²hh³jë©h´M6ubah}”(h]”jº©ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jë©h´M6hj¼©h²hubj )�”}”(hhh]”hÎ)�”}”(hŒsend DCS read request command”h]”hŒsend DCS read request command”…”�”}”(hjl«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M6hji«h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¼©h²hh³jë©h´M6ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j„«j$ j„«j% ‰j& ‰j' ‰uh1j˜ h²hhj³Mh³Nh´Nubj) )�”}”(hX**Parameters** ``struct mipi_dsi_device *dsi`` DSI peripheral device ``u8 cmd`` DCS command ``void *data`` buffer in which to receive data ``size_t len`` size of receive buffer **Return** The number of bytes read or a negative error code on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjŽ«h]”hŒ Parameters”…”�”}”(hj�«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjŒ«ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M:hjˆ«ubjw )�”}”(hhh]”(j| )�”}”(hŒ6``struct mipi_dsi_device *dsi`` DSI peripheral device ”h]”(j‚ )�”}”(hŒ``struct mipi_dsi_device *dsi``”h]”jˆ )�”}”(hj­«h]”hŒstruct mipi_dsi_device *dsi”…”�”}”(hj¯«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj««ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M7hj§«ubjž )�”}”(hhh]”hÎ)�”}”(hŒDSI peripheral device”h]”hŒDSI peripheral device”…”�”}”(hjÆ«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j«h´M7hjëubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj§«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j«h´M7hj¤«ubj| )�”}”(hŒ``u8 cmd`` DCS command ”h]”(j‚ )�”}”(hŒ ``u8 cmd``”h]”jˆ )�”}”(hjæ«h]”hŒu8 cmd”…”�”}”(hjè«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjä«ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M8hjà«ubjž )�”}”(hhh]”hÎ)�”}”(hŒ DCS command”h]”hŒ DCS command”…”�”}”(hjÿ«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jû«h´M8hjü«ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjà«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jû«h´M8hj¤«ubj| )�”}”(hŒ/``void *data`` buffer in which to receive data ”h]”(j‚ )�”}”(hŒ``void *data``”h]”jˆ )�”}”(hj¬h]”hŒ void *data”…”�”}”(hj!¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M9hj¬ubjž )�”}”(hhh]”hÎ)�”}”(hŒbuffer in which to receive data”h]”hŒbuffer in which to receive data”…”�”}”(hj8¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j4¬h´M9hj5¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j4¬h´M9hj¤«ubj| )�”}”(hŒ&``size_t len`` size of receive buffer ”h]”(j‚ )�”}”(hŒ``size_t len``”h]”jˆ )�”}”(hjX¬h]”hŒ size_t len”…”�”}”(hjZ¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjV¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M:hjR¬ubjž )�”}”(hhh]”hÎ)�”}”(hŒsize of receive buffer”h]”hŒsize of receive buffer”…”�”}”(hjq¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jm¬h´M:hjn¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjR¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jm¬h´M:hj¤«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjˆ«ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj“¬h]”hŒReturn”…”�”}”(hj•¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj‘¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M<hjˆ«ubhÎ)�”}”(hŒ=The number of bytes read or a negative error code on failure.”h]”hŒ=The number of bytes read or a negative error code on failure.”…”�”}”(hj©¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M<hjˆ«ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj³Mh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ$mipi_dsi_dcs_read_multi (C function)”Œc.mipi_dsi_dcs_read_multi”hNt”auh1j† hj³Mh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒavoid mipi_dsi_dcs_read_multi (struct mipi_dsi_multi_context *ctx, u8 cmd, void *data, size_t len)”h]”j¤ )�”}”(hŒ`void mipi_dsi_dcs_read_multi(struct mipi_dsi_multi_context *ctx, u8 cmd, void *data, size_t len)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjجh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjÔ¬h²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MOubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjç¬h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÔ¬h²hh³jæ¬h´MOubjÍ )�”}”(hŒmipi_dsi_dcs_read_multi”h]”jÓ )�”}”(hŒmipi_dsi_dcs_read_multi”h]”hŒmipi_dsi_dcs_read_multi”…”�”}”(hjù¬h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjõ¬ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÔ¬h²hh³jæ¬h´MOubjÞ)�”}”(hŒD(struct mipi_dsi_multi_context *ctx, u8 cmd, void *data, size_t len)”h]”(jä)�”}”(hŒ"struct mipi_dsi_multi_context *ctx”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Œmipi_dsi_multi_context”h]”hŒmipi_dsi_multi_context”…”�”}”(hj3­h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj0­ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j5­Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjû¬sbŒc.mipi_dsi_dcs_read_multi”†”asbuh1hhj­ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjS­h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj­ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hja­h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj­ubjÓ )�”}”(hŒctx”h]”hŒctx”…”�”}”(hjn­h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj­ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj ­ubjä)�”}”(hŒu8 cmd”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(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ï ]”jO­Œc.mipi_dsi_dcs_read_multi”†”asbuh1hhjƒ­ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨­h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjƒ­ubjÓ )�”}”(hŒcmd”h]”hŒcmd”…”�”}”(hj¶­h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjƒ­ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj ­ubjä)�”}”(hŒ void *data”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(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Ë­ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjë­h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjË­ubjÓ )�”}”(hŒdata”h]”hŒdata”…”�”}”(hjø­h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjË­ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj ­ubjä)�”}”(hŒ size_t len”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(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ï ]”jO­Œc.mipi_dsi_dcs_read_multi”†”asbuh1hhj ®ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2®h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj ®ubjÓ )�”}”(hŒlen”h]”hŒlen”…”�”}”(hj@®h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj ®ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj ­ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjÔ¬h²hh³jæ¬h´MOubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjЬh²hh³jæ¬h´MOubah}”(h]”jˬah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jæ¬h´MOhjͬh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ mipi_dsi_dcs_read() w/ accum_err”h]”hŒ mipi_dsi_dcs_read() w/ accum_err”…”�”}”(hjj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MOhjg®h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjͬh²hh³jæ¬h´MOubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j‚®j$ j‚®j% ‰j& ‰j' ‰uh1j˜ h²hhj³Mh³Nh´Nubj) )�”}”(hXV**Parameters** ``struct mipi_dsi_multi_context *ctx`` Context for multiple DSI transactions ``u8 cmd`` DCS command ``void *data`` buffer in which to receive data ``size_t len`` size of receive buffer **Description** Like mipi_dsi_dcs_read() but deals with errors in a way that makes it convenient to make several calls in a row.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjŒ®h]”hŒ Parameters”…”�”}”(hjŽ®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjŠ®ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MShj†®ubjw )�”}”(hhh]”(j| )�”}”(hŒM``struct mipi_dsi_multi_context *ctx`` Context for multiple DSI transactions ”h]”(j‚ )�”}”(hŒ&``struct mipi_dsi_multi_context *ctx``”h]”jˆ )�”}”(hj«®h]”hŒ"struct mipi_dsi_multi_context *ctx”…”�”}”(hj­®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj©®ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MPhj¥®ubjž )�”}”(hhh]”hÎ)�”}”(hŒ%Context for multiple DSI transactions”h]”hŒ%Context for multiple DSI transactions”…”�”}”(hjÄ®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÀ®h´MPhjÁ®ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¥®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÀ®h´MPhj¢®ubj| )�”}”(hŒ``u8 cmd`` DCS command ”h]”(j‚ )�”}”(hŒ ``u8 cmd``”h]”jˆ )�”}”(hjä®h]”hŒu8 cmd”…”�”}”(hjæ®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjâ®ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MQhjÞ®ubjž )�”}”(hhh]”hÎ)�”}”(hŒ DCS command”h]”hŒ DCS command”…”�”}”(hjý®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jù®h´MQhjú®ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÞ®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jù®h´MQhj¢®ubj| )�”}”(hŒ/``void *data`` buffer in which to receive data ”h]”(j‚ )�”}”(hŒ``void *data``”h]”jˆ )�”}”(hj¯h]”hŒ void *data”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MRhj¯ubjž )�”}”(hhh]”hÎ)�”}”(hŒbuffer in which to receive data”h]”hŒbuffer in which to receive data”…”�”}”(hj6¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j2¯h´MRhj3¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j2¯h´MRhj¢®ubj| )�”}”(hŒ&``size_t len`` size of receive buffer ”h]”(j‚ )�”}”(hŒ``size_t len``”h]”jˆ )�”}”(hjV¯h]”hŒ size_t len”…”�”}”(hjX¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjT¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MShjP¯ubjž )�”}”(hhh]”hÎ)�”}”(hŒsize of receive buffer”h]”hŒsize of receive buffer”…”�”}”(hjo¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jk¯h´MShjl¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjP¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jk¯h´MShj¢®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj†®ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj‘¯h]”hŒ Description”…”�”}”(hj“¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj�¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MUhj†®ubhÎ)�”}”(hŒpLike mipi_dsi_dcs_read() but deals with errors in a way that makes it convenient to make several calls in a row.”h]”hŒpLike mipi_dsi_dcs_read() but deals with errors in a way that makes it convenient to make several calls in a row.”…”�”}”(hj§¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MThj†®ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj³Mh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œmipi_dsi_dcs_nop (C function)”Œc.mipi_dsi_dcs_nop”hNt”auh1j† hj³Mh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ2int mipi_dsi_dcs_nop (struct mipi_dsi_device *dsi)”h]”j¤ )�”}”(hŒ1int mipi_dsi_dcs_nop(struct mipi_dsi_device *dsi)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjÖ¯h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjÒ¯h²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Mtubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjå¯h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÒ¯h²hh³jä¯h´MtubjÍ )�”}”(hŒmipi_dsi_dcs_nop”h]”jÓ )�”}”(hŒmipi_dsi_dcs_nop”h]”hŒmipi_dsi_dcs_nop”…”�”}”(hj÷¯h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjó¯ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÒ¯h²hh³jä¯h´MtubjÞ)�”}”(hŒ(struct mipi_dsi_device *dsi)”h]”jä)�”}”(hŒstruct mipi_dsi_device *dsi”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Œmipi_dsi_device”h]”hŒmipi_dsi_device”…”�”}”(hj1°h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj.°ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j3°Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjù¯sbŒc.mipi_dsi_dcs_nop”†”asbuh1hhj°ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQ°h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj°ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj_°h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj°ubjÓ )�”}”(hŒdsi”h]”hŒdsi”…”�”}”(hjl°h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj°ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj °ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjÒ¯h²hh³jä¯h´Mtubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjίh²hh³jä¯h´Mtubah}”(h]”jɯah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jä¯h´Mthj˯h²hubj )�”}”(hhh]”hÎ)�”}”(hŒsend DCS nop packet”h]”hŒsend DCS nop packet”…”�”}”(hj–°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Mthj“°h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj˯h²hh³jä¯h´Mtubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j®°j$ j®°j% ‰j& ‰j' ‰uh1j˜ h²hhj³Mh³Nh´Nubj) )�”}”(hŒÛ**Parameters** ``struct mipi_dsi_device *dsi`` DSI peripheral device **Description** This function is deprecated. Use mipi_dsi_dcs_nop_multi() instead. **Return** 0 on success or a negative error code on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj¸°h]”hŒ Parameters”…”�”}”(hjº°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¶°ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Mxhj²°ubjw )�”}”(hhh]”j| )�”}”(hŒ6``struct mipi_dsi_device *dsi`` DSI peripheral device ”h]”(j‚ )�”}”(hŒ``struct mipi_dsi_device *dsi``”h]”jˆ )�”}”(hj×°h]”hŒstruct mipi_dsi_device *dsi”…”�”}”(hjÙ°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÕ°ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MuhjѰubjž )�”}”(hhh]”hÎ)�”}”(hŒDSI peripheral device”h]”hŒDSI peripheral device”…”�”}”(hjð°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jì°h´Muhjí°ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjѰubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jì°h´Muhjΰubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj²°ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj±h]”hŒ Description”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj±ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Mwhj²°ubhÎ)�”}”(hŒBThis function is deprecated. Use mipi_dsi_dcs_nop_multi() instead.”h]”hŒBThis function is deprecated. Use mipi_dsi_dcs_nop_multi() instead.”…”�”}”(hj(±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Mvhj²°ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj9±h]”hŒReturn”…”�”}”(hj;±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj7±ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Mxhj²°ubhÎ)�”}”(hŒ10 on success or a negative error code on failure.”h]”hŒ10 on success or a negative error code on failure.”…”�”}”(hjO±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Myhj²°ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj³Mh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ$mipi_dsi_dcs_soft_reset (C function)”Œc.mipi_dsi_dcs_soft_reset”hNt”auh1j† hj³Mh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ9int mipi_dsi_dcs_soft_reset (struct mipi_dsi_device *dsi)”h]”j¤ )�”}”(hŒ8int mipi_dsi_dcs_soft_reset(struct mipi_dsi_device *dsi)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj~±h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjz±h²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Mˆubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�±h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjz±h²hh³jŒ±h´MˆubjÍ )�”}”(hŒmipi_dsi_dcs_soft_reset”h]”jÓ )�”}”(hŒmipi_dsi_dcs_soft_reset”h]”hŒmipi_dsi_dcs_soft_reset”…”�”}”(hjŸ±h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj›±ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjz±h²hh³jŒ±h´MˆubjÞ)�”}”(hŒ(struct mipi_dsi_device *dsi)”h]”jä)�”}”(hŒstruct mipi_dsi_device *dsi”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Œmipi_dsi_device”h]”hŒmipi_dsi_device”…”�”}”(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%)�”}”jj¡±sbŒc.mipi_dsi_dcs_soft_reset”†”asbuh1hhj·±ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjù±h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj·±ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj·±ubjÓ )�”}”(hŒdsi”h]”hŒdsi”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj·±ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj³±ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjz±h²hh³jŒ±h´Mˆubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjv±h²hh³jŒ±h´Mˆubah}”(h]”jq±ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jŒ±h´Mˆhjs±h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ.perform a software reset of the display module”h]”hŒ.perform a software reset of the display module”…”�”}”(hj>²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Mˆhj;²h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjs±h²hh³jŒ±h´Mˆubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jV²j$ jV²j% ‰j& ‰j' ‰uh1j˜ h²hhj³Mh³Nh´Nubj) )�”}”(hŒâ**Parameters** ``struct mipi_dsi_device *dsi`` DSI peripheral device **Description** This function is deprecated. Use mipi_dsi_dcs_soft_reset_multi() instead. **Return** 0 on success or a negative error code on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj`²h]”hŒ Parameters”…”�”}”(hjb²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj^²ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MŒhjZ²ubjw )�”}”(hhh]”j| )�”}”(hŒ6``struct mipi_dsi_device *dsi`` DSI peripheral device ”h]”(j‚ )�”}”(hŒ``struct mipi_dsi_device *dsi``”h]”jˆ )�”}”(hj²h]”hŒstruct mipi_dsi_device *dsi”…”�”}”(hj�²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj}²ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M‰hjy²ubjž )�”}”(hhh]”hÎ)�”}”(hŒDSI peripheral device”h]”hŒDSI peripheral device”…”�”}”(hj˜²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j”²h´M‰hj•²ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjy²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j”²h´M‰hjv²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjZ²ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjº²h]”hŒ Description”…”�”}”(hj¼²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¸²ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M‹hjZ²ubhÎ)�”}”(hŒIThis function is deprecated. Use mipi_dsi_dcs_soft_reset_multi() instead.”h]”hŒIThis function is deprecated. Use mipi_dsi_dcs_soft_reset_multi() instead.”…”�”}”(hjвh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MŠhjZ²ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjá²h]”hŒReturn”…”�”}”(hjã²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjß²ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MŒhjZ²ubhÎ)�”}”(hŒ10 on success or a negative error code on failure.”h]”hŒ10 on success or a negative error code on failure.”…”�”}”(hj÷²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M�hjZ²ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj³Mh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ(mipi_dsi_dcs_get_power_mode (C function)”Œc.mipi_dsi_dcs_get_power_mode”hNt”auh1j† hj³Mh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒGint mipi_dsi_dcs_get_power_mode (struct mipi_dsi_device *dsi, u8 *mode)”h]”j¤ )�”}”(hŒFint mipi_dsi_dcs_get_power_mode(struct mipi_dsi_device *dsi, u8 *mode)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj&³h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj"³h²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Mœubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5³h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj"³h²hh³j4³h´MœubjÍ )�”}”(hŒmipi_dsi_dcs_get_power_mode”h]”jÓ )�”}”(hŒmipi_dsi_dcs_get_power_mode”h]”hŒmipi_dsi_dcs_get_power_mode”…”�”}”(hjG³h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjC³ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj"³h²hh³j4³h´MœubjÞ)�”}”(hŒ'(struct mipi_dsi_device *dsi, u8 *mode)”h]”(jä)�”}”(hŒstruct mipi_dsi_device *dsi”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjc³h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj_³ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjp³h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj_³ubh)�”}”(hhh]”jÓ )�”}”(hŒmipi_dsi_device”h]”hŒmipi_dsi_device”…”�”}”(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%)�”}”jjI³sbŒc.mipi_dsi_dcs_get_power_mode”†”asbuh1hhj_³ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡³h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj_³ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj¯³h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj_³ubjÓ )�”}”(hŒdsi”h]”hŒdsi”…”�”}”(hj¼³h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj_³ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj[³ubjä)�”}”(hŒu8 *mode”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(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.mipi_dsi_dcs_get_power_mode”†”asbuh1hhjѳubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjö³h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjѳubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjѳubjÓ )�”}”(hŒmode”h]”hŒmode”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjѳubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj[³ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj"³h²hh³j4³h´Mœubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj³h²hh³j4³h´Mœubah}”(h]”j³ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j4³h´Mœhj³h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ-query the display module's current power mode”h]”hŒ/query the display module’s current power mode”…”�”}”(hj;´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Mœhj8´h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj³h²hh³j4³h´Mœubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jS´j$ jS´j% ‰j& ‰j' ‰uh1j˜ h²hhj³Mh³Nh´Nubj) )�”}”(hŒÁ**Parameters** ``struct mipi_dsi_device *dsi`` DSI peripheral device ``u8 *mode`` return location for the current power mode **Return** 0 on success or a negative error code on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj]´h]”hŒ Parameters”…”�”}”(hj_´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj[´ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M hjW´ubjw )�”}”(hhh]”(j| )�”}”(hŒ6``struct mipi_dsi_device *dsi`` DSI peripheral device ”h]”(j‚ )�”}”(hŒ``struct mipi_dsi_device *dsi``”h]”jˆ )�”}”(hj|´h]”hŒstruct mipi_dsi_device *dsi”…”�”}”(hj~´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjz´ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Mžhjv´ubjž )�”}”(hhh]”hÎ)�”}”(hŒDSI peripheral device”h]”hŒDSI peripheral device”…”�”}”(hj•´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j‘´h´Mžhj’´ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjv´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j‘´h´Mžhjs´ubj| )�”}”(hŒ8``u8 *mode`` return location for the current power mode ”h]”(j‚ )�”}”(hŒ ``u8 *mode``”h]”jˆ )�”}”(hjµ´h]”hŒu8 *mode”…”�”}”(hj·´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj³´ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MŸhj¯´ubjž )�”}”(hhh]”hÎ)�”}”(hŒ*return location for the current power mode”h]”hŒ*return location for the current power mode”…”�”}”(hjδh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÊ´h´MŸhjË´ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¯´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÊ´h´MŸhjs´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjW´ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjð´h]”hŒReturn”…”�”}”(hjò´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjî´ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M¡hjW´ubhÎ)�”}”(hŒ10 on success or a negative error code on failure.”h]”hŒ10 on success or a negative error code on failure.”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M¡hjW´ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj³Mh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ*mipi_dsi_dcs_get_pixel_format (C function)”Œc.mipi_dsi_dcs_get_pixel_format”hNt”auh1j† hj³Mh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒKint mipi_dsi_dcs_get_pixel_format (struct mipi_dsi_device *dsi, u8 *format)”h]”j¤ )�”}”(hŒJint mipi_dsi_dcs_get_pixel_format(struct mipi_dsi_device *dsi, u8 *format)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj5µh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj1µh²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Mµubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjDµh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj1µh²hh³jCµh´MµubjÍ )�”}”(hŒmipi_dsi_dcs_get_pixel_format”h]”jÓ )�”}”(hŒmipi_dsi_dcs_get_pixel_format”h]”hŒmipi_dsi_dcs_get_pixel_format”…”�”}”(hjVµh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjRµubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj1µh²hh³jCµh´MµubjÞ)�”}”(hŒ)(struct mipi_dsi_device *dsi, u8 *format)”h]”(jä)�”}”(hŒstruct mipi_dsi_device *dsi”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjrµh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjnµubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjnµubh)�”}”(hhh]”jÓ )�”}”(hŒmipi_dsi_device”h]”hŒmipi_dsi_device”…”�”}”(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%)�”}”jjXµsbŒc.mipi_dsi_dcs_get_pixel_format”†”asbuh1hhjnµubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°µh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjnµubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj¾µh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjnµubjÓ )�”}”(hŒdsi”h]”hŒdsi”…”�”}”(hj˵h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjnµubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjjµubjä)�”}”(hŒ u8 *format”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(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.mipi_dsi_dcs_get_pixel_format”†”asbuh1hhjàµubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjàµubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjàµubjÓ )�”}”(hŒformat”h]”hŒformat”…”�”}”(hj ¶h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjàµubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjjµubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj1µh²hh³jCµh´Mµubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj-µh²hh³jCµh´Mµubah}”(h]”j(µah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jCµh´Mµhj*µh²hubj )�”}”(hhh]”hÎ)�”}”(hŒBgets the pixel format for the RGB image data used by the interface”h]”hŒBgets the pixel format for the RGB image data used by the interface”…”�”}”(hjJ¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MµhjG¶h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj*µh²hh³jCµh´Mµubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jb¶j$ jb¶j% ‰j& ‰j' ‰uh1j˜ h²hhj³Mh³Nh´Nubj) )�”}”(hŒ½**Parameters** ``struct mipi_dsi_device *dsi`` DSI peripheral device ``u8 *format`` return location for the pixel format **Return** 0 on success or a negative error code on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjl¶h]”hŒ Parameters”…”�”}”(hjn¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjj¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M¹hjf¶ubjw )�”}”(hhh]”(j| )�”}”(hŒ6``struct mipi_dsi_device *dsi`` DSI peripheral device ”h]”(j‚ )�”}”(hŒ``struct mipi_dsi_device *dsi``”h]”jˆ )�”}”(hj‹¶h]”hŒstruct mipi_dsi_device *dsi”…”�”}”(hj�¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj‰¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M·hj…¶ubjž )�”}”(hhh]”hÎ)�”}”(hŒDSI peripheral device”h]”hŒDSI peripheral device”…”�”}”(hj¤¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j ¶h´M·hj¡¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj…¶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j ¶h´M·hj‚¶ubj| )�”}”(hŒ4``u8 *format`` return location for the pixel format ”h]”(j‚ )�”}”(hŒ``u8 *format``”h]”jˆ )�”}”(hjĶh]”hŒ u8 *format”…”�”}”(hjƶh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M¸hj¾¶ubjž )�”}”(hhh]”hÎ)�”}”(hŒ$return location for the pixel format”h]”hŒ$return location for the pixel format”…”�”}”(hjݶh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÙ¶h´M¸hjÚ¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¾¶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÙ¶h´M¸hj‚¶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjf¶ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjÿ¶h]”hŒReturn”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjý¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Mºhjf¶ubhÎ)�”}”(hŒ10 on success or a negative error code on failure.”h]”hŒ10 on success or a negative error code on failure.”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Mºhjf¶ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj³Mh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ*mipi_dsi_dcs_enter_sleep_mode (C function)”Œc.mipi_dsi_dcs_enter_sleep_mode”hNt”auh1j† hj³Mh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ?int mipi_dsi_dcs_enter_sleep_mode (struct mipi_dsi_device *dsi)”h]”j¤ )�”}”(hŒ>int mipi_dsi_dcs_enter_sleep_mode(struct mipi_dsi_device *dsi)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjD·h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj@·h²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MÎubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjS·h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj@·h²hh³jR·h´MÎubjÍ )�”}”(hŒmipi_dsi_dcs_enter_sleep_mode”h]”jÓ )�”}”(hŒmipi_dsi_dcs_enter_sleep_mode”h]”hŒmipi_dsi_dcs_enter_sleep_mode”…”�”}”(hje·h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hja·ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj@·h²hh³jR·h´MÎubjÞ)�”}”(hŒ(struct mipi_dsi_device *dsi)”h]”jä)�”}”(hŒstruct mipi_dsi_device *dsi”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Œmipi_dsi_device”h]”hŒmipi_dsi_device”…”�”}”(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%)�”}”jjg·sbŒc.mipi_dsi_dcs_enter_sleep_mode”†”asbuh1hhj}·ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿·h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj}·ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÍ·h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj}·ubjÓ )�”}”(hŒdsi”h]”hŒdsi”…”�”}”(hjÚ·h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj}·ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjy·ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj@·h²hh³jR·h´MÎubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj<·h²hh³jR·h´MÎubah}”(h]”j7·ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jR·h´MÎhj9·h²hubj )�”}”(hhh]”hÎ)�”}”(hŒWdisable all unnecessary blocks inside the display module except interface communication”h]”hŒWdisable all unnecessary blocks inside the display module except interface communication”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MÎhj¸h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj9·h²hh³jR·h´MÎubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j¸j$ j¸j% ‰j& ‰j' ‰uh1j˜ h²hhj³Mh³Nh´Nubj) )�”}”(hŒè**Parameters** ``struct mipi_dsi_device *dsi`` DSI peripheral device **Description** This function is deprecated. Use mipi_dsi_dcs_enter_sleep_mode_multi() instead. **Return** 0 on success or a negative error code on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj&¸h]”hŒ Parameters”…”�”}”(hj(¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj$¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MÒhj ¸ubjw )�”}”(hhh]”j| )�”}”(hŒ6``struct mipi_dsi_device *dsi`` DSI peripheral device ”h]”(j‚ )�”}”(hŒ``struct mipi_dsi_device *dsi``”h]”jˆ )�”}”(hjE¸h]”hŒstruct mipi_dsi_device *dsi”…”�”}”(hjG¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjC¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MÐhj?¸ubjž )�”}”(hhh]”hÎ)�”}”(hŒDSI peripheral device”h]”hŒDSI peripheral device”…”�”}”(hj^¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jZ¸h´MÐhj[¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj?¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jZ¸h´MÐhj<¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj ¸ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj€¸h]”hŒ Description”…”�”}”(hj‚¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj~¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MÒhj ¸ubhÎ)�”}”(hŒOThis function is deprecated. Use mipi_dsi_dcs_enter_sleep_mode_multi() instead.”h]”hŒOThis function is deprecated. Use mipi_dsi_dcs_enter_sleep_mode_multi() instead.”…”�”}”(hj–¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MÑhj ¸ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj§¸h]”hŒReturn”…”�”}”(hj©¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¥¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MÓhj ¸ubhÎ)�”}”(hŒ10 on success or a negative error code on failure.”h]”hŒ10 on success or a negative error code on failure.”…”�”}”(hj½¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MÔhj ¸ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj³Mh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ)mipi_dsi_dcs_exit_sleep_mode (C function)”Œc.mipi_dsi_dcs_exit_sleep_mode”hNt”auh1j† hj³Mh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ>int mipi_dsi_dcs_exit_sleep_mode (struct mipi_dsi_device *dsi)”h]”j¤ )�”}”(hŒ=int mipi_dsi_dcs_exit_sleep_mode(struct mipi_dsi_device *dsi)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjì¸h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjè¸h²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.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Œmipi_dsi_dcs_exit_sleep_mode”h]”jÓ )�”}”(hŒmipi_dsi_dcs_exit_sleep_mode”h]”hŒmipi_dsi_dcs_exit_sleep_mode”…”�”}”(hj ¹h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj ¹ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjè¸h²hh³jú¸h´MãubjÞ)�”}”(hŒ(struct mipi_dsi_device *dsi)”h]”jä)�”}”(hŒstruct mipi_dsi_device *dsi”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj)¹h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj%¹ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6¹h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj%¹ubh)�”}”(hhh]”jÓ )�”}”(hŒmipi_dsi_device”h]”hŒmipi_dsi_device”…”�”}”(hjG¹h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjD¹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jI¹Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj¹sbŒc.mipi_dsi_dcs_exit_sleep_mode”†”asbuh1hhj%¹ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjg¹h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj%¹ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hju¹h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj%¹ubjÓ )�”}”(hŒdsi”h]”hŒdsi”…”�”}”(hj‚¹h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj%¹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj!¹ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjè¸h²hh³jú¸h´Mãubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ+enable all blocks inside the display module”h]”hŒ+enable all blocks inside the display module”…”�”}”(hj¬¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.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²hhj³Mh³Nh´Nubj) )�”}”(hŒç**Parameters** ``struct mipi_dsi_device *dsi`` DSI peripheral device **Description** This function is deprecated. Use mipi_dsi_dcs_exit_sleep_mode_multi() instead. **Return** 0 on success or a negative error code on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjιh]”hŒ Parameters”…”�”}”(hjйh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj̹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Mçhjȹubjw )�”}”(hhh]”j| )�”}”(hŒ6``struct mipi_dsi_device *dsi`` DSI peripheral device ”h]”(j‚ )�”}”(hŒ``struct mipi_dsi_device *dsi``”h]”jˆ )�”}”(hjí¹h]”hŒstruct mipi_dsi_device *dsi”…”�”}”(hjï¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjë¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Måhjç¹ubjž )�”}”(hhh]”hÎ)�”}”(hŒDSI peripheral device”h]”hŒDSI peripheral device”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jºh´Måhjºubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjç¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jºh´Måhjä¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjȹubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj(ºh]”hŒ Description”…”�”}”(hj*ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj&ºubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MçhjȹubhÎ)�”}”(hŒNThis function is deprecated. Use mipi_dsi_dcs_exit_sleep_mode_multi() instead.”h]”hŒNThis function is deprecated. Use mipi_dsi_dcs_exit_sleep_mode_multi() instead.”…”�”}”(hj>ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MæhjȹubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjOºh]”hŒReturn”…”�”}”(hjQºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjMºubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MèhjȹubhÎ)�”}”(hŒ10 on success or a negative error code on failure.”h]”hŒ10 on success or a negative error code on failure.”…”�”}”(hjeºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Méhjȹubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj³Mh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ)mipi_dsi_dcs_set_display_off (C function)”Œc.mipi_dsi_dcs_set_display_off”hNt”auh1j† hj³Mh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ>int mipi_dsi_dcs_set_display_off (struct mipi_dsi_device *dsi)”h]”j¤ )�”}”(hŒ=int mipi_dsi_dcs_set_display_off(struct mipi_dsi_device *dsi)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj”ºh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj�ºh²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.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Œmipi_dsi_dcs_set_display_off”h]”jÓ )�”}”(hŒmipi_dsi_dcs_set_display_off”h]”hŒmipi_dsi_dcs_set_display_off”…”�”}”(hjµºh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj±ºubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj�ºh²hh³j¢ºh´MøubjÞ)�”}”(hŒ(struct mipi_dsi_device *dsi)”h]”jä)�”}”(hŒstruct mipi_dsi_device *dsi”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Œmipi_dsi_device”h]”hŒmipi_dsi_device”…”�”}”(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%)�”}”jj·ºsbŒc.mipi_dsi_dcs_set_display_off”†”asbuh1hhjͺubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjͺubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjͺubjÓ )�”}”(hŒdsi”h]”hŒdsi”…”�”}”(hj*»h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjͺubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjɺubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj�ºh²hh³j¢ºh´Møubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ4stop displaying the image data on the display device”h]”hŒ4stop displaying the image data on the display device”…”�”}”(hjT»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MøhjQ»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# jl»j$ jl»j% ‰j& ‰j' ‰uh1j˜ h²hhj³Mh³Nh´Nubj) )�”}”(hŒç**Parameters** ``struct mipi_dsi_device *dsi`` DSI peripheral device **Description** This function is deprecated. Use mipi_dsi_dcs_set_display_off_multi() instead. **Return** 0 on success or a negative error code on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjv»h]”hŒ Parameters”…”�”}”(hjx»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjt»ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Mühjp»ubjw )�”}”(hhh]”j| )�”}”(hŒ6``struct mipi_dsi_device *dsi`` DSI peripheral device ”h]”(j‚ )�”}”(hŒ``struct mipi_dsi_device *dsi``”h]”jˆ )�”}”(hj•»h]”hŒstruct mipi_dsi_device *dsi”…”�”}”(hj—»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj“»ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Múhj�»ubjž )�”}”(hhh]”hÎ)�”}”(hŒDSI peripheral device”h]”hŒDSI peripheral device”…”�”}”(hj®»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jª»h´Múhj«»ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj�»ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jª»h´MúhjŒ»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjp»ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjлh]”hŒ Description”…”�”}”(hjÒ»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjλubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Mühjp»ubhÎ)�”}”(hŒNThis function is deprecated. Use mipi_dsi_dcs_set_display_off_multi() instead.”h]”hŒNThis function is deprecated. Use mipi_dsi_dcs_set_display_off_multi() instead.”…”�”}”(hjæ»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Mûhjp»ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj÷»h]”hŒReturn”…”�”}”(hjù»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjõ»ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Mýhjp»ubhÎ)�”}”(hŒ10 on success or a negative error code on failure.”h]”hŒ10 on success or a negative error code on failure.”…”�”}”(hj ¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Mþhjp»ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj³Mh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ(mipi_dsi_dcs_set_display_on (C function)”Œc.mipi_dsi_dcs_set_display_on”hNt”auh1j† hj³Mh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ=int mipi_dsi_dcs_set_display_on (struct mipi_dsi_device *dsi)”h]”j¤ )�”}”(hŒÚubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MXhj:Úubjw )�”}”(hhh]”j| )�”}”(hŒM``struct mipi_dsi_multi_context *ctx`` Context for multiple DSI transactions ”h]”(j‚ )�”}”(hŒ&``struct mipi_dsi_multi_context *ctx``”h]”jˆ )�”}”(hj_Úh]”hŒ"struct mipi_dsi_multi_context *ctx”…”�”}”(hjaÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj]Úubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MUhjYÚubjž )�”}”(hhh]”hÎ)�”}”(hŒ%Context for multiple DSI transactions”h]”hŒ%Context for multiple DSI transactions”…”�”}”(hjxÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jtÚh´MUhjuÚubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjYÚubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jtÚh´MUhjVÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj:ÚubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjšÚh]”hŒ Description”…”�”}”(hjœÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj˜Úubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MWhj:ÚubhÎ)�”}”(hŒoLike mipi_dsi_dcs_nop() but deals with errors in a way that makes it convenient to make several calls in a row.”h]”hŒoLike mipi_dsi_dcs_nop() but deals with errors in a way that makes it convenient to make several calls in a row.”…”�”}”(hj°Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MVhj:Úubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj³Mh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ0mipi_dsi_dcs_enter_sleep_mode_multi (C function)”Œ%c.mipi_dsi_dcs_enter_sleep_mode_multi”hNt”auh1j† hj³Mh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒMvoid mipi_dsi_dcs_enter_sleep_mode_multi (struct mipi_dsi_multi_context *ctx)”h]”j¤ )�”}”(hŒLvoid mipi_dsi_dcs_enter_sleep_mode_multi(struct mipi_dsi_multi_context *ctx)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjßÚh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjÛÚh²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Mmubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîÚh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÛÚh²hh³jíÚh´MmubjÍ )�”}”(hŒ#mipi_dsi_dcs_enter_sleep_mode_multi”h]”jÓ )�”}”(hŒ#mipi_dsi_dcs_enter_sleep_mode_multi”h]”hŒ#mipi_dsi_dcs_enter_sleep_mode_multi”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjüÚubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÛÚh²hh³jíÚh´MmubjÞ)�”}”(hŒ$(struct mipi_dsi_multi_context *ctx)”h]”jä)�”}”(hŒ"struct mipi_dsi_multi_context *ctx”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Œmipi_dsi_multi_context”h]”hŒmipi_dsi_multi_context”…”�”}”(hj:Ûh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj7Ûubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j<ÛŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjÛsbŒ%c.mipi_dsi_dcs_enter_sleep_mode_multi”†”asbuh1hhjÛubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZÛh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÛubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjhÛh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÛubjÓ )�”}”(hŒctx”h]”hŒctx”…”�”}”(hjuÛh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÛubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÛubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjÛÚh²hh³jíÚh´Mmubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj×Úh²hh³jíÚh´Mmubah}”(h]”jÒÚah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jíÚh´MmhjÔÚh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ send DCS ENTER_SLEEP_MODE packet”h]”hŒ send DCS ENTER_SLEEP_MODE packet”…”�”}”(hjŸÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MmhjœÛh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÔÚh²hh³jíÚh´Mmubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j·Ûj$ j·Ûj% ‰j& ‰j' ‰uh1j˜ h²hhj³Mh³Nh´Nubj) )�”}”(hŒí**Parameters** ``struct mipi_dsi_multi_context *ctx`` Context for multiple DSI transactions **Description** Like mipi_dsi_dcs_enter_sleep_mode() but deals with errors in a way that makes it convenient to make several calls in a row.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjÁÛh]”hŒ Parameters”…”�”}”(hjÃÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¿Ûubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Mqhj»Ûubjw )�”}”(hhh]”j| )�”}”(hŒM``struct mipi_dsi_multi_context *ctx`` Context for multiple DSI transactions ”h]”(j‚ )�”}”(hŒ&``struct mipi_dsi_multi_context *ctx``”h]”jˆ )�”}”(hjàÛh]”hŒ"struct mipi_dsi_multi_context *ctx”…”�”}”(hjâÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÞÛubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MnhjÚÛubjž )�”}”(hhh]”hÎ)�”}”(hŒ%Context for multiple DSI transactions”h]”hŒ%Context for multiple DSI transactions”…”�”}”(hjùÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jõÛh´MnhjöÛubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÚÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jõÛh´Mnhj×Ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj»ÛubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjÜh]”hŒ Description”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÜubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Mphj»ÛubhÎ)�”}”(hŒ|Like mipi_dsi_dcs_enter_sleep_mode() but deals with errors in a way that makes it convenient to make several calls in a row.”h]”hŒ|Like mipi_dsi_dcs_enter_sleep_mode() but deals with errors in a way that makes it convenient to make several calls in a row.”…”�”}”(hj1Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Mohj»Ûubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj³Mh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ/mipi_dsi_dcs_exit_sleep_mode_multi (C function)”Œ$c.mipi_dsi_dcs_exit_sleep_mode_multi”hNt”auh1j† hj³Mh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒLvoid mipi_dsi_dcs_exit_sleep_mode_multi (struct mipi_dsi_multi_context *ctx)”h]”j¤ )�”}”(hŒKvoid mipi_dsi_dcs_exit_sleep_mode_multi(struct mipi_dsi_multi_context *ctx)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj`Üh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj\Üh²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M†ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjoÜh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj\Üh²hh³jnÜh´M†ubjÍ )�”}”(hŒ"mipi_dsi_dcs_exit_sleep_mode_multi”h]”jÓ )�”}”(hŒ"mipi_dsi_dcs_exit_sleep_mode_multi”h]”hŒ"mipi_dsi_dcs_exit_sleep_mode_multi”…”�”}”(hj�Üh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj}Üubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj\Üh²hh³jnÜh´M†ubjÞ)�”}”(hŒ$(struct mipi_dsi_multi_context *ctx)”h]”jä)�”}”(hŒ"struct mipi_dsi_multi_context *ctx”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Œmipi_dsi_multi_context”h]”hŒmipi_dsi_multi_context”…”�”}”(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%)�”}”jjƒÜsbŒ$c.mipi_dsi_dcs_exit_sleep_mode_multi”†”asbuh1hhj™Üubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛÜh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj™Üubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjéÜh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj™ÜubjÓ )�”}”(hŒctx”h]”hŒctx”…”�”}”(hjöÜh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj™Üubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj•Üubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj\Üh²hh³jnÜh´M†ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjXÜh²hh³jnÜh´M†ubah}”(h]”jSÜah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jnÜh´M†hjUÜh²hubj )�”}”(hhh]”hÎ)�”}”(hŒsend DCS EXIT_SLEEP_MODE packet”h]”hŒsend DCS EXIT_SLEEP_MODE packet”…”�”}”(hj Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M†hjÝh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjUÜh²hh³jnÜh´M†ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j8Ýj$ j8Ýj% ‰j& ‰j' ‰uh1j˜ h²hhj³Mh³Nh´Nubj) )�”}”(hŒì**Parameters** ``struct mipi_dsi_multi_context *ctx`` Context for multiple DSI transactions **Description** Like mipi_dsi_dcs_exit_sleep_mode() but deals with errors in a way that makes it convenient to make several calls in a row.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjBÝh]”hŒ Parameters”…”�”}”(hjDÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj@Ýubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MŠhj<Ýubjw )�”}”(hhh]”j| )�”}”(hŒM``struct mipi_dsi_multi_context *ctx`` Context for multiple DSI transactions ”h]”(j‚ )�”}”(hŒ&``struct mipi_dsi_multi_context *ctx``”h]”jˆ )�”}”(hjaÝh]”hŒ"struct mipi_dsi_multi_context *ctx”…”�”}”(hjcÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj_Ýubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M‡hj[Ýubjž )�”}”(hhh]”hÎ)�”}”(hŒ%Context for multiple DSI transactions”h]”hŒ%Context for multiple DSI transactions”…”�”}”(hjzÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jvÝh´M‡hjwÝubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj[Ýubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jvÝh´M‡hjXÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj<ÝubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjœÝh]”hŒ Description”…”�”}”(hjžÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjšÝubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M‰hj<ÝubhÎ)�”}”(hŒ{Like mipi_dsi_dcs_exit_sleep_mode() but deals with errors in a way that makes it convenient to make several calls in a row.”h]”hŒ{Like mipi_dsi_dcs_exit_sleep_mode() but deals with errors in a way that makes it convenient to make several calls in a row.”…”�”}”(hj²Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Mˆhj<Ýubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj³Mh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ/mipi_dsi_dcs_set_display_off_multi (C function)”Œ$c.mipi_dsi_dcs_set_display_off_multi”hNt”auh1j† hj³Mh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒLvoid mipi_dsi_dcs_set_display_off_multi (struct mipi_dsi_multi_context *ctx)”h]”j¤ )�”}”(hŒKvoid mipi_dsi_dcs_set_display_off_multi(struct mipi_dsi_multi_context *ctx)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjáÝh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjÝÝh²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.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Œ"mipi_dsi_dcs_set_display_off_multi”h]”jÓ )�”}”(hŒ"mipi_dsi_dcs_set_display_off_multi”h]”hŒ"mipi_dsi_dcs_set_display_off_multi”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjþÝubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÝÝh²hh³jïÝh´MŸubjÞ)�”}”(hŒ$(struct mipi_dsi_multi_context *ctx)”h]”jä)�”}”(hŒ"struct mipi_dsi_multi_context *ctx”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Œmipi_dsi_multi_context”h]”hŒmipi_dsi_multi_context”…”�”}”(hj<Þh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj9Þubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j>ÞŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjÞsbŒ$c.mipi_dsi_dcs_set_display_off_multi”†”asbuh1hhjÞubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\Þh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÞubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjjÞh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÞubjÓ )�”}”(hŒctx”h]”hŒctx”…”�”}”(hjwÞh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÞubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÞubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjÝÝh²hh³jïÝh´MŸubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œsend DCS SET_DISPLAY_OFF packet”h]”hŒsend DCS SET_DISPLAY_OFF packet”…”�”}”(hj¡Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.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²hhj³Mh³Nh´Nubj) )�”}”(hŒì**Parameters** ``struct mipi_dsi_multi_context *ctx`` Context for multiple DSI transactions **Description** Like mipi_dsi_dcs_set_display_off() but deals with errors in a way that makes it convenient to make several calls in a row.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjÃÞh]”hŒ Parameters”…”�”}”(hjÅÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÁÞubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M£hj½Þubjw )�”}”(hhh]”j| )�”}”(hŒM``struct mipi_dsi_multi_context *ctx`` Context for multiple DSI transactions ”h]”(j‚ )�”}”(hŒ&``struct mipi_dsi_multi_context *ctx``”h]”jˆ )�”}”(hjâÞh]”hŒ"struct mipi_dsi_multi_context *ctx”…”�”}”(hjäÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjàÞubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M hjÜÞubjž )�”}”(hhh]”hÎ)�”}”(hŒ%Context for multiple DSI transactions”h]”hŒ%Context for multiple DSI transactions”…”�”}”(hjûÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j÷Þh´M hjøÞubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÜÞubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j÷Þh´M hjÙÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj½ÞubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjßh]”hŒ Description”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjßubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M¢hj½ÞubhÎ)�”}”(hŒ{Like mipi_dsi_dcs_set_display_off() but deals with errors in a way that makes it convenient to make several calls in a row.”h]”hŒ{Like mipi_dsi_dcs_set_display_off() but deals with errors in a way that makes it convenient to make several calls in a row.”…”�”}”(hj3ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M¡hj½Þubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj³Mh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ.mipi_dsi_dcs_set_display_on_multi (C function)”Œ#c.mipi_dsi_dcs_set_display_on_multi”hNt”auh1j† hj³Mh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒKvoid mipi_dsi_dcs_set_display_on_multi (struct mipi_dsi_multi_context *ctx)”h]”j¤ )�”}”(hŒJvoid mipi_dsi_dcs_set_display_on_multi(struct mipi_dsi_multi_context *ctx)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjbßh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj^ßh²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M¸ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjqßh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj^ßh²hh³jpßh´M¸ubjÍ )�”}”(hŒ!mipi_dsi_dcs_set_display_on_multi”h]”jÓ )�”}”(hŒ!mipi_dsi_dcs_set_display_on_multi”h]”hŒ!mipi_dsi_dcs_set_display_on_multi”…”�”}”(hjƒßh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjßubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj^ßh²hh³jpßh´M¸ubjÞ)�”}”(hŒ$(struct mipi_dsi_multi_context *ctx)”h]”jä)�”}”(hŒ"struct mipi_dsi_multi_context *ctx”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Œmipi_dsi_multi_context”h]”hŒmipi_dsi_multi_context”…”�”}”(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%)�”}”jj…ßsbŒ#c.mipi_dsi_dcs_set_display_on_multi”†”asbuh1hhj›ßubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝßh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj›ßubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjëßh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj›ßubjÓ )�”}”(hŒctx”h]”hŒctx”…”�”}”(hjøßh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj›ßubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj—ßubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj^ßh²hh³jpßh´M¸ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjZßh²hh³jpßh´M¸ubah}”(h]”jUßah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jpßh´M¸hjWßh²hubj )�”}”(hhh]”hÎ)�”}”(hŒsend DCS SET_DISPLAY_ON packet”h]”hŒsend DCS SET_DISPLAY_ON packet”…”�”}”(hj"àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M¸hjàh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjWßh²hh³jpßh´M¸ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j:àj$ j:àj% ‰j& ‰j' ‰uh1j˜ h²hhj³Mh³Nh´Nubj) )�”}”(hŒë**Parameters** ``struct mipi_dsi_multi_context *ctx`` Context for multiple DSI transactions **Description** Like mipi_dsi_dcs_set_display_on() but deals with errors in a way that makes it convenient to make several calls in a row.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjDàh]”hŒ Parameters”…”�”}”(hjFàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjBàubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M¼hj>àubjw )�”}”(hhh]”j| )�”}”(hŒM``struct mipi_dsi_multi_context *ctx`` Context for multiple DSI transactions ”h]”(j‚ )�”}”(hŒ&``struct mipi_dsi_multi_context *ctx``”h]”jˆ )�”}”(hjcàh]”hŒ"struct mipi_dsi_multi_context *ctx”…”�”}”(hjeàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjaàubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M¹hj]àubjž )�”}”(hhh]”hÎ)�”}”(hŒ%Context for multiple DSI transactions”h]”hŒ%Context for multiple DSI transactions”…”�”}”(hj|àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jxàh´M¹hjyàubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj]àubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jxàh´M¹hjZàubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj>àubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjžàh]”hŒ Description”…”�”}”(hj àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjœàubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M»hj>àubhÎ)�”}”(hŒzLike mipi_dsi_dcs_set_display_on() but deals with errors in a way that makes it convenient to make several calls in a row.”h]”hŒzLike mipi_dsi_dcs_set_display_on() but deals with errors in a way that makes it convenient to make several calls in a row.”…”�”}”(hj´àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Mºhj>àubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj³Mh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ+mipi_dsi_dcs_set_tear_on_multi (C function)”Œ c.mipi_dsi_dcs_set_tear_on_multi”hNt”auh1j† hj³Mh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒjvoid mipi_dsi_dcs_set_tear_on_multi (struct mipi_dsi_multi_context *ctx, enum mipi_dsi_dcs_tear_mode mode)”h]”j¤ )�”}”(hŒivoid mipi_dsi_dcs_set_tear_on_multi(struct mipi_dsi_multi_context *ctx, enum mipi_dsi_dcs_tear_mode mode)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjãàh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjßàh²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.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Œmipi_dsi_dcs_set_tear_on_multi”h]”jÓ )�”}”(hŒmipi_dsi_dcs_set_tear_on_multi”h]”hŒmipi_dsi_dcs_set_tear_on_multi”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjáubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjßàh²hh³jñàh´MÑubjÞ)�”}”(hŒF(struct mipi_dsi_multi_context *ctx, enum mipi_dsi_dcs_tear_mode mode)”h]”(jä)�”}”(hŒ"struct mipi_dsi_multi_context *ctx”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Œmipi_dsi_multi_context”h]”hŒmipi_dsi_multi_context”…”�”}”(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%)�”}”jjásbŒ c.mipi_dsi_dcs_set_tear_on_multi”†”asbuh1hhjáubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^áh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjáubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjláh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjáubjÓ )�”}”(hŒctx”h]”hŒctx”…”�”}”(hjyáh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjáubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjáubjä)�”}”(hŒ enum mipi_dsi_dcs_tear_mode mode”h]”(jª )�”}”(hjÂ7h]”hŒenum”…”�”}”(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Œmipi_dsi_dcs_tear_mode”h]”hŒmipi_dsi_dcs_tear_mode”…”�”}”(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ï ]”jZጠc.mipi_dsi_dcs_set_tear_on_multi”†”asbuh1hhjŽáubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÎáh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjŽáubjÓ )�”}”(hŒmode”h]”hŒmode”…”�”}”(hjÜáh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjŽáubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjáubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjßàh²hh³jñàh´MÑubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œsend DCS SET_TEAR_ON packet”h]”hŒsend DCS SET_TEAR_ON packet”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.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²hhj³Mh³Nh´Nubj) )�”}”(hX4**Parameters** ``struct mipi_dsi_multi_context *ctx`` Context for multiple DSI transactions ``enum mipi_dsi_dcs_tear_mode mode`` the Tearing Effect Output Line mode **Description** Like mipi_dsi_dcs_set_tear_on() but deals with errors in a way that makes it convenient to make several calls in a row.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj(âh]”hŒ Parameters”…”�”}”(hj*âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj&âubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MÕhj"âubjw )�”}”(hhh]”(j| )�”}”(hŒM``struct mipi_dsi_multi_context *ctx`` Context for multiple DSI transactions ”h]”(j‚ )�”}”(hŒ&``struct mipi_dsi_multi_context *ctx``”h]”jˆ )�”}”(hjGâh]”hŒ"struct mipi_dsi_multi_context *ctx”…”�”}”(hjIâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjEâubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MÒhjAâubjž )�”}”(hhh]”hÎ)�”}”(hŒ%Context for multiple DSI transactions”h]”hŒ%Context for multiple DSI transactions”…”�”}”(hj`âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j\âh´MÒhj]âubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjAâubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j\âh´MÒhj>âubj| )�”}”(hŒI``enum mipi_dsi_dcs_tear_mode mode`` the Tearing Effect Output Line mode ”h]”(j‚ )�”}”(hŒ$``enum mipi_dsi_dcs_tear_mode mode``”h]”jˆ )�”}”(hj€âh]”hŒ enum mipi_dsi_dcs_tear_mode mode”…”�”}”(hj‚âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj~âubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MÓhjzâubjž )�”}”(hhh]”hÎ)�”}”(hŒ#the Tearing Effect Output Line mode”h]”hŒ#the Tearing Effect Output Line mode”…”�”}”(hj™âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j•âh´MÓhj–âubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjzâubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j•âh´MÓhj>âubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj"âubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj»âh]”hŒ Description”…”�”}”(hj½âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¹âubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MÕhj"âubhÎ)�”}”(hŒwLike mipi_dsi_dcs_set_tear_on() but deals with errors in a way that makes it convenient to make several calls in a row.”h]”hŒwLike mipi_dsi_dcs_set_tear_on() but deals with errors in a way that makes it convenient to make several calls in a row.”…”�”}”(hjÑâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MÔhj"âubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj³Mh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ.mipi_dsi_turn_on_peripheral_multi (C function)”Œ#c.mipi_dsi_turn_on_peripheral_multi”hNt”auh1j† hj³Mh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒKvoid mipi_dsi_turn_on_peripheral_multi (struct mipi_dsi_multi_context *ctx)”h]”j¤ )�”}”(hŒJvoid mipi_dsi_turn_on_peripheral_multi(struct mipi_dsi_multi_context *ctx)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjüâh²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.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Œ!mipi_dsi_turn_on_peripheral_multi”h]”jÓ )�”}”(hŒ!mipi_dsi_turn_on_peripheral_multi”h]”hŒ!mipi_dsi_turn_on_peripheral_multi”…”�”}”(hj!ãh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjãubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjüâh²hh³jãh´MìubjÞ)�”}”(hŒ$(struct mipi_dsi_multi_context *ctx)”h]”jä)�”}”(hŒ"struct mipi_dsi_multi_context *ctx”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj=ãh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj9ãubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJãh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj9ãubh)�”}”(hhh]”jÓ )�”}”(hŒmipi_dsi_multi_context”h]”hŒmipi_dsi_multi_context”…”�”}”(hj[ãh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjXãubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j]ãŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj#ãsbŒ#c.mipi_dsi_turn_on_peripheral_multi”†”asbuh1hhj9ãubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{ãh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj9ãubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj‰ãh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj9ãubjÓ )�”}”(hŒctx”h]”hŒctx”…”�”}”(hj–ãh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj9ãubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj5ãubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjüâh²hh³jãh´Mìubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ"sends a Turn On Peripheral command”h]”hŒ"sends a Turn On Peripheral command”…”�”}”(hjÀãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.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²hhj³Mh³Nh´Nubj) )�”}”(hŒë**Parameters** ``struct mipi_dsi_multi_context *ctx`` Context for multiple DSI transactions **Description** Like mipi_dsi_turn_on_peripheral() but deals with errors in a way that makes it convenient to make several calls in a row.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjâãh]”hŒ Parameters”…”�”}”(hjäãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjàãubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MðhjÜãubjw )�”}”(hhh]”j| )�”}”(hŒM``struct mipi_dsi_multi_context *ctx`` Context for multiple DSI transactions ”h]”(j‚ )�”}”(hŒ&``struct mipi_dsi_multi_context *ctx``”h]”jˆ )�”}”(hjäh]”hŒ"struct mipi_dsi_multi_context *ctx”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÿãubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Míhjûãubjž )�”}”(hhh]”hÎ)�”}”(hŒ%Context for multiple DSI transactions”h]”hŒ%Context for multiple DSI transactions”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jäh´Míhjäubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjûãubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jäh´Míhjøãubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÜãubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj<äh]”hŒ Description”…”�”}”(hj>äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj:äubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MïhjÜãubhÎ)�”}”(hŒzLike mipi_dsi_turn_on_peripheral() but deals with errors in a way that makes it convenient to make several calls in a row.”h]”hŒzLike mipi_dsi_turn_on_peripheral() but deals with errors in a way that makes it convenient to make several calls in a row.”…”�”}”(hjRäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MîhjÜãubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj³Mh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ,mipi_dsi_dcs_set_tear_off_multi (C function)”Œ!c.mipi_dsi_dcs_set_tear_off_multi”hNt”auh1j† hj³Mh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒIvoid mipi_dsi_dcs_set_tear_off_multi (struct mipi_dsi_multi_context *ctx)”h]”j¤ )�”}”(hŒHvoid mipi_dsi_dcs_set_tear_off_multi(struct mipi_dsi_multi_context *ctx)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj�äh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj}äh²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�äh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj}äh²hh³j�äh´MubjÍ )�”}”(hŒmipi_dsi_dcs_set_tear_off_multi”h]”jÓ )�”}”(hŒmipi_dsi_dcs_set_tear_off_multi”h]”hŒmipi_dsi_dcs_set_tear_off_multi”…”�”}”(hj¢äh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjžäubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj}äh²hh³j�äh´MubjÞ)�”}”(hŒ$(struct mipi_dsi_multi_context *ctx)”h]”jä)�”}”(hŒ"struct mipi_dsi_multi_context *ctx”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Œmipi_dsi_multi_context”h]”hŒmipi_dsi_multi_context”…”�”}”(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%)�”}”jj¤äsbŒ!c.mipi_dsi_dcs_set_tear_off_multi”†”asbuh1hhjºäubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjüäh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjºäubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj åh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjºäubjÓ )�”}”(hŒctx”h]”hŒctx”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjºäubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¶äubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj}äh²hh³j�äh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjyäh²hh³j�äh´Mubah}”(h]”jtäah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j�äh´Mhjväh²hubj )�”}”(hhh]”hÎ)�”}”(hŒPturn off the display module's Tearing Effect output signal on the TE signal line”h]”hŒRturn off the display module’s Tearing Effect output signal on the TE signal line”…”�”}”(hjAåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Mhj>åh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjväh²hh³j�äh´Mubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jYåj$ jYåj% ‰j& ‰j' ‰uh1j˜ h²hhj³Mh³Nh´Nubj) )�”}”(hŒ^**Parameters** ``struct mipi_dsi_multi_context *ctx`` Context for multiple DSI transactions”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjcåh]”hŒ Parameters”…”�”}”(hjeåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjaåubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M hj]åubjw )�”}”(hhh]”j| )�”}”(hŒL``struct mipi_dsi_multi_context *ctx`` Context for multiple DSI transactions”h]”(j‚ )�”}”(hŒ&``struct mipi_dsi_multi_context *ctx``”h]”jˆ )�”}”(hj‚åh]”hŒ"struct mipi_dsi_multi_context *ctx”…”�”}”(hj„åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj€åubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M hj|åubjž )�”}”(hhh]”hÎ)�”}”(hŒ%Context for multiple DSI transactions”h]”hŒ%Context for multiple DSI transactions”…”�”}”(hj›åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Mhj˜åubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj|åubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j—åh´M hjyåubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj]åubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj³Mh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ*mipi_dsi_dcs_soft_reset_multi (C function)”Œc.mipi_dsi_dcs_soft_reset_multi”hNt”auh1j† hj³Mh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒGvoid mipi_dsi_dcs_soft_reset_multi (struct mipi_dsi_multi_context *ctx)”h]”j¤ )�”}”(hŒFvoid mipi_dsi_dcs_soft_reset_multi(struct mipi_dsi_multi_context *ctx)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÜåh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjØåh²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjëåh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjØåh²hh³jêåh´MubjÍ )�”}”(hŒmipi_dsi_dcs_soft_reset_multi”h]”jÓ )�”}”(hŒmipi_dsi_dcs_soft_reset_multi”h]”hŒmipi_dsi_dcs_soft_reset_multi”…”�”}”(hjýåh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjùåubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjØåh²hh³jêåh´MubjÞ)�”}”(hŒ$(struct mipi_dsi_multi_context *ctx)”h]”jä)�”}”(hŒ"struct mipi_dsi_multi_context *ctx”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Œmipi_dsi_multi_context”h]”hŒmipi_dsi_multi_context”…”�”}”(hj7æh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj4æubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j9æŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjÿåsbŒc.mipi_dsi_dcs_soft_reset_multi”†”asbuh1hhjæubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWæh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjæubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjeæh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjæubjÓ )�”}”(hŒctx”h]”hŒctx”…”�”}”(hjræh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjæubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjæubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjØåh²hh³jêåh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjÔåh²hh³jêåh´Mubah}”(h]”jÏåah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jêåh´MhjÑåh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ.perform a software reset of the display module”h]”hŒ.perform a software reset of the display module”…”�”}”(hjœæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Mhj™æh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÑåh²hh³jêåh´Mubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j´æj$ j´æj% ‰j& ‰j' ‰uh1j˜ h²hhj³Mh³Nh´Nubj) )�”}”(hŒç**Parameters** ``struct mipi_dsi_multi_context *ctx`` Context for multiple DSI transactions **Description** Like mipi_dsi_dcs_soft_reset() but deals with errors in a way that makes it convenient to make several calls in a row.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj¾æh]”hŒ Parameters”…”�”}”(hjÀæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¼æubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M hj¸æubjw )�”}”(hhh]”j| )�”}”(hŒM``struct mipi_dsi_multi_context *ctx`` Context for multiple DSI transactions ”h]”(j‚ )�”}”(hŒ&``struct mipi_dsi_multi_context *ctx``”h]”jˆ )�”}”(hjÝæh]”hŒ"struct mipi_dsi_multi_context *ctx”…”�”}”(hjßæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÛæubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Mhj׿ubjž )�”}”(hhh]”hÎ)�”}”(hŒ%Context for multiple DSI transactions”h]”hŒ%Context for multiple DSI transactions”…”�”}”(hjöæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jòæh´Mhjóæubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj׿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jòæh´MhjÔæubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj¸æubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjçh]”hŒ Description”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjçubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Mhj¸æubhÎ)�”}”(hŒvLike mipi_dsi_dcs_soft_reset() but deals with errors in a way that makes it convenient to make several calls in a row.”h]”hŒvLike mipi_dsi_dcs_soft_reset() but deals with errors in a way that makes it convenient to make several calls in a row.”…”�”}”(hj.çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Mhj¸æubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj³Mh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ6mipi_dsi_dcs_set_display_brightness_multi (C function)”Œ+c.mipi_dsi_dcs_set_display_brightness_multi”hNt”auh1j† hj³Mh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒcvoid mipi_dsi_dcs_set_display_brightness_multi (struct mipi_dsi_multi_context *ctx, u16 brightness)”h]”j¤ )�”}”(hŒbvoid mipi_dsi_dcs_set_display_brightness_multi(struct mipi_dsi_multi_context *ctx, u16 brightness)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj]çh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjYçh²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M5ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjlçh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjYçh²hh³jkçh´M5ubjÍ )�”}”(hŒ)mipi_dsi_dcs_set_display_brightness_multi”h]”jÓ )�”}”(hŒ)mipi_dsi_dcs_set_display_brightness_multi”h]”hŒ)mipi_dsi_dcs_set_display_brightness_multi”…”�”}”(hj~çh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjzçubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjYçh²hh³jkçh´M5ubjÞ)�”}”(hŒ4(struct mipi_dsi_multi_context *ctx, u16 brightness)”h]”(jä)�”}”(hŒ"struct mipi_dsi_multi_context *ctx”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Œmipi_dsi_multi_context”h]”hŒmipi_dsi_multi_context”…”�”}”(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%)�”}”jj€çsbŒ+c.mipi_dsi_dcs_set_display_brightness_multi”†”asbuh1hhj–çubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØçh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj–çubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjæçh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj–çubjÓ )�”}”(hŒctx”h]”hŒctx”…”�”}”(hjóçh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj–çubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj’çubjä)�”}”(hŒu16 brightness”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu16”h]”hŒu16”…”�”}”(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.mipi_dsi_dcs_set_display_brightness_multi”†”asbuh1hhjèubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-èh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjèubjÓ )�”}”(hŒ brightness”h]”hŒ brightness”…”�”}”(hj;èh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjèubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj’çubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjYçh²hh³jkçh´M5ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjUçh²hh³jkçh´M5ubah}”(h]”jPçah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jkçh´M5hjRçh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ(sets the brightness value of the display”h]”hŒ(sets the brightness value of the display”…”�”}”(hjeèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M5hjbèh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjRçh²hh³jkçh´M5ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j}èj$ j}èj% ‰j& ‰j' ‰uh1j˜ h²hhj³Mh³Nh´Nubj) )�”}”(hX**Parameters** ``struct mipi_dsi_multi_context *ctx`` Context for multiple DSI transactions ``u16 brightness`` brightness value **Description** Like mipi_dsi_dcs_set_display_brightness() but deals with errors in a way that makes it convenient to make several calls in a row.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj‡èh]”hŒ Parameters”…”�”}”(hj‰èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj…èubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M9hj�èubjw )�”}”(hhh]”(j| )�”}”(hŒM``struct mipi_dsi_multi_context *ctx`` Context for multiple DSI transactions ”h]”(j‚ )�”}”(hŒ&``struct mipi_dsi_multi_context *ctx``”h]”jˆ )�”}”(hj¦èh]”hŒ"struct mipi_dsi_multi_context *ctx”…”�”}”(hj¨èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¤èubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M7hj èubjž )�”}”(hhh]”hÎ)�”}”(hŒ%Context for multiple DSI transactions”h]”hŒ%Context for multiple DSI transactions”…”�”}”(hj¿èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j»èh´M7hj¼èubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj èubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j»èh´M7hj�èubj| )�”}”(hŒ$``u16 brightness`` brightness value ”h]”(j‚ )�”}”(hŒ``u16 brightness``”h]”jˆ )�”}”(hjßèh]”hŒu16 brightness”…”�”}”(hjáèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÝèubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M8hjÙèubjž )�”}”(hhh]”hÎ)�”}”(hŒbrightness value”h]”hŒbrightness value”…”�”}”(hjøèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jôèh´M8hjõèubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÙèubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jôèh´M8hj�èubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj�èubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjéh]”hŒ Description”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjéubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M:hj�èubhÎ)�”}”(hŒ‚Like mipi_dsi_dcs_set_display_brightness() but deals with errors in a way that makes it convenient to make several calls in a row.”h]”hŒ‚Like mipi_dsi_dcs_set_display_brightness() but deals with errors in a way that makes it convenient to make several calls in a row.”…”�”}”(hj0éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M9hj�èubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj³Mh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ0mipi_dsi_dcs_set_pixel_format_multi (C function)”Œ%c.mipi_dsi_dcs_set_pixel_format_multi”hNt”auh1j† hj³Mh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒXvoid mipi_dsi_dcs_set_pixel_format_multi (struct mipi_dsi_multi_context *ctx, u8 format)”h]”j¤ )�”}”(hŒWvoid mipi_dsi_dcs_set_pixel_format_multi(struct mipi_dsi_multi_context *ctx, u8 format)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj_éh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj[éh²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MQubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnéh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj[éh²hh³jméh´MQubjÍ )�”}”(hŒ#mipi_dsi_dcs_set_pixel_format_multi”h]”jÓ )�”}”(hŒ#mipi_dsi_dcs_set_pixel_format_multi”h]”hŒ#mipi_dsi_dcs_set_pixel_format_multi”…”�”}”(hj€éh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj|éubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj[éh²hh³jméh´MQubjÞ)�”}”(hŒ/(struct mipi_dsi_multi_context *ctx, u8 format)”h]”(jä)�”}”(hŒ"struct mipi_dsi_multi_context *ctx”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Œmipi_dsi_multi_context”h]”hŒmipi_dsi_multi_context”…”�”}”(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%)�”}”jj‚ésbŒ%c.mipi_dsi_dcs_set_pixel_format_multi”†”asbuh1hhj˜éubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚéh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj˜éubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjèéh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj˜éubjÓ )�”}”(hŒctx”h]”hŒctx”…”�”}”(hjõéh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj˜éubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj”éubjä)�”}”(hŒ u8 format”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(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.mipi_dsi_dcs_set_pixel_format_multi”†”asbuh1hhj êubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/êh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj êubjÓ )�”}”(hŒformat”h]”hŒformat”…”�”}”(hj=êh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj êubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj”éubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj[éh²hh³jméh´MQubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjWéh²hh³jméh´MQubah}”(h]”jRéah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jméh´MQhjTéh²hubj )�”}”(hhh]”hÎ)�”}”(hŒBsets the pixel format for the RGB image data used by the interface”h]”hŒBsets the pixel format for the RGB image data used by the interface”…”�”}”(hjgêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MQhjdêh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjTéh²hh³jméh´MQubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jêj$ jêj% ‰j& ‰j' ‰uh1j˜ h²hhj³Mh³Nh´Nubj) )�”}”(hX **Parameters** ``struct mipi_dsi_multi_context *ctx`` Context for multiple DSI transactions ``u8 format`` pixel format **Description** Like mipi_dsi_dcs_set_pixel_format() but deals with errors in a way that makes it convenient to make several calls in a row.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj‰êh]”hŒ Parameters”…”�”}”(hj‹êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj‡êubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MUhjƒêubjw )�”}”(hhh]”(j| )�”}”(hŒM``struct mipi_dsi_multi_context *ctx`` Context for multiple DSI transactions ”h]”(j‚ )�”}”(hŒ&``struct mipi_dsi_multi_context *ctx``”h]”jˆ )�”}”(hj¨êh]”hŒ"struct mipi_dsi_multi_context *ctx”…”�”}”(hjªêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¦êubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MShj¢êubjž )�”}”(hhh]”hÎ)�”}”(hŒ%Context for multiple DSI transactions”h]”hŒ%Context for multiple DSI transactions”…”�”}”(hjÁêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j½êh´MShj¾êubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¢êubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j½êh´MShjŸêubj| )�”}”(hŒ``u8 format`` pixel format ”h]”(j‚ )�”}”(hŒ ``u8 format``”h]”jˆ )�”}”(hjáêh]”hŒ u8 format”…”�”}”(hjãêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjßêubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MThjÛêubjž )�”}”(hhh]”hÎ)�”}”(hŒ pixel format”h]”hŒ pixel format”…”�”}”(hjúêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jöêh´MThj÷êubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÛêubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jöêh´MThjŸêubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjƒêubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjëh]”hŒ Description”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjëubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MVhjƒêubhÎ)�”}”(hŒ|Like mipi_dsi_dcs_set_pixel_format() but deals with errors in a way that makes it convenient to make several calls in a row.”h]”hŒ|Like mipi_dsi_dcs_set_pixel_format() but deals with errors in a way that makes it convenient to make several calls in a row.”…”�”}”(hj2ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MUhjƒêubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj³Mh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ2mipi_dsi_dcs_set_column_address_multi (C function)”Œ'c.mipi_dsi_dcs_set_column_address_multi”hNt”auh1j† hj³Mh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒcvoid mipi_dsi_dcs_set_column_address_multi (struct mipi_dsi_multi_context *ctx, u16 start, u16 end)”h]”j¤ )�”}”(hŒbvoid mipi_dsi_dcs_set_column_address_multi(struct mipi_dsi_multi_context *ctx, u16 start, u16 end)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjaëh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj]ëh²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Mmubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjpëh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj]ëh²hh³joëh´MmubjÍ )�”}”(hŒ%mipi_dsi_dcs_set_column_address_multi”h]”jÓ )�”}”(hŒ%mipi_dsi_dcs_set_column_address_multi”h]”hŒ%mipi_dsi_dcs_set_column_address_multi”…”�”}”(hj‚ëh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj~ëubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj]ëh²hh³joëh´MmubjÞ)�”}”(hŒ8(struct mipi_dsi_multi_context *ctx, u16 start, u16 end)”h]”(jä)�”}”(hŒ"struct mipi_dsi_multi_context *ctx”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Œmipi_dsi_multi_context”h]”hŒmipi_dsi_multi_context”…”�”}”(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%)�”}”jj„ësbŒ'c.mipi_dsi_dcs_set_column_address_multi”†”asbuh1hhjšëubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜëh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjšëubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjêëh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjšëubjÓ )�”}”(hŒctx”h]”hŒctx”…”�”}”(hj÷ëh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjšëubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj–ëubjä)�”}”(hŒ u16 start”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu16”h]”hŒu16”…”�”}”(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.mipi_dsi_dcs_set_column_address_multi”†”asbuh1hhj ìubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1ìh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj ìubjÓ )�”}”(hŒstart”h]”hŒstart”…”�”}”(hj?ìh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj ìubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj–ëubjä)�”}”(hŒu16 end”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu16”h]”hŒu16”…”�”}”(hj[ìh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjXìubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j]ìŒmodname”NŒ classname”Njé jì )�”}”jï ]”jØëŒ'c.mipi_dsi_dcs_set_column_address_multi”†”asbuh1hhjTìubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjyìh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjTìubjÓ )�”}”(hŒend”h]”hŒend”…”�”}”(hj‡ìh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjTìubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj–ëubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj]ëh²hh³joëh´Mmubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjYëh²hh³joëh´Mmubah}”(h]”jTëah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³joëh´MmhjVëh²hubj )�”}”(hhh]”hÎ)�”}”(hŒKdefine the column extent of the frame memory accessed by the host processor”h]”hŒKdefine the column extent of the frame memory accessed by the host processor”…”�”}”(hj±ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Mmhj®ìh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjVëh²hh³joëh´Mmubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jÉìj$ jÉìj% ‰j& ‰j' ‰uh1j˜ h²hhj³Mh³Nh´Nubj) )�”}”(hXH**Parameters** ``struct mipi_dsi_multi_context *ctx`` Context for multiple DSI transactions ``u16 start`` first column of frame memory ``u16 end`` last column of frame memory **Description** Like mipi_dsi_dcs_set_column_address() but deals with errors in a way that makes it convenient to make several calls in a row.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjÓìh]”hŒ Parameters”…”�”}”(hjÕìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÑìubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MqhjÍìubjw )�”}”(hhh]”(j| )�”}”(hŒM``struct mipi_dsi_multi_context *ctx`` Context for multiple DSI transactions ”h]”(j‚ )�”}”(hŒ&``struct mipi_dsi_multi_context *ctx``”h]”jˆ )�”}”(hjòìh]”hŒ"struct mipi_dsi_multi_context *ctx”…”�”}”(hjôìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjðìubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Mohjììubjž )�”}”(hhh]”hÎ)�”}”(hŒ%Context for multiple DSI transactions”h]”hŒ%Context for multiple DSI transactions”…”�”}”(hj íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jíh´Mohjíubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjììubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jíh´Mohjéìubj| )�”}”(hŒ+``u16 start`` first column of frame memory ”h]”(j‚ )�”}”(hŒ ``u16 start``”h]”jˆ )�”}”(hj+íh]”hŒ u16 start”…”�”}”(hj-íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj)íubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Mphj%íubjž )�”}”(hhh]”hÎ)�”}”(hŒfirst column of frame memory”h]”hŒfirst column of frame memory”…”�”}”(hjDíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j@íh´MphjAíubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj%íubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j@íh´Mphjéìubj| )�”}”(hŒ(``u16 end`` last column of frame memory ”h]”(j‚ )�”}”(hŒ ``u16 end``”h]”jˆ )�”}”(hjdíh]”hŒu16 end”…”�”}”(hjfíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjbíubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Mqhj^íubjž )�”}”(hhh]”hÎ)�”}”(hŒlast column of frame memory”h]”hŒlast column of frame memory”…”�”}”(hj}íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jyíh´Mqhjzíubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj^íubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jyíh´Mqhjéìubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÍìubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjŸíh]”hŒ Description”…”�”}”(hj¡íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj�íubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MshjÍìubhÎ)�”}”(hŒ~Like mipi_dsi_dcs_set_column_address() but deals with errors in a way that makes it convenient to make several calls in a row.”h]”hŒ~Like mipi_dsi_dcs_set_column_address() but deals with errors in a way that makes it convenient to make several calls in a row.”…”�”}”(hjµíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MrhjÍìubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj³Mh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ0mipi_dsi_dcs_set_page_address_multi (C function)”Œ%c.mipi_dsi_dcs_set_page_address_multi”hNt”auh1j† hj³Mh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒavoid mipi_dsi_dcs_set_page_address_multi (struct mipi_dsi_multi_context *ctx, u16 start, u16 end)”h]”j¤ )�”}”(hŒ`void mipi_dsi_dcs_set_page_address_multi(struct mipi_dsi_multi_context *ctx, u16 start, u16 end)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjäíh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjàíh²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.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Œ#mipi_dsi_dcs_set_page_address_multi”h]”jÓ )�”}”(hŒ#mipi_dsi_dcs_set_page_address_multi”h]”hŒ#mipi_dsi_dcs_set_page_address_multi”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjîubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjàíh²hh³jòíh´MŠubjÞ)�”}”(hŒ8(struct mipi_dsi_multi_context *ctx, u16 start, u16 end)”h]”(jä)�”}”(hŒ"struct mipi_dsi_multi_context *ctx”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Œmipi_dsi_multi_context”h]”hŒmipi_dsi_multi_context”…”�”}”(hj?îh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj<îubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jAîŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjîsbŒ%c.mipi_dsi_dcs_set_page_address_multi”†”asbuh1hhjîubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_îh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjîubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjmîh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjîubjÓ )�”}”(hŒctx”h]”hŒctx”…”�”}”(hjzîh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjîubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjîubjä)�”}”(hŒ u16 start”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu16”h]”hŒu16”…”�”}”(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.mipi_dsi_dcs_set_page_address_multi”†”asbuh1hhj�îubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´îh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj�îubjÓ )�”}”(hŒstart”h]”hŒstart”…”�”}”(hjÂîh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj�îubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjîubjä)�”}”(hŒu16 end”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu16”h]”hŒu16”…”�”}”(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.mipi_dsi_dcs_set_page_address_multi”†”asbuh1hhj×îubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjüîh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj×îubjÓ )�”}”(hŒend”h]”hŒend”…”�”}”(hj ïh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj×îubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjîubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjàíh²hh³jòíh´MŠubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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ŒIdefine the page extent of the frame memory accessed by the host processor”h]”hŒIdefine the page extent of the frame memory accessed by the host processor”…”�”}”(hj4ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MŠhj1ï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# jLïj$ jLïj% ‰j& ‰j' ‰uh1j˜ h²hhj³Mh³Nh´Nubj) )�”}”(hXB**Parameters** ``struct mipi_dsi_multi_context *ctx`` Context for multiple DSI transactions ``u16 start`` first page of frame memory ``u16 end`` last page of frame memory **Description** Like mipi_dsi_dcs_set_page_address() but deals with errors in a way that makes it convenient to make several calls in a row.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjVïh]”hŒ Parameters”…”�”}”(hjXïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjTïubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MŽhjPïubjw )�”}”(hhh]”(j| )�”}”(hŒM``struct mipi_dsi_multi_context *ctx`` Context for multiple DSI transactions ”h]”(j‚ )�”}”(hŒ&``struct mipi_dsi_multi_context *ctx``”h]”jˆ )�”}”(hjuïh]”hŒ"struct mipi_dsi_multi_context *ctx”…”�”}”(hjwïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjsïubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MŒhjoïubjž )�”}”(hhh]”hÎ)�”}”(hŒ%Context for multiple DSI transactions”h]”hŒ%Context for multiple DSI transactions”…”�”}”(hjŽïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jŠïh´MŒhj‹ïubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjoïubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jŠïh´MŒhjlïubj| )�”}”(hŒ)``u16 start`` first page of frame memory ”h]”(j‚ )�”}”(hŒ ``u16 start``”h]”jˆ )�”}”(hj®ïh]”hŒ u16 start”…”�”}”(hj°ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¬ïubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M�hj¨ïubjž )�”}”(hhh]”hÎ)�”}”(hŒfirst page of frame memory”h]”hŒfirst page of frame memory”…”�”}”(hjÇïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÃïh´M�hjÄïubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¨ïubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÃïh´M�hjlïubj| )�”}”(hŒ&``u16 end`` last page of frame memory ”h]”(j‚ )�”}”(hŒ ``u16 end``”h]”jˆ )�”}”(hjçïh]”hŒu16 end”…”�”}”(hjéïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjåïubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MŽhjáïubjž )�”}”(hhh]”hÎ)�”}”(hŒlast page of frame memory”h]”hŒlast page of frame memory”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jüïh´MŽhjýïubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjáïubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jüïh´MŽhjlïubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjPïubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj"ðh]”hŒ Description”…”�”}”(hj$ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj ðubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M�hjPïubhÎ)�”}”(hŒ|Like mipi_dsi_dcs_set_page_address() but deals with errors in a way that makes it convenient to make several calls in a row.”h]”hŒ|Like mipi_dsi_dcs_set_page_address() but deals with errors in a way that makes it convenient to make several calls in a row.”…”�”}”(hj8ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M�hjPïubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj³Mh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ1mipi_dsi_dcs_set_tear_scanline_multi (C function)”Œ&c.mipi_dsi_dcs_set_tear_scanline_multi”hNt”auh1j† hj³Mh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ\void mipi_dsi_dcs_set_tear_scanline_multi (struct mipi_dsi_multi_context *ctx, u16 scanline)”h]”j¤ )�”}”(hŒ[void mipi_dsi_dcs_set_tear_scanline_multi(struct mipi_dsi_multi_context *ctx, u16 scanline)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjgðh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjcðh²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M§ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjvðh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjcðh²hh³juðh´M§ubjÍ )�”}”(hŒ$mipi_dsi_dcs_set_tear_scanline_multi”h]”jÓ )�”}”(hŒ$mipi_dsi_dcs_set_tear_scanline_multi”h]”hŒ$mipi_dsi_dcs_set_tear_scanline_multi”…”�”}”(hjˆðh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj„ðubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjcðh²hh³juðh´M§ubjÞ)�”}”(hŒ2(struct mipi_dsi_multi_context *ctx, u16 scanline)”h]”(jä)�”}”(hŒ"struct mipi_dsi_multi_context *ctx”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Œmipi_dsi_multi_context”h]”hŒmipi_dsi_multi_context”…”�”}”(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%)�”}”jjŠðsbŒ&c.mipi_dsi_dcs_set_tear_scanline_multi”†”asbuh1hhj ðubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâðh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj ðubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjððh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj ðubjÓ )�”}”(hŒctx”h]”hŒctx”…”�”}”(hjýðh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj ðubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjœðubjä)�”}”(hŒ u16 scanline”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu16”h]”hŒu16”…”�”}”(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.mipi_dsi_dcs_set_tear_scanline_multi”†”asbuh1hhjñubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7ñh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjñubjÓ )�”}”(hŒscanline”h]”hŒscanline”…”�”}”(hjEñh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjñubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjœðubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjcðh²hh³juðh´M§ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj_ðh²hh³juðh´M§ubah}”(h]”jZðah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³juðh´M§hj\ðh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ]set the scanline to use as trigger for the Tearing Effect output signal of the display module”h]”hŒ]set the scanline to use as trigger for the Tearing Effect output signal of the display module”…”�”}”(hjoñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M§hjlñh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj\ðh²hh³juðh´M§ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j‡ñj$ j‡ñj% ‰j& ‰j' ‰uh1j˜ h²hhj³Mh³Nh´Nubj) )�”}”(hX**Parameters** ``struct mipi_dsi_multi_context *ctx`` Context for multiple DSI transactions ``u16 scanline`` scanline to use as trigger **Description** Like mipi_dsi_dcs_set_tear_scanline() but deals with errors in a way that makes it convenient to make several calls in a row.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj‘ñh]”hŒ Parameters”…”�”}”(hj“ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj�ñubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M«hj‹ñubjw )�”}”(hhh]”(j| )�”}”(hŒM``struct mipi_dsi_multi_context *ctx`` Context for multiple DSI transactions ”h]”(j‚ )�”}”(hŒ&``struct mipi_dsi_multi_context *ctx``”h]”jˆ )�”}”(hj°ñh]”hŒ"struct mipi_dsi_multi_context *ctx”…”�”}”(hj²ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj®ñubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M©hjªñubjž )�”}”(hhh]”hÎ)�”}”(hŒ%Context for multiple DSI transactions”h]”hŒ%Context for multiple DSI transactions”…”�”}”(hjÉñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÅñh´M©hjÆñubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjªñubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÅñh´M©hj§ñubj| )�”}”(hŒ,``u16 scanline`` scanline to use as trigger ”h]”(j‚ )�”}”(hŒ``u16 scanline``”h]”jˆ )�”}”(hjéñh]”hŒ u16 scanline”…”�”}”(hjëñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjçñubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Mªhjãñubjž )�”}”(hhh]”hÎ)�”}”(hŒscanline to use as trigger”h]”hŒscanline to use as trigger”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jþñh´Mªhjÿñubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjãñubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jþñh´Mªhj§ñubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj‹ñubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj$òh]”hŒ Description”…”�”}”(hj&òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj"òubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M¬hj‹ñubhÎ)�”}”(hŒ}Like mipi_dsi_dcs_set_tear_scanline() but deals with errors in a way that makes it convenient to make several calls in a row.”h]”hŒ}Like mipi_dsi_dcs_set_tear_scanline() but deals with errors in a way that makes it convenient to make several calls in a row.”…”�”}”(hj:òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M«hj‹ñubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj³Mh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ/mipi_dsi_shutdown_peripheral_multi (C function)”Œ$c.mipi_dsi_shutdown_peripheral_multi”hNt”auh1j† hj³Mh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒLvoid mipi_dsi_shutdown_peripheral_multi (struct mipi_dsi_multi_context *ctx)”h]”j¤ )�”}”(hŒKvoid mipi_dsi_shutdown_peripheral_multi(struct mipi_dsi_multi_context *ctx)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjiòh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjeòh²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MÃubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjxòh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjeòh²hh³jwòh´MÃubjÍ )�”}”(hŒ"mipi_dsi_shutdown_peripheral_multi”h]”jÓ )�”}”(hŒ"mipi_dsi_shutdown_peripheral_multi”h]”hŒ"mipi_dsi_shutdown_peripheral_multi”…”�”}”(hjŠòh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj†òubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjeòh²hh³jwòh´MÃubjÞ)�”}”(hŒ$(struct mipi_dsi_multi_context *ctx)”h]”jä)�”}”(hŒ"struct mipi_dsi_multi_context *ctx”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Œmipi_dsi_multi_context”h]”hŒmipi_dsi_multi_context”…”�”}”(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%)�”}”jjŒòsbŒ$c.mipi_dsi_shutdown_peripheral_multi”†”asbuh1hhj¢òubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjäòh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¢òubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjòòh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¢òubjÓ )�”}”(hŒctx”h]”hŒctx”…”�”}”(hjÿòh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¢òubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjžòubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjeòh²hh³jwòh´MÃubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjaòh²hh³jwòh´MÃubah}”(h]”j\òah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jwòh´MÃhj^òh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ#sends a Shutdown Peripheral command”h]”hŒ#sends a Shutdown Peripheral command”…”�”}”(hj)óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MÃhj&óh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj^òh²hh³jwòh´MÃubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jAój$ jAój% ‰j& ‰j' ‰uh1j˜ h²hhj³Mh³Nh´Nubj) )�”}”(hŒì**Parameters** ``struct mipi_dsi_multi_context *ctx`` Context for multiple DSI transactions **Description** Like mipi_dsi_shutdown_peripheral() but deals with errors in a way that makes it convenient to make several calls in a row.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjKóh]”hŒ Parameters”…”�”}”(hjMóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjIóubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MÇhjEóubjw )�”}”(hhh]”j| )�”}”(hŒM``struct mipi_dsi_multi_context *ctx`` Context for multiple DSI transactions ”h]”(j‚ )�”}”(hŒ&``struct mipi_dsi_multi_context *ctx``”h]”jˆ )�”}”(hjjóh]”hŒ"struct mipi_dsi_multi_context *ctx”…”�”}”(hjlóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjhóubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MÄhjdóubjž )�”}”(hhh]”hÎ)�”}”(hŒ%Context for multiple DSI transactions”h]”hŒ%Context for multiple DSI transactions”…”�”}”(hjƒóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jóh´MÄhj€óubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjdóubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jóh´MÄhjaóubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjEóubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj¥óh]”hŒ Description”…”�”}”(hj§óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj£óubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MÆhjEóubhÎ)�”}”(hŒ{Like mipi_dsi_shutdown_peripheral() but deals with errors in a way that makes it convenient to make several calls in a row.”h]”hŒ{Like mipi_dsi_shutdown_peripheral() but deals with errors in a way that makes it convenient to make several calls in a row.”…”�”}”(hj»óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MÅhjEóubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj³Mh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ*mipi_dsi_driver_register_full (C function)”Œc.mipi_dsi_driver_register_full”hNt”auh1j† hj³Mh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒUint mipi_dsi_driver_register_full (struct mipi_dsi_driver *drv, struct module *owner)”h]”j¤ )�”}”(hŒTint mipi_dsi_driver_register_full(struct mipi_dsi_driver *drv, struct module *owner)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjêóh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjæóh²hh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.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Œmipi_dsi_driver_register_full”h]”jÓ )�”}”(hŒmipi_dsi_driver_register_full”h]”hŒmipi_dsi_driver_register_full”…”�”}”(hj ôh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjôubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjæóh²hh³jøóh´MöubjÞ)�”}”(hŒ3(struct mipi_dsi_driver *drv, struct module *owner)”h]”(jä)�”}”(hŒstruct mipi_dsi_driver *drv”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj'ôh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj#ôubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4ôh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj#ôubh)�”}”(hhh]”jÓ )�”}”(hŒmipi_dsi_driver”h]”hŒmipi_dsi_driver”…”�”}”(hjEôh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjBôubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jGôŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj ôsbŒc.mipi_dsi_driver_register_full”†”asbuh1hhj#ôubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeôh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj#ôubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjsôh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj#ôubjÓ )�”}”(hŒdrv”h]”hŒdrv”…”�”}”(hj€ôh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj#ôubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjôubjä)�”}”(hŒstruct module *owner”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Œmodule”h]”hŒmodule”…”�”}”(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ï ]”jaôŒc.mipi_dsi_driver_register_full”†”asbuh1hhj•ôubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕôh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj•ôubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjãôh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj•ôubjÓ )�”}”(hŒowner”h]”hŒowner”…”�”}”(hjðôh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj•ôubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjôubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjæóh²hh³jøóh´Möubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ!register a driver for DSI devices”h]”hŒ!register a driver for DSI devices”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.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# j2õj$ j2õj% ‰j& ‰j' ‰uh1j˜ h²hhj³Mh³Nh´Nubj) )�”}”(hŒ®**Parameters** ``struct mipi_dsi_driver *drv`` DSI driver structure ``struct module *owner`` owner module **Return** 0 on success or a negative error code on failure.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj<õh]”hŒ Parameters”…”�”}”(hj>õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj:õubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Múhj6õubjw )�”}”(hhh]”(j| )�”}”(hŒ5``struct mipi_dsi_driver *drv`` DSI driver structure ”h]”(j‚ )�”}”(hŒ``struct mipi_dsi_driver *drv``”h]”jˆ )�”}”(hj[õh]”hŒstruct mipi_dsi_driver *drv”…”�”}”(hj]õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjYõubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´M÷hjUõubjž )�”}”(hhh]”hÎ)�”}”(hŒDSI driver structure”h]”hŒDSI driver structure”…”�”}”(hjtõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jpõh´M÷hjqõubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjUõubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jpõh´M÷hjRõubj| )�”}”(hŒ&``struct module *owner`` owner module ”h]”(j‚ )�”}”(hŒ``struct module *owner``”h]”jˆ )�”}”(hj”õh]”hŒstruct module *owner”…”�”}”(hj–õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj’õubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´MøhjŽõubjž )�”}”(hhh]”hÎ)�”}”(hŒ owner module”h]”hŒ owner module”…”�”}”(hj­õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j©õh´Møhjªõubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjŽõubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j©õh´MøhjRõubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj6õubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjÏõh]”hŒReturn”…”�”}”(hjÑõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÍõubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Múhj6õubhÎ)�”}”(hŒ10 on success or a negative error code on failure.”h]”hŒ10 on success or a negative error code on failure.”…”�”}”(hjåõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œc/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:356: ./drivers/gpu/drm/drm_mipi_dsi.c”h´Múhj6õubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj³Mh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ'mipi_dsi_driver_unregister (C function)”Œc.mipi_dsi_driver_unregister”hNt”auh1j† hj³Mh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ=void mipi_dsi_driver_unregister (struct mipi_dsi_driver *drv)”h]”j¤ )�”}”(hŒ` ``rc_model_size`` Total size of RC model ``flatness_min_qp`` Minimum QP where flatness information is sent ``flatness_max_qp`` Maximum QP where flatness information is sent ``initial_scale_value`` Initial value for the scale factor ``scale_decrement_interval`` Specifies number of group times between decrementing the scale factor at beginning of a slice. ``scale_increment_interval`` Number of group times between incrementing the scale factor value used at the beginning of a slice. ``nfl_bpg_offset`` Non first line BPG offset to be used ``slice_bpg_offset`` BPG offset used to enforce slice bit ``final_offset`` Final RC linear transformation offset value ``vbr_enable`` True if VBR mode is enabled, false if disabled ``mux_word_size`` Mux word size (in bits) for SSM mode ``slice_chunk_size`` The (max) size in bytes of the "chunks" that are used in slice multiplexing. ``rc_bits`` Rate control buffer size in bits ``dsc_version_minor`` DSC minor version ``dsc_version_major`` DSC major version ``native_422`` True if Native 4:2:2 supported, else false ``native_420`` True if Native 4:2:0 supported else false. ``second_line_bpg_offset`` Additional bits/grp for seconnd line of slice for native 4:2:0 ``nsl_bpg_offset`` Num of bits deallocated for each grp that is not in second line of slice ``second_line_offset_adj`` Offset adjustment for second line in Native 4:2:0 mode”h]”(hÎ)�”}”(hŒ**Definition**::”h]”(j3 )�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjÔùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÐùubhŒ:”…”�”}”(hjÐùh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´KGhjÌùubjN )�”}”(hXystruct drm_dsc_config { u8 line_buf_depth; u8 bits_per_component; bool convert_rgb; u8 slice_count; u16 slice_width; u16 slice_height; bool simple_422; u16 pic_width; u16 pic_height; u8 rc_tgt_offset_high; u8 rc_tgt_offset_low; u16 bits_per_pixel; u8 rc_edge_factor; u8 rc_quant_incr_limit1; u8 rc_quant_incr_limit0; u16 initial_xmit_delay; u16 initial_dec_delay; bool block_pred_enable; u8 first_line_bpg_offset; u16 initial_offset; u16 rc_buf_thresh[DSC_NUM_BUF_RANGES - 1]; struct drm_dsc_rc_range_parameters rc_range_params[DSC_NUM_BUF_RANGES]; u16 rc_model_size; u8 flatness_min_qp; u8 flatness_max_qp; u8 initial_scale_value; u16 scale_decrement_interval; u16 scale_increment_interval; u16 nfl_bpg_offset; u16 slice_bpg_offset; u16 final_offset; bool vbr_enable; u8 mux_word_size; u16 slice_chunk_size; u16 rc_bits; u8 dsc_version_minor; u8 dsc_version_major; bool native_422; bool native_420; u8 second_line_bpg_offset; u16 nsl_bpg_offset; u16 second_line_offset_adj; };”h]”hXystruct drm_dsc_config { u8 line_buf_depth; u8 bits_per_component; bool convert_rgb; u8 slice_count; u16 slice_width; u16 slice_height; bool simple_422; u16 pic_width; u16 pic_height; u8 rc_tgt_offset_high; u8 rc_tgt_offset_low; u16 bits_per_pixel; u8 rc_edge_factor; u8 rc_quant_incr_limit1; u8 rc_quant_incr_limit0; u16 initial_xmit_delay; u16 initial_dec_delay; bool block_pred_enable; u8 first_line_bpg_offset; u16 initial_offset; u16 rc_buf_thresh[DSC_NUM_BUF_RANGES - 1]; struct drm_dsc_rc_range_parameters rc_range_params[DSC_NUM_BUF_RANGES]; u16 rc_model_size; u8 flatness_min_qp; u8 flatness_max_qp; u8 initial_scale_value; u16 scale_decrement_interval; u16 scale_increment_interval; u16 nfl_bpg_offset; u16 slice_bpg_offset; u16 final_offset; bool vbr_enable; u8 mux_word_size; u16 slice_chunk_size; u16 rc_bits; u8 dsc_version_minor; u8 dsc_version_major; bool native_422; bool native_420; u8 second_line_bpg_offset; u16 nsl_bpg_offset; u16 second_line_offset_adj; };”…”�”}”hjíùsbah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jM h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´KIhjÌùubhÎ)�”}”(hŒ **Members**”h]”j3 )�”}”(hjþùh]”hŒMembers”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjüùubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´KvhjÌùubjw )�”}”(hhh]”(j| )�”}”(hŒM``line_buf_depth`` Bits per component for previous reconstructed line buffer ”•h]”(j‚ )�”}”(hŒ``line_buf_depth``”h]”jˆ )�”}”(hjúh]”hŒline_buf_depth”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjúubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´KKhjúubjž )�”}”(hhh]”hÎ)�”}”(hŒ9Bits per component for previous reconstructed line buffer”h]”hŒ9Bits per component for previous reconstructed line buffer”…”�”}”(hj6úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j2úh´KKhj3úubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjúubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j2úh´KKhjúubj| )�”}”(hŒ<``bits_per_component`` Bits per component to code (8/10/12) ”h]”(j‚ )�”}”(hŒ``bits_per_component``”h]”jˆ )�”}”(hjVúh]”hŒbits_per_component”…”�”}”(hjXúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjTúubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´KPhjPúubjž )�”}”(hhh]”hÎ)�”}”(hŒ$Bits per component to code (8/10/12)”h]”hŒ$Bits per component to code (8/10/12)”…”�”}”(hjoúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jkúh´KPhjlúubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjPúubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jkúh´KPhjúubj| )�”}”(hŒm``convert_rgb`` Flag to indicate if RGB - YCoCg conversion is needed True if RGB input, False if YCoCg input ”h]”(j‚ )�”}”(hŒ``convert_rgb``”h]”jˆ )�”}”(hj�úh]”hŒ convert_rgb”…”�”}”(hj‘úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj�úubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´KUhj‰úubjž )�”}”(hhh]”hÎ)�”}”(hŒ\Flag to indicate if RGB - YCoCg conversion is needed True if RGB input, False if YCoCg input”h]”hŒ\Flag to indicate if RGB - YCoCg conversion is needed True if RGB input, False if YCoCg input”…”�”}”(hj¨úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´KThj¥úubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj‰úubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¤úh´KUhjúubj| )�”}”(hŒB``slice_count`` Number fo slices per line used by the DSC encoder ”h]”(j‚ )�”}”(hŒ``slice_count``”h]”jˆ )�”}”(hjÉúh]”hŒ slice_count”…”�”}”(hjËúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÇúubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´KZhjÃúubjž )�”}”(hhh]”hÎ)�”}”(hŒ1Number fo slices per line used by the DSC encoder”h]”hŒ1Number fo slices per line used by the DSC encoder”…”�”}”(hjâúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÞúh´KZhjßúubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÃúubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÞúh´KZhjúubj| )�”}”(hŒ.``slice_width`` Width of each slice in pixels ”h]”(j‚ )�”}”(hŒ``slice_width``”h]”jˆ )�”}”(hjûh]”hŒ slice_width”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjûubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´K^hjüúubjž )�”}”(hhh]”hÎ)�”}”(hŒWidth of each slice in pixels”h]”hŒWidth of each slice in pixels”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jûh´K^hjûubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjüúubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jûh´K^hjúubj| )�”}”(hŒ(``slice_height`` Slice height in pixels ”h]”(j‚ )�”}”(hŒ``slice_height``”h]”jˆ )�”}”(hj;ûh]”hŒ slice_height”…”�”}”(hj=ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj9ûubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´Kbhj5ûubjž )�”}”(hhh]”hÎ)�”}”(hŒSlice height in pixels”h]”hŒSlice height in pixels”…”�”}”(hjTûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jPûh´KbhjQûubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj5ûubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jPûh´Kbhjúubj| )�”}”(hŒ?``simple_422`` True if simple 4_2_2 mode is enabled else False ”h]”(j‚ )�”}”(hŒ``simple_422``”h]”jˆ )�”}”(hjtûh]”hŒ simple_422”…”�”}”(hjvûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjrûubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´Kfhjnûubjž )�”}”(hhh]”hÎ)�”}”(hŒ/True if simple 4_2_2 mode is enabled else False”h]”hŒ/True if simple 4_2_2 mode is enabled else False”…”�”}”(hj�ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j‰ûh´KfhjŠûubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjnûubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j‰ûh´Kfhjúubj| )�”}”(hŒ9``pic_width`` Width of the input display frame in pixels ”h]”(j‚ )�”}”(hŒ ``pic_width``”h]”jˆ )�”}”(hj­ûh]”hŒ pic_width”…”�”}”(hj¯ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj«ûubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´Kjhj§ûubjž )�”}”(hhh]”hÎ)�”}”(hŒ*Width of the input display frame in pixels”h]”hŒ*Width of the input display frame in pixels”…”�”}”(hjÆûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÂûh´KjhjÃûubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj§ûubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÂûh´Kjhjúubj| )�”}”(hŒ:``pic_height`` Vertical height of the input display frame ”h]”(j‚ )�”}”(hŒ``pic_height``”h]”jˆ )�”}”(hjæûh]”hŒ pic_height”…”�”}”(hjèûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjäûubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´Knhjàûubjž )�”}”(hhh]”hÎ)�”}”(hŒ*Vertical height of the input display frame”h]”hŒ*Vertical height of the input display frame”…”�”}”(hjÿûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jûûh´Knhjüûubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjàûubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jûûh´Knhjúubj| )�”}”(hŒR``rc_tgt_offset_high`` Offset to bits/group used by RC to determine QP adjustment ”h]”(j‚ )�”}”(hŒ``rc_tgt_offset_high``”h]”jˆ )�”}”(hjüh]”hŒrc_tgt_offset_high”…”�”}”(hj!üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjüubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´Krhjüubjž )�”}”(hhh]”hÎ)�”}”(hŒ:Offset to bits/group used by RC to determine QP adjustment”h]”hŒ:Offset to bits/group used by RC to determine QP adjustment”…”�”}”(hj8üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j4üh´Krhj5üubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjüubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j4üh´Krhjúubj| )�”}”(hŒQ``rc_tgt_offset_low`` Offset to bits/group used by RC to determine QP adjustment ”h]”(j‚ )�”}”(hŒ``rc_tgt_offset_low``”h]”jˆ )�”}”(hjXüh]”hŒrc_tgt_offset_low”…”�”}”(hjZüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjVüubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´KwhjRüubjž )�”}”(hhh]”hÎ)�”}”(hŒ:Offset to bits/group used by RC to determine QP adjustment”h]”hŒ:Offset to bits/group used by RC to determine QP adjustment”…”�”}”(hjqüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jmüh´Kwhjnüubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjRüubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jmüh´Kwhjúubj| )�”}”(hŒU``bits_per_pixel`` Target bits per pixel with 4 fractional bits, bits_per_pixel << 4 ”h]”(j‚ )�”}”(hŒ``bits_per_pixel``”h]”jˆ )�”}”(hj‘üh]”hŒbits_per_pixel”…”�”}”(hj“üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj�üubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´K|hj‹üubjž )�”}”(hhh]”hÎ)�”}”(hŒATarget bits per pixel with 4 fractional bits, bits_per_pixel << 4”h]”hŒATarget bits per pixel with 4 fractional bits, bits_per_pixel << 4”…”�”}”(hjªüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¦üh´K|hj§üubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj‹üubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¦üh´K|hjúubj| )�”}”(hŒX``rc_edge_factor`` Factor to determine if an edge is present based on the bits produced ”h]”(j‚ )�”}”(hŒ``rc_edge_factor``”h]”jˆ )�”}”(hjÊüh]”hŒrc_edge_factor”…”�”}”(hjÌüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÈüubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´K�hjÄüubjž )�”}”(hhh]”hÎ)�”}”(hŒDFactor to determine if an edge is present based on the bits produced”h]”hŒDFactor to determine if an edge is present based on the bits produced”…”�”}”(hjãüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jßüh´K�hjàüubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÄüubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jßüh´K�hjúubj| )�”}”(hŒR``rc_quant_incr_limit1`` Slow down incrementing once the range reaches this value ”h]”(j‚ )�”}”(hŒ``rc_quant_incr_limit1``”h]”jˆ )�”}”(hjýh]”hŒrc_quant_incr_limit1”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjýubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´K†hjýüubjž )�”}”(hhh]”hÎ)�”}”(hŒ8Slow down incrementing once the range reaches this value”h]”hŒ8Slow down incrementing once the range reaches this value”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jýh´K†hjýubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjýüubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jýh´K†hjúubj| )�”}”(hŒR``rc_quant_incr_limit0`` Slow down incrementing once the range reaches this value ”h]”(j‚ )�”}”(hŒ``rc_quant_incr_limit0``”h]”jˆ )�”}”(hj<ýh]”hŒrc_quant_incr_limit0”…”�”}”(hj>ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj:ýubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´K‹hj6ýubjž )�”}”(hhh]”hÎ)�”}”(hŒ8Slow down incrementing once the range reaches this value”h]”hŒ8Slow down incrementing once the range reaches this value”…”�”}”(hjUýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jQýh´K‹hjRýubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj6ýubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jQýh´K‹hjúubj| )�”}”(hŒJ``initial_xmit_delay`` Number of pixels to delay the initial transmission ”h]”(j‚ )�”}”(hŒ``initial_xmit_delay``”h]”jˆ )�”}”(hjuýh]”hŒinitial_xmit_delay”…”�”}”(hjwýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjsýubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´K�hjoýubjž )�”}”(hhh]”hÎ)�”}”(hŒ2Number of pixels to delay the initial transmission”h]”hŒ2Number of pixels to delay the initial transmission”…”�”}”(hjŽýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jŠýh´K�hj‹ýubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjoýubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jŠýh´K�hjúubj| )�”}”(hŒ¥``initial_dec_delay`` Initial decoder delay, number of pixel times that the decoder accumulates data in its rate buffer before starting to decode and output pixels. ”h]”(j‚ )�”}”(hŒ``initial_dec_delay``”h]”jˆ )�”}”(hj®ýh]”hŒinitial_dec_delay”…”�”}”(hj°ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¬ýubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´K—hj¨ýubjž )�”}”(hhh]”hÎ)�”}”(hŒŽInitial decoder delay, number of pixel times that the decoder accumulates data in its rate buffer before starting to decode and output pixels.”h]”hŒŽInitial decoder delay, number of pixel times that the decoder accumulates data in its rate buffer before starting to decode and output pixels.”…”�”}”(hjÇýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´K•hjÄýubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¨ýubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÃýh´K—hjúubj| )�”}”(hŒs``block_pred_enable`` True if block prediction is used to code any groups within the picture. False if BP not used ”h]”(j‚ )�”}”(hŒ``block_pred_enable``”h]”jˆ )�”}”(hjèýh]”hŒblock_pred_enable”…”�”}”(hjêýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjæýubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´K�hjâýubjž )�”}”(hhh]”hÎ)�”}”(hŒ\True if block prediction is used to code any groups within the picture. False if BP not used”h]”hŒ\True if block prediction is used to code any groups within the picture. False if BP not used”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´Kœhjþýubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjâýubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jýýh´K�hjúubj| )�”}”(hŒi``first_line_bpg_offset`` Number of additional bits allocated for each group on the first line of slice. ”h]”(j‚ )�”}”(hŒ``first_line_bpg_offset``”h]”jˆ )�”}”(hj"þh]”hŒfirst_line_bpg_offset”…”�”}”(hj$þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj þubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´K£hjþubjž )�”}”(hhh]”hÎ)�”}”(hŒNNumber of additional bits allocated for each group on the first line of slice.”h]”hŒNNumber of additional bits allocated for each group on the first line of slice.”…”�”}”(hj;þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´K¢hj8þubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjþubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j7þh´K£hjúubj| )�”}”(hŒC``initial_offset`` Value to use for RC model offset at slice start ”h]”(j‚ )�”}”(hŒ``initial_offset``”h]”jˆ )�”}”(hj\þh]”hŒinitial_offset”…”�”}”(hj^þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjZþubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´K¨hjVþubjž )�”}”(hhh]”hÎ)�”}”(hŒ/Value to use for RC model offset at slice start”h]”hŒ/Value to use for RC model offset at slice start”…”�”}”(hjuþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jqþh´K¨hjrþubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjVþubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jqþh´K¨hjúubj| )�”}”(hŒ@``rc_buf_thresh`` Thresholds defining each of the buffer ranges ”h]”(j‚ )�”}”(hŒ``rc_buf_thresh``”h]”jˆ )�”}”(hj•þh]”hŒ rc_buf_thresh”…”�”}”(hj—þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj“þubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´K¬hj�þubjž )�”}”(hhh]”hÎ)�”}”(hŒ-Thresholds defining each of the buffer ranges”h]”hŒ-Thresholds defining each of the buffer ranges”…”�”}”(hj®þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jªþh´K¬hj«þubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj�þubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jªþh´K¬hjúubj| )�”}”(hŒ�``rc_range_params`` Parameters for each of the RC ranges defined in :c:type:`struct drm_dsc_rc_range_parameters ` ”h]”(j‚ )�”}”(hŒ``rc_range_params``”h]”jˆ )�”}”(hjÎþh]”hŒrc_range_params”…”�”}”(hjÐþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÌþubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´K±hjÈþubjž )�”}”(hhh]”hÎ)�”}”(hŒzParameters for each of the RC ranges defined in :c:type:`struct drm_dsc_rc_range_parameters `”h]”(hŒ0Parameters for each of the RC ranges defined in ”…”�”}”(hjçþh²hh³Nh´Nubh)�”}”(hŒJ:c:type:`struct drm_dsc_rc_range_parameters `”h]”jˆ )�”}”(hjñþh]”hŒ"struct drm_dsc_rc_range_parameters”…”�”}”(hjóþh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjïþubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dsc_rc_range_parameters”uh1hh³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´K°hjçþubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÿh´K°hjäþubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÈþubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jãþh´K±hjúubj| )�”}”(hŒ)``rc_model_size`` Total size of RC model ”h]”(j‚ )�”}”(hŒ``rc_model_size``”h]”jˆ )�”}”(hj'ÿh]”hŒ rc_model_size”…”�”}”(hj)ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj%ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´K¶hj!ÿubjž )�”}”(hhh]”hÎ)�”}”(hŒTotal size of RC model”h]”hŒTotal size of RC model”…”�”}”(hj@ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j<ÿh´K¶hj=ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj!ÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j<ÿh´K¶hjúubj| )�”}”(hŒB``flatness_min_qp`` Minimum QP where flatness information is sent ”h]”(j‚ )�”}”(hŒ``flatness_min_qp``”h]”jˆ )�”}”(hj`ÿh]”hŒflatness_min_qp”…”�”}”(hjbÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj^ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´KºhjZÿubjž )�”}”(hhh]”hÎ)�”}”(hŒ-Minimum QP where flatness information is sent”h]”hŒ-Minimum QP where flatness information is sent”…”�”}”(hjyÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³juÿh´Kºhjvÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjZÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³juÿh´Kºhjúubj| )�”}”(hŒB``flatness_max_qp`` Maximum QP where flatness information is sent ”h]”(j‚ )�”}”(hŒ``flatness_max_qp``”h]”jˆ )�”}”(hj™ÿh]”hŒflatness_max_qp”…”�”}”(hj›ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj—ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´K¾hj“ÿubjž )�”}”(hhh]”hÎ)�”}”(hŒ-Maximum QP where flatness information is sent”h]”hŒ-Maximum QP where flatness information is sent”…”�”}”(hj²ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j®ÿh´K¾hj¯ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj“ÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j®ÿh´K¾hjúubj| )�”}”(hŒ;``initial_scale_value`` Initial value for the scale factor ”h]”(j‚ )�”}”(hŒ``initial_scale_value``”h]”jˆ )�”}”(hjÒÿh]”hŒinitial_scale_value”…”�”}”(hjÔÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÐÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´KÂhjÌÿubjž )�”}”(hhh]”hÎ)�”}”(hŒ"Initial value for the scale factor”h]”hŒ"Initial value for the scale factor”…”�”}”(hjëÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jçÿh´KÂhjèÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÌÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jçÿh´KÂhjúubj| )�”}”(hŒ|``scale_decrement_interval`` Specifies number of group times between decrementing the scale factor at beginning of a slice. ”h]”(j‚ )�”}”(hŒ``scale_decrement_interval``”h]”jˆ )�”}”(hj h]”hŒscale_decrement_interval”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´KÇhjubjž )�”}”(hhh]”hÎ)�”}”(hŒ^Specifies number of group times between decrementing the scale factor at beginning of a slice.”h]”hŒ^Specifies number of group times between decrementing the scale factor at beginning of a slice.”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´KÆhj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j h´KÇhjúubj| )�”}”(hŒ�``scale_increment_interval`` Number of group times between incrementing the scale factor value used at the beginning of a slice. ”h]”(j‚ )�”}”(hŒ``scale_increment_interval``”h]”jˆ )�”}”(hjEh]”hŒscale_increment_interval”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjCubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´KÍhj?ubjž )�”}”(hhh]”hÎ)�”}”(hŒcNumber of group times between incrementing the scale factor value used at the beginning of a slice.”h]”hŒcNumber of group times between incrementing the scale factor value used at the beginning of a slice.”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´KÌhj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jZh´KÍhjúubj| )�”}”(hŒ8``nfl_bpg_offset`` Non first line BPG offset to be used ”h]”(j‚ )�”}”(hŒ``nfl_bpg_offset``”h]”jˆ )�”}”(hjh]”hŒnfl_bpg_offset”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´KÒhjyubjž )�”}”(hhh]”hÎ)�”}”(hŒ$Non first line BPG offset to be used”h]”hŒ$Non first line BPG offset to be used”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j”h´KÒhj•ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjyubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j”h´KÒhjúubj| )�”}”(hŒ:``slice_bpg_offset`` BPG offset used to enforce slice bit ”h]”(j‚ )�”}”(hŒ``slice_bpg_offset``”h]”jˆ )�”}”(hj¸h]”hŒslice_bpg_offset”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´KÖhj²ubjž )�”}”(hhh]”hÎ)�”}”(hŒ$BPG offset used to enforce slice bit”h]”hŒ$BPG offset used to enforce slice bit”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÍh´KÖhjÎubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÍh´KÖhjúubj| )�”}”(hŒ=``final_offset`` Final RC linear transformation offset value ”h]”(j‚ )�”}”(hŒ``final_offset``”h]”jˆ )�”}”(hjñh]”hŒ final_offset”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjïubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´KÚhjëubjž )�”}”(hhh]”hÎ)�”}”(hŒ+Final RC linear transformation offset value”h]”hŒ+Final RC linear transformation offset value”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jh´KÚhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjëubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jh´KÚhjúubj| )�”}”(hŒ>``vbr_enable`` True if VBR mode is enabled, false if disabled ”h]”(j‚ )�”}”(hŒ``vbr_enable``”h]”jˆ )�”}”(hj*h]”hŒ vbr_enable”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´KÞhj$ubjž )�”}”(hhh]”hÎ)�”}”(hŒ.True if VBR mode is enabled, false if disabled”h]”hŒ.True if VBR mode is enabled, false if disabled”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j?h´KÞhj@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j?h´KÞhjúubj| )�”}”(hŒ7``mux_word_size`` Mux word size (in bits) for SSM mode ”h]”(j‚ )�”}”(hŒ``mux_word_size``”h]”jˆ )�”}”(hjch]”hŒ mux_word_size”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjaubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´Kâhj]ubjž )�”}”(hhh]”hÎ)�”}”(hŒ$Mux word size (in bits) for SSM mode”h]”hŒ$Mux word size (in bits) for SSM mode”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jxh´Kâhjyubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jxh´Kâhjúubj| )�”}”(hŒb``slice_chunk_size`` The (max) size in bytes of the "chunks" that are used in slice multiplexing. ”h]”(j‚ )�”}”(hŒ``slice_chunk_size``”h]”jˆ )�”}”(hjœh]”hŒslice_chunk_size”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjšubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´Kçhj–ubjž )�”}”(hhh]”hÎ)�”}”(hŒLThe (max) size in bytes of the "chunks" that are used in slice multiplexing.”h]”hŒPThe (max) size in bytes of the “chunksâ€� that are used in slice multiplexing.”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´Kæhj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j±h´Kçhjúubj| )�”}”(hŒ-``rc_bits`` Rate control buffer size in bits ”h]”(j‚ )�”}”(hŒ ``rc_bits``”h]”jˆ )�”}”(hjÖh]”hŒrc_bits”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÔubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´KìhjÐubjž )�”}”(hhh]”hÎ)�”}”(hŒ Rate control buffer size in bits”h]”hŒ Rate control buffer size in bits”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jëh´Kìhjìubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÐubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jëh´Kìhjúubj| )�”}”(hŒ(``dsc_version_minor`` DSC minor version ”h]”(j‚ )�”}”(hŒ``dsc_version_minor``”h]”jˆ )�”}”(hjh]”hŒdsc_version_minor”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´Kðhj ubjž )�”}”(hhh]”hÎ)�”}”(hŒDSC minor version”h]”hŒDSC minor version”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j$h´Kðhj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j$h´Kðhjúubj| )�”}”(hŒ(``dsc_version_major`` DSC major version ”h]”(j‚ )�”}”(hŒ``dsc_version_major``”h]”jˆ )�”}”(hjHh]”hŒdsc_version_major”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjFubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´KôhjBubjž )�”}”(hhh]”hÎ)�”}”(hŒDSC major version”h]”hŒDSC major version”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j]h´Kôhj^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjBubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j]h´Kôhjúubj| )�”}”(hŒ:``native_422`` True if Native 4:2:2 supported, else false ”h]”(j‚ )�”}”(hŒ``native_422``”h]”jˆ )�”}”(hj�h]”hŒ native_422”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´Køhj{ubjž )�”}”(hhh]”hÎ)�”}”(hŒ*True if Native 4:2:2 supported, else false”h]”hŒ*True if Native 4:2:2 supported, else false”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j–h´Køhj—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj{ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j–h´Køhjúubj| )�”}”(hŒ:``native_420`` True if Native 4:2:0 supported else false. ”h]”(j‚ )�”}”(hŒ``native_420``”h]”jˆ )�”}”(hjºh]”hŒ native_420”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´Kühj´ubjž )�”}”(hhh]”hÎ)�”}”(hŒ*True if Native 4:2:0 supported else false.”h]”hŒ*True if Native 4:2:0 supported else false.”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÏh´KühjÐubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÏh´Kühjúubj| )�”}”(hŒZ``second_line_bpg_offset`` Additional bits/grp for seconnd line of slice for native 4:2:0 ”h]”(j‚ )�”}”(hŒ``second_line_bpg_offset``”h]”jˆ )�”}”(hjóh]”hŒsecond_line_bpg_offset”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjñubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´Mhjíubjž )�”}”(hhh]”hÎ)�”}”(hŒ>Additional bits/grp for seconnd line of slice for native 4:2:0”h]”hŒ>Additional bits/grp for seconnd line of slice for native 4:2:0”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jh´Mhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjíubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jh´Mhjúubj| )�”}”(hŒ\``nsl_bpg_offset`` Num of bits deallocated for each grp that is not in second line of slice ”h]”(j‚ )�”}”(hŒ``nsl_bpg_offset``”h]”jˆ )�”}”(hj,h]”hŒnsl_bpg_offset”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´Mhj&ubjž )�”}”(hhh]”hÎ)�”}”(hŒHNum of bits deallocated for each grp that is not in second line of slice”h]”hŒHNum of bits deallocated for each grp that is not in second line of slice”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´MhjBubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jAh´Mhjúubj| )�”}”(hŒQ``second_line_offset_adj`` Offset adjustment for second line in Native 4:2:0 mode”h]”(j‚ )�”}”(hŒ``second_line_offset_adj``”h]”jˆ )�”}”(hjfh]”hŒsecond_line_offset_adj”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjdubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´M hj`ubjž )�”}”(hhh]”hÎ)�”}”(hŒ6Offset adjustment for second line in Native 4:2:0 mode”h]”hŒ6Offset adjustment for second line in Native 4:2:0 mode”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´M hj|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j{h´M hjúubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÌùubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjƒ÷h²hh³jÀ÷h´NubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj©h]”hŒ Description”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj§ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´Mhjƒ÷h²hubhÎ)�”}”(hŒ{Driver populates this structure with all the parameters required to configure the display stream compression on the source.”h]”hŒ{Driver populates this structure with all the parameters required to configure the display stream compression on the source.”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´KDhjƒ÷h²hubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ(drm_dsc_picture_parameter_set (C struct)”Œc.drm_dsc_picture_parameter_set”hNt”auh1j† hjƒ÷h²hh³jÀ÷h´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒdrm_dsc_picture_parameter_set”h]”j¤ )�”}”(hŒ$struct drm_dsc_picture_parameter_set”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjãh²hh³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´KJubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjãh²hh³jôh´KJubjÍ )�”}”(hŒdrm_dsc_picture_parameter_set”h]”jÓ )�”}”(hjáh]”hŒdrm_dsc_picture_parameter_set”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjãh²hh³jôh´KJubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjßh²hh³jôh´KJubah}”(h]”jÚah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jôh´KJhjÜh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ-Represents 128 bytes of Picture Parameter Set”h]”hŒ-Represents 128 bytes of Picture Parameter Set”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´Mhj&h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÜh²hh³jôh´KJubeh}”(h]”h ]”(j Œstruct”eh"]”h$]”h&]”j" j j# jAj$ jAj% ‰j& ‰j' ‰uh1j˜ h²hhjƒ÷h³jÀ÷h´Nubj) )�”}”(hXk**Definition**:: struct drm_dsc_picture_parameter_set { u8 dsc_version; u8 pps_identifier; u8 pps_reserved; u8 pps_3; u8 pps_4; u8 bits_per_pixel_low; __be16 pic_height; __be16 pic_width; __be16 slice_height; __be16 slice_width; __be16 chunk_size; u8 initial_xmit_delay_high; u8 initial_xmit_delay_low; __be16 initial_dec_delay; u8 pps20_reserved; u8 initial_scale_value; __be16 scale_increment_interval; u8 scale_decrement_interval_high; u8 scale_decrement_interval_low; u8 pps26_reserved; u8 first_line_bpg_offset; __be16 nfl_bpg_offset; __be16 slice_bpg_offset; __be16 initial_offset; __be16 final_offset; u8 flatness_min_qp; u8 flatness_max_qp; __be16 rc_model_size; u8 rc_edge_factor; u8 rc_quant_incr_limit0; u8 rc_quant_incr_limit1; u8 rc_tgt_offset; u8 rc_buf_thresh[DSC_NUM_BUF_RANGES - 1]; __be16 rc_range_parameters[DSC_NUM_BUF_RANGES]; u8 native_422_420; u8 second_line_bpg_offset; __be16 nsl_bpg_offset; __be16 second_line_offset_adj; u32 pps_long_94_reserved; u32 pps_long_98_reserved; u32 pps_long_102_reserved; u32 pps_long_106_reserved; u32 pps_long_110_reserved; u32 pps_long_114_reserved; u32 pps_long_118_reserved; u32 pps_long_122_reserved; __be16 pps_short_126_reserved; }; **Members** ``dsc_version`` PPS0[3:0] - dsc_version_minor: Contains Minor version of DSC PPS0[7:4] - dsc_version_major: Contains major version of DSC ``pps_identifier`` PPS1[7:0] - Application specific identifier that can be used to differentiate between different PPS tables. ``pps_reserved`` PPS2[7:0]- RESERVED Byte ``pps_3`` PPS3[3:0] - linebuf_depth: Contains linebuffer bit depth used to generate the bitstream. (0x0 - 16 bits for DSC 1.2, 0x8 - 8 bits, 0xA - 10 bits, 0xB - 11 bits, 0xC - 12 bits, 0xD - 13 bits, 0xE - 14 bits for DSC1.2, 0xF - 14 bits for DSC 1.2. PPS3[7:4] - bits_per_component: Bits per component for the original pixels of the encoded picture. 0x0 = 16bpc (allowed only when dsc_version_minor = 0x2) 0x8 = 8bpc, 0xA = 10bpc, 0xC = 12bpc, 0xE = 14bpc (also allowed only when dsc_minor_version = 0x2) ``pps_4`` PPS4[1:0] -These are the most significant 2 bits of compressed BPP bits_per_pixel[9:0] syntax element. PPS4[2] - vbr_enable: 0 = VBR disabled, 1 = VBR enabled PPS4[3] - simple_422: Indicates if decoder drops samples to reconstruct the 4:2:2 picture. PPS4[4] - Convert_rgb: Indicates if DSC color space conversion is active. PPS4[5] - blobk_pred_enable: Indicates if BP is used to code any groups in picture PPS4[7:6] - Reseved bits ``bits_per_pixel_low`` PPS5[7:0] - This indicates the lower significant 8 bits of the compressed BPP bits_per_pixel[9:0] element. ``pic_height`` PPS6[7:0], PPS7[7:0] -pic_height: Specifies the number of pixel rows within the raster. ``pic_width`` PPS8[7:0], PPS9[7:0] - pic_width: Number of pixel columns within the raster. ``slice_height`` PPS10[7:0], PPS11[7:0] - Slice height in units of pixels. ``slice_width`` PPS12[7:0], PPS13[7:0] - Slice width in terms of pixels. ``chunk_size`` PPS14[7:0], PPS15[7:0] - Size in units of bytes of the chunks that are used for slice multiplexing. ``initial_xmit_delay_high`` PPS16[1:0] - Most Significant two bits of initial transmission delay. It specifies the number of pixel times that the encoder waits before transmitting data from its rate buffer. PPS16[7:2] - Reserved ``initial_xmit_delay_low`` PPS17[7:0] - Least significant 8 bits of initial transmission delay. ``initial_dec_delay`` PPS18[7:0], PPS19[7:0] - Initial decoding delay which is the number of pixel times that the decoder accumulates data in its rate buffer before starting to decode and output pixels. ``pps20_reserved`` PPS20[7:0] - Reserved ``initial_scale_value`` PPS21[5:0] - Initial rcXformScale factor used at beginning of a slice. PPS21[7:6] - Reserved ``scale_increment_interval`` PPS22[7:0], PPS23[7:0] - Number of group times between incrementing the rcXformScale factor at end of a slice. ``scale_decrement_interval_high`` PPS24[3:0] - Higher 4 bits indicating number of group times between decrementing the rcXformScale factor at beginning of a slice. PPS24[7:4] - Reserved ``scale_decrement_interval_low`` PPS25[7:0] - Lower 8 bits of scale decrement interval ``pps26_reserved`` PPS26[7:0] ``first_line_bpg_offset`` PPS27[4:0] - Number of additional bits that are allocated for each group on first line of a slice. PPS27[7:5] - Reserved ``nfl_bpg_offset`` PPS28[7:0], PPS29[7:0] - Number of bits including frac bits deallocated for each group for groups after the first line of slice. ``slice_bpg_offset`` PPS30, PPS31[7:0] - Number of bits that are deallocated for each group to enforce the slice constraint. ``initial_offset`` PPS32,33[7:0] - Initial value for rcXformOffset ``final_offset`` PPS34,35[7:0] - Maximum end-of-slice value for rcXformOffset ``flatness_min_qp`` PPS36[4:0] - Minimum QP at which flatness is signaled and flatness QP adjustment is made. PPS36[7:5] - Reserved ``flatness_max_qp`` PPS37[4:0] - Max QP at which flatness is signalled and the flatness adjustment is made. PPS37[7:5] - Reserved ``rc_model_size`` PPS38,39[7:0] - Number of bits within RC Model. ``rc_edge_factor`` PPS40[3:0] - Ratio of current activity vs, previous activity to determine presence of edge. PPS40[7:4] - Reserved ``rc_quant_incr_limit0`` PPS41[4:0] - QP threshold used in short term RC PPS41[7:5] - Reserved ``rc_quant_incr_limit1`` PPS42[4:0] - QP threshold used in short term RC PPS42[7:5] - Reserved ``rc_tgt_offset`` PPS43[3:0] - Lower end of the variability range around the target bits per group that is allowed by short term RC. PPS43[7:4]- Upper end of the variability range around the target bits per group that i allowed by short term rc. ``rc_buf_thresh`` PPS44[7:0] - PPS57[7:0] - Specifies the thresholds in RC model for the 15 ranges defined by 14 thresholds. ``rc_range_parameters`` PPS58[7:0] - PPS87[7:0] Parameters that correspond to each of the 15 ranges. ``native_422_420`` PPS88[0] - 0 = Native 4:2:2 not used 1 = Native 4:2:2 used PPS88[1] - 0 = Native 4:2:0 not use 1 = Native 4:2:0 used PPS88[7:2] - Reserved 6 bits ``second_line_bpg_offset`` PPS89[4:0] - Additional bits/group budget for the second line of a slice in Native 4:2:0 mode. Set to 0 if DSC minor version is 1 or native420 is 0. PPS89[7:5] - Reserved ``nsl_bpg_offset`` PPS90[7:0], PPS91[7:0] - Number of bits that are deallocated for each group that is not in the second line of a slice. ``second_line_offset_adj`` PPS92[7:0], PPS93[7:0] - Used as offset adjustment for the second line in Native 4:2:0 mode. ``pps_long_94_reserved`` PPS 94, 95, 96, 97 - Reserved ``pps_long_98_reserved`` PPS 98, 99, 100, 101 - Reserved ``pps_long_102_reserved`` PPS 102, 103, 104, 105 - Reserved ``pps_long_106_reserved`` PPS 106, 107, 108, 109 - reserved ``pps_long_110_reserved`` PPS 110, 111, 112, 113 - reserved ``pps_long_114_reserved`` PPS 114 - 117 - reserved ``pps_long_118_reserved`` PPS 118 - 121 - reserved ``pps_long_122_reserved`` PPS 122- 125 - reserved ``pps_short_126_reserved`` PPS 126, 127 - reserved”h]”(hÎ)�”}”(hŒ**Definition**::”h]”(j3 )�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjIubhŒ:”…”�”}”(hjIh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´MhjEubjN )�”}”(hXVstruct drm_dsc_picture_parameter_set { u8 dsc_version; u8 pps_identifier; u8 pps_reserved; u8 pps_3; u8 pps_4; u8 bits_per_pixel_low; __be16 pic_height; __be16 pic_width; __be16 slice_height; __be16 slice_width; __be16 chunk_size; u8 initial_xmit_delay_high; u8 initial_xmit_delay_low; __be16 initial_dec_delay; u8 pps20_reserved; u8 initial_scale_value; __be16 scale_increment_interval; u8 scale_decrement_interval_high; u8 scale_decrement_interval_low; u8 pps26_reserved; u8 first_line_bpg_offset; __be16 nfl_bpg_offset; __be16 slice_bpg_offset; __be16 initial_offset; __be16 final_offset; u8 flatness_min_qp; u8 flatness_max_qp; __be16 rc_model_size; u8 rc_edge_factor; u8 rc_quant_incr_limit0; u8 rc_quant_incr_limit1; u8 rc_tgt_offset; u8 rc_buf_thresh[DSC_NUM_BUF_RANGES - 1]; __be16 rc_range_parameters[DSC_NUM_BUF_RANGES]; u8 native_422_420; u8 second_line_bpg_offset; __be16 nsl_bpg_offset; __be16 second_line_offset_adj; u32 pps_long_94_reserved; u32 pps_long_98_reserved; u32 pps_long_102_reserved; u32 pps_long_106_reserved; u32 pps_long_110_reserved; u32 pps_long_114_reserved; u32 pps_long_118_reserved; u32 pps_long_122_reserved; __be16 pps_short_126_reserved; };”h]”hXVstruct drm_dsc_picture_parameter_set { u8 dsc_version; u8 pps_identifier; u8 pps_reserved; u8 pps_3; u8 pps_4; u8 bits_per_pixel_low; __be16 pic_height; __be16 pic_width; __be16 slice_height; __be16 slice_width; __be16 chunk_size; u8 initial_xmit_delay_high; u8 initial_xmit_delay_low; __be16 initial_dec_delay; u8 pps20_reserved; u8 initial_scale_value; __be16 scale_increment_interval; u8 scale_decrement_interval_high; u8 scale_decrement_interval_low; u8 pps26_reserved; u8 first_line_bpg_offset; __be16 nfl_bpg_offset; __be16 slice_bpg_offset; __be16 initial_offset; __be16 final_offset; u8 flatness_min_qp; u8 flatness_max_qp; __be16 rc_model_size; u8 rc_edge_factor; u8 rc_quant_incr_limit0; u8 rc_quant_incr_limit1; u8 rc_tgt_offset; u8 rc_buf_thresh[DSC_NUM_BUF_RANGES - 1]; __be16 rc_range_parameters[DSC_NUM_BUF_RANGES]; u8 native_422_420; u8 second_line_bpg_offset; __be16 nsl_bpg_offset; __be16 second_line_offset_adj; u32 pps_long_94_reserved; u32 pps_long_98_reserved; u32 pps_long_102_reserved; u32 pps_long_106_reserved; u32 pps_long_110_reserved; u32 pps_long_114_reserved; u32 pps_long_118_reserved; u32 pps_long_122_reserved; __be16 pps_short_126_reserved; };”…”�”}”hjfsbah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jM h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´MhjEubhÎ)�”}”(hŒ **Members**”h]”j3 )�”}”(hjwh]”hŒMembers”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjuubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´MIhjEubjw )�”}”(hhh]”(j| )�”}”(hŒŠ``dsc_version`` PPS0[3:0] - dsc_version_minor: Contains Minor version of DSC PPS0[7:4] - dsc_version_major: Contains major version of DSC ”h]”(j‚ )�”}”(hŒ``dsc_version``”h]”jˆ )�”}”(hj–h]”hŒ dsc_version”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj”ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´Mhj�ubjž )�”}”(hhh]”hÎ)�”}”(hŒyPPS0[3:0] - dsc_version_minor: Contains Minor version of DSC PPS0[7:4] - dsc_version_major: Contains major version of DSC”h]”hŒyPPS0[3:0] - dsc_version_minor: Contains Minor version of DSC PPS0[7:4] - dsc_version_major: Contains major version of DSC”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´Mhj¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j«h´Mhj�ubj| )�”}”(hŒ``pps_identifier`` PPS1[7:0] - Application specific identifier that can be used to differentiate between different PPS tables. ”h]”(j‚ )�”}”(hŒ``pps_identifier``”h]”jˆ )�”}”(hjÐh]”hŒpps_identifier”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÎubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´M%hjÊubjž )�”}”(hhh]”hÎ)�”}”(hŒkPPS1[7:0] - Application specific identifier that can be used to differentiate between different PPS tables.”h]”hŒkPPS1[7:0] - Application specific identifier that can be used to differentiate between different PPS tables.”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´M$hjæubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÊubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jåh´M%hj�ubj| )�”}”(hŒ*``pps_reserved`` PPS2[7:0]- RESERVED Byte ”h]”(j‚ )�”}”(hŒ``pps_reserved``”h]”jˆ )�”}”(hj h]”hŒ pps_reserved”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´M*hjubjž )�”}”(hhh]”hÎ)�”}”(hŒPPS2[7:0]- RESERVED Byte”h]”hŒPPS2[7:0]- RESERVED Byte”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jh´M*hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jh´M*hj�ubj| )�”}”(hXü``pps_3`` PPS3[3:0] - linebuf_depth: Contains linebuffer bit depth used to generate the bitstream. (0x0 - 16 bits for DSC 1.2, 0x8 - 8 bits, 0xA - 10 bits, 0xB - 11 bits, 0xC - 12 bits, 0xD - 13 bits, 0xE - 14 bits for DSC1.2, 0xF - 14 bits for DSC 1.2. PPS3[7:4] - bits_per_component: Bits per component for the original pixels of the encoded picture. 0x0 = 16bpc (allowed only when dsc_version_minor = 0x2) 0x8 = 8bpc, 0xA = 10bpc, 0xC = 12bpc, 0xE = 14bpc (also allowed only when dsc_minor_version = 0x2) ”h]”(j‚ )�”}”(hŒ ``pps_3``”h]”jˆ )�”}”(hjCh]”hŒpps_3”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjAubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´M7hj=ubjž )�”}”(hhh]”hÎ)�”}”(hXñPPS3[3:0] - linebuf_depth: Contains linebuffer bit depth used to generate the bitstream. (0x0 - 16 bits for DSC 1.2, 0x8 - 8 bits, 0xA - 10 bits, 0xB - 11 bits, 0xC - 12 bits, 0xD - 13 bits, 0xE - 14 bits for DSC1.2, 0xF - 14 bits for DSC 1.2. PPS3[7:4] - bits_per_component: Bits per component for the original pixels of the encoded picture. 0x0 = 16bpc (allowed only when dsc_version_minor = 0x2) 0x8 = 8bpc, 0xA = 10bpc, 0xC = 12bpc, 0xE = 14bpc (also allowed only when dsc_minor_version = 0x2)”h]”hXñPPS3[3:0] - linebuf_depth: Contains linebuffer bit depth used to generate the bitstream. (0x0 - 16 bits for DSC 1.2, 0x8 - 8 bits, 0xA - 10 bits, 0xB - 11 bits, 0xC - 12 bits, 0xD - 13 bits, 0xE - 14 bits for DSC1.2, 0xF - 14 bits for DSC 1.2. PPS3[7:4] - bits_per_component: Bits per component for the original pixels of the encoded picture. 0x0 = 16bpc (allowed only when dsc_version_minor = 0x2) 0x8 = 8bpc, 0xA = 10bpc, 0xC = 12bpc, 0xE = 14bpc (also allowed only when dsc_minor_version = 0x2)”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´M/hjYubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jXh´M7hj�ubj| )�”}”(hXº``pps_4`` PPS4[1:0] -These are the most significant 2 bits of compressed BPP bits_per_pixel[9:0] syntax element. PPS4[2] - vbr_enable: 0 = VBR disabled, 1 = VBR enabled PPS4[3] - simple_422: Indicates if decoder drops samples to reconstruct the 4:2:2 picture. PPS4[4] - Convert_rgb: Indicates if DSC color space conversion is active. PPS4[5] - blobk_pred_enable: Indicates if BP is used to code any groups in picture PPS4[7:6] - Reseved bits ”h]”(j‚ )�”}”(hŒ ``pps_4``”h]”jˆ )�”}”(hj}h]”hŒpps_4”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´MEhjwubjž )�”}”(hhh]”hÎ)�”}”(hX¯PPS4[1:0] -These are the most significant 2 bits of compressed BPP bits_per_pixel[9:0] syntax element. PPS4[2] - vbr_enable: 0 = VBR disabled, 1 = VBR enabled PPS4[3] - simple_422: Indicates if decoder drops samples to reconstruct the 4:2:2 picture. PPS4[4] - Convert_rgb: Indicates if DSC color space conversion is active. PPS4[5] - blobk_pred_enable: Indicates if BP is used to code any groups in picture PPS4[7:6] - Reseved bits”h]”hX¯PPS4[1:0] -These are the most significant 2 bits of compressed BPP bits_per_pixel[9:0] syntax element. PPS4[2] - vbr_enable: 0 = VBR disabled, 1 = VBR enabled PPS4[3] - simple_422: Indicates if decoder drops samples to reconstruct the 4:2:2 picture. PPS4[4] - Convert_rgb: Indicates if DSC color space conversion is active. PPS4[5] - blobk_pred_enable: Indicates if BP is used to code any groups in picture PPS4[7:6] - Reseved bits”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´M<hj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjwubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j’h´MEhj�ubj| )�”}”(hŒ‚``bits_per_pixel_low`` PPS5[7:0] - This indicates the lower significant 8 bits of the compressed BPP bits_per_pixel[9:0] element. ”h]”(j‚ )�”}”(hŒ``bits_per_pixel_low``”h]”jˆ )�”}”(hj·h]”hŒbits_per_pixel_low”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjµubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´MKhj±ubjž )�”}”(hhh]”hÎ)�”}”(hŒjPPS5[7:0] - This indicates the lower significant 8 bits of the compressed BPP bits_per_pixel[9:0] element.”h]”hŒjPPS5[7:0] - This indicates the lower significant 8 bits of the compressed BPP bits_per_pixel[9:0] element.”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´MJhjÍubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÌh´MKhj�ubj| )�”}”(hŒg``pic_height`` PPS6[7:0], PPS7[7:0] -pic_height: Specifies the number of pixel rows within the raster. ”h]”(j‚ )�”}”(hŒ``pic_height``”h]”jˆ )�”}”(hjñh]”hŒ pic_height”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjïubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´MQhjëubjž )�”}”(hhh]”hÎ)�”}”(hŒWPPS6[7:0], PPS7[7:0] -pic_height: Specifies the number of pixel rows within the raster.”h]”hŒWPPS6[7:0], PPS7[7:0] -pic_height: Specifies the number of pixel rows within the raster.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´MPhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjëubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jh´MQhj�ubj| )�”}”(hŒ[``pic_width`` PPS8[7:0], PPS9[7:0] - pic_width: Number of pixel columns within the raster. ”h]”(j‚ )�”}”(hŒ ``pic_width``”h]”jˆ )�”}”(hj+h]”hŒ pic_width”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´MWhj%ubjž )�”}”(hhh]”hÎ)�”}”(hŒLPPS8[7:0], PPS9[7:0] - pic_width: Number of pixel columns within the raster.”h]”hŒLPPS8[7:0], PPS9[7:0] - pic_width: Number of pixel columns within the raster.”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´MVhjAubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j@h´MWhj�ubj| )�”}”(hŒK``slice_height`` PPS10[7:0], PPS11[7:0] - Slice height in units of pixels. ”h]”(j‚ )�”}”(hŒ``slice_height``”h]”jˆ )�”}”(hjeh]”hŒ slice_height”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjcubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´M\hj_ubjž )�”}”(hhh]”hÎ)�”}”(hŒ9PPS10[7:0], PPS11[7:0] - Slice height in units of pixels.”h]”hŒ9PPS10[7:0], PPS11[7:0] - Slice height in units of pixels.”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jzh´M\hj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jzh´M\hj�ubj| )�”}”(hŒI``slice_width`` PPS12[7:0], PPS13[7:0] - Slice width in terms of pixels. ”h]”(j‚ )�”}”(hŒ``slice_width``”h]”jˆ )�”}”(hjžh]”hŒ slice_width”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjœubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´Mahj˜ubjž )�”}”(hhh]”hÎ)�”}”(hŒ8PPS12[7:0], PPS13[7:0] - Slice width in terms of pixels.”h]”hŒ8PPS12[7:0], PPS13[7:0] - Slice width in terms of pixels.”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j³h´Mahj´ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j³h´Mahj�ubj| )�”}”(hŒs``chunk_size`` PPS14[7:0], PPS15[7:0] - Size in units of bytes of the chunks that are used for slice multiplexing. ”h]”(j‚ )�”}”(hŒ``chunk_size``”h]”jˆ )�”}”(hj×h]”hŒ chunk_size”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÕubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´MghjÑubjž )�”}”(hhh]”hÎ)�”}”(hŒcPPS14[7:0], PPS15[7:0] - Size in units of bytes of the chunks that are used for slice multiplexing.”h]”hŒcPPS14[7:0], PPS15[7:0] - Size in units of bytes of the chunks that are used for slice multiplexing.”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´Mfhjíubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÑubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jìh´Mghj�ubj| )�”}”(hŒå``initial_xmit_delay_high`` PPS16[1:0] - Most Significant two bits of initial transmission delay. It specifies the number of pixel times that the encoder waits before transmitting data from its rate buffer. PPS16[7:2] - Reserved ”h]”(j‚ )�”}”(hŒ``initial_xmit_delay_high``”h]”jˆ )�”}”(hjh]”hŒinitial_xmit_delay_high”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´Mohj ubjž )�”}”(hhh]”hÎ)�”}”(hŒÈPPS16[1:0] - Most Significant two bits of initial transmission delay. It specifies the number of pixel times that the encoder waits before transmitting data from its rate buffer. PPS16[7:2] - Reserved”h]”hŒÈPPS16[1:0] - Most Significant two bits of initial transmission delay. It specifies the number of pixel times that the encoder waits before transmitting data from its rate buffer. PPS16[7:2] - Reserved”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´Mlhj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j&h´Mohj�ubj| )�”}”(hŒ```initial_xmit_delay_low`` PPS17[7:0] - Least significant 8 bits of initial transmission delay. ”h]”(j‚ )�”}”(hŒ``initial_xmit_delay_low``”h]”jˆ )�”}”(hjKh]”hŒinitial_xmit_delay_low”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjIubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´MthjEubjž )�”}”(hhh]”hÎ)�”}”(hŒDPPS17[7:0] - Least significant 8 bits of initial transmission delay.”h]”hŒDPPS17[7:0] - Least significant 8 bits of initial transmission delay.”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j`h´Mthjaubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjEubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j`h´Mthj�ubj| )�”}”(hŒË``initial_dec_delay`` PPS18[7:0], PPS19[7:0] - Initial decoding delay which is the number of pixel times that the decoder accumulates data in its rate buffer before starting to decode and output pixels. ”h]”(j‚ )�”}”(hŒ``initial_dec_delay``”h]”jˆ )�”}”(hj„h]”hŒinitial_dec_delay”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´M{hj~ubjž )�”}”(hhh]”hÎ)�”}”(hŒ´PPS18[7:0], PPS19[7:0] - Initial decoding delay which is the number of pixel times that the decoder accumulates data in its rate buffer before starting to decode and output pixels.”h]”hŒ´PPS18[7:0], PPS19[7:0] - Initial decoding delay which is the number of pixel times that the decoder accumulates data in its rate buffer before starting to decode and output pixels.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´Myhjšubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j™h´M{hj�ubj| )�”}”(hŒ)``pps20_reserved`` PPS20[7:0] - Reserved ”h]”(j‚ )�”}”(hŒ``pps20_reserved``”h]”jˆ )�”}”(hj¾h]”hŒpps20_reserved”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´M�hj¸ubjž )�”}”(hhh]”hÎ)�”}”(hŒPPS20[7:0] - Reserved”h]”hŒPPS20[7:0] - Reserved”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÓh´M�hjÔubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÓh´M�hj�ubj| )�”}”(hŒu``initial_scale_value`` PPS21[5:0] - Initial rcXformScale factor used at beginning of a slice. PPS21[7:6] - Reserved ”h]”(j‚ )�”}”(hŒ``initial_scale_value``”h]”jˆ )�”}”(hj÷h]”hŒinitial_scale_value”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjõubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´M‰hjñubjž )�”}”(hhh]”hÎ)�”}”(hŒ\PPS21[5:0] - Initial rcXformScale factor used at beginning of a slice. PPS21[7:6] - Reserved”h]”hŒ\PPS21[5:0] - Initial rcXformScale factor used at beginning of a slice. PPS21[7:6] - Reserved”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´M‡hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjñubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j h´M‰hj�ubj| )�”}”(hŒŒ``scale_increment_interval`` PPS22[7:0], PPS23[7:0] - Number of group times between incrementing the rcXformScale factor at end of a slice. ”h]”(j‚ )�”}”(hŒ``scale_increment_interval``”h]”jˆ )�”}”(hj1h]”hŒscale_increment_interval”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´M�hj+ubjž )�”}”(hhh]”hÎ)�”}”(hŒnPPS22[7:0], PPS23[7:0] - Number of group times between incrementing the rcXformScale factor at end of a slice.”h]”hŒnPPS22[7:0], PPS23[7:0] - Number of group times between incrementing the rcXformScale factor at end of a slice.”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´MŽhjGubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jFh´M�hj�ubj| )�”}”(hŒº``scale_decrement_interval_high`` PPS24[3:0] - Higher 4 bits indicating number of group times between decrementing the rcXformScale factor at beginning of a slice. PPS24[7:4] - Reserved ”h]”(j‚ )�”}”(hŒ!``scale_decrement_interval_high``”h]”jˆ )�”}”(hjkh]”hŒscale_decrement_interval_high”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjiubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´M–hjeubjž )�”}”(hhh]”hÎ)�”}”(hŒ—PPS24[3:0] - Higher 4 bits indicating number of group times between decrementing the rcXformScale factor at beginning of a slice. PPS24[7:4] - Reserved”h]”hŒ—PPS24[3:0] - Higher 4 bits indicating number of group times between decrementing the rcXformScale factor at beginning of a slice. PPS24[7:4] - Reserved”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´M”hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjeubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j€h´M–hj�ubj| )�”}”(hŒW``scale_decrement_interval_low`` PPS25[7:0] - Lower 8 bits of scale decrement interval ”h]”(j‚ )�”}”(hŒ ``scale_decrement_interval_low``”h]”jˆ )�”}”(hj¥h]”hŒscale_decrement_interval_low”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj£ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´M›hjŸubjž )�”}”(hhh]”hÎ)�”}”(hŒ5PPS25[7:0] - Lower 8 bits of scale decrement interval”h]”hŒ5PPS25[7:0] - Lower 8 bits of scale decrement interval”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jºh´M›hj»ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjŸubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jºh´M›hj�ubj| )�”}”(hŒ``pps26_reserved`` PPS26[7:0] ”h]”(j‚ )�”}”(hŒ``pps26_reserved``”h]”jˆ )�”}”(hjÞh]”hŒpps26_reserved”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÜubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´M hjØubjž )�”}”(hhh]”hÎ)�”}”(hŒ PPS26[7:0]”h]”hŒ PPS26[7:0]”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jóh´M hjôubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjØubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jóh´M hj�ubj| )�”}”(hŒ“``first_line_bpg_offset`` PPS27[4:0] - Number of additional bits that are allocated for each group on first line of a slice. PPS27[7:5] - Reserved ”h]”(j‚ )�”}”(hŒ``first_line_bpg_offset``”h]”jˆ )�”}”(hj h]”hŒfirst_line_bpg_offset”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj ubah}”(•­h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´M§hj ubjž )�”}”(hhh]”hÎ)�”}”(hŒxPPS27[4:0] - Number of additional bits that are allocated for each group on first line of a slice. PPS27[7:5] - Reserved”h]”hŒxPPS27[4:0] - Number of additional bits that are allocated for each group on first line of a slice. PPS27[7:5] - Reserved”…”�”}”(hj0 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´M¥hj- ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j, h´M§hj�ubj| )�”}”(hŒ”``nfl_bpg_offset`` PPS28[7:0], PPS29[7:0] - Number of bits including frac bits deallocated for each group for groups after the first line of slice. ”h]”(j‚ )�”}”(hŒ``nfl_bpg_offset``”h]”jˆ )�”}”(hjQ h]”hŒnfl_bpg_offset”…”�”}”(hjS h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjO ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´M­hjK ubjž )�”}”(hhh]”hÎ)�”}”(hŒ€PPS28[7:0], PPS29[7:0] - Number of bits including frac bits deallocated for each group for groups after the first line of slice.”h]”hŒ€PPS28[7:0], PPS29[7:0] - Number of bits including frac bits deallocated for each group for groups after the first line of slice.”…”�”}”(hjj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´M¬hjg ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjK ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jf h´M­hj�ubj| )�”}”(hŒ}``slice_bpg_offset`` PPS30, PPS31[7:0] - Number of bits that are deallocated for each group to enforce the slice constraint. ”h]”(j‚ )�”}”(hŒ``slice_bpg_offset``”h]”jˆ )�”}”(hj‹ h]”hŒslice_bpg_offset”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj‰ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´M³hj… ubjž )�”}”(hhh]”hÎ)�”}”(hŒgPPS30, PPS31[7:0] - Number of bits that are deallocated for each group to enforce the slice constraint.”h]”hŒgPPS30, PPS31[7:0] - Number of bits that are deallocated for each group to enforce the slice constraint.”…”�”}”(hj¤ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´M²hj¡ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj… ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j  h´M³hj�ubj| )�”}”(hŒC``initial_offset`` PPS32,33[7:0] - Initial value for rcXformOffset ”h]”(j‚ )�”}”(hŒ``initial_offset``”h]”jˆ )�”}”(hjÅ h]”hŒinitial_offset”…”�”}”(hjÇ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjà ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´M¸hj¿ ubjž )�”}”(hhh]”hÎ)�”}”(hŒ/PPS32,33[7:0] - Initial value for rcXformOffset”h]”hŒ/PPS32,33[7:0] - Initial value for rcXformOffset”…”�”}”(hjÞ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÚ h´M¸hjÛ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¿ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÚ h´M¸hj�ubj| )�”}”(hŒN``final_offset`` PPS34,35[7:0] - Maximum end-of-slice value for rcXformOffset ”h]”(j‚ )�”}”(hŒ``final_offset``”h]”jˆ )�”}”(hjþ h]”hŒ final_offset”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjü ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´M½hjø ubjž )�”}”(hhh]”hÎ)�”}”(hŒ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´Mhj: ubjž )�”}”(hhh]”hÎ)�”}”(hŒ‘PPS88[0] - 0 = Native 4:2:2 not used 1 = Native 4:2:2 used PPS88[1] - 0 = Native 4:2:0 not use 1 = Native 4:2:0 used PPS88[7:2] - Reserved 6 bits”h]”hŒ‘PPS88[0] - 0 = Native 4:2:2 not used 1 = Native 4:2:2 used PPS88[1] - 0 = Native 4:2:0 not use 1 = Native 4:2:0 used PPS88[7:2] - Reserved 6 bits”…”�”}”(hjY h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´MühjV ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj: ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jU h´Mhj�ubj| )�”}”(hŒÆ``second_line_bpg_offset`` PPS89[4:0] - Additional bits/group budget for the second line of a slice in Native 4:2:0 mode. Set to 0 if DSC minor version is 1 or native420 is 0. PPS89[7:5] - Reserved ”h]”(j‚ )�”}”(hŒ``second_line_bpg_offset``”h]”jˆ )�”}”(hjz h]”hŒsecond_line_bpg_offset”…”�”}”(hj| h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjx ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´Mhjt ubjž )�”}”(hhh]”hÎ)�”}”(hŒªPPS89[4:0] - Additional bits/group budget for the second line of a slice in Native 4:2:0 mode. Set to 0 if DSC minor version is 1 or native420 is 0. PPS89[7:5] - Reserved”h]”hŒªPPS89[4:0] - Additional bits/group budget for the second line of a slice in Native 4:2:0 mode. Set to 0 if DSC minor version is 1 or native420 is 0. PPS89[7:5] - Reserved”…”�”}”(hj“ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´Mhj� ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjt ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j� h´Mhj�ubj| )�”}”(hŒŠ``nsl_bpg_offset`` PPS90[7:0], PPS91[7:0] - Number of bits that are deallocated for each group that is not in the second line of a slice. ”h]”(j‚ )�”}”(hŒ``nsl_bpg_offset``”h]”jˆ )�”}”(hj´ h]”hŒnsl_bpg_offset”…”�”}”(hj¶ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj² ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´Mhj® ubjž )�”}”(hhh]”hÎ)�”}”(hŒvPPS90[7:0], PPS91[7:0] - Number of bits that are deallocated for each group that is not in the second line of a slice.”h]”hŒvPPS90[7:0], PPS91[7:0] - Number of bits that are deallocated for each group that is not in the second line of a slice.”…”�”}”(hjÍ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´M hjÊ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj® ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÉ h´Mhj�ubj| )�”}”(hŒx``second_line_offset_adj`` PPS92[7:0], PPS93[7:0] - Used as offset adjustment for the second line in Native 4:2:0 mode. ”h]”(j‚ )�”}”(hŒ``second_line_offset_adj``”h]”jˆ )�”}”(hjî h]”hŒsecond_line_offset_adj”…”�”}”(hjð h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjì ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´Mhjè ubjž )�”}”(hhh]”hÎ)�”}”(hŒ\PPS92[7:0], PPS93[7:0] - Used as offset adjustment for the second line in Native 4:2:0 mode.”h]”hŒ\PPS92[7:0], PPS93[7:0] - Used as offset adjustment for the second line in Native 4:2:0 mode.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´Mhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjè ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j h´Mhj�ubj| )�”}”(hŒ7``pps_long_94_reserved`` PPS 94, 95, 96, 97 - Reserved ”h]”(j‚ )�”}”(hŒ``pps_long_94_reserved``”h]”jˆ )�”}”(hj( h]”hŒpps_long_94_reserved”…”�”}”(hj* h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj& ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´Mhj" ubjž )�”}”(hhh]”hÎ)�”}”(hŒPPS 94, 95, 96, 97 - Reserved”h]”hŒPPS 94, 95, 96, 97 - Reserved”…”�”}”(hjA h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j= h´Mhj> ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj" ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j= h´Mhj�ubj| )�”}”(hŒ9``pps_long_98_reserved`` PPS 98, 99, 100, 101 - Reserved ”h]”(j‚ )�”}”(hŒ``pps_long_98_reserved``”h]”jˆ )�”}”(hja h]”hŒpps_long_98_reserved”…”�”}”(hjc h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj_ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´Mhj[ ubjž )�”}”(hhh]”hÎ)�”}”(hŒPPS 98, 99, 100, 101 - Reserved”h]”hŒPPS 98, 99, 100, 101 - Reserved”…”�”}”(hjz h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jv h´Mhjw ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj[ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jv h´Mhj�ubj| )�”}”(hŒ<``pps_long_102_reserved`` PPS 102, 103, 104, 105 - Reserved ”h]”(j‚ )�”}”(hŒ``pps_long_102_reserved``”h]”jˆ )�”}”(hjš h]”hŒpps_long_102_reserved”…”�”}”(hjœ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj˜ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´M#hj” ubjž )�”}”(hhh]”hÎ)�”}”(hŒ!PPS 102, 103, 104, 105 - Reserved”h]”hŒ!PPS 102, 103, 104, 105 - Reserved”…”�”}”(hj³ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¯ h´M#hj° ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj” ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¯ h´M#hj�ubj| )�”}”(hŒ<``pps_long_106_reserved`` PPS 106, 107, 108, 109 - reserved ”h]”(j‚ )�”}”(hŒ``pps_long_106_reserved``”h]”jˆ )�”}”(hjÓ h]”hŒpps_long_106_reserved”…”�”}”(hjÕ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÑ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´M(hjÍ ubjž )�”}”(hhh]”hÎ)�”}”(hŒ!PPS 106, 107, 108, 109 - reserved”h]”hŒ!PPS 106, 107, 108, 109 - reserved”…”�”}”(hjì h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jè h´M(hjé ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÍ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jè h´M(hj�ubj| )�”}”(hŒ<``pps_long_110_reserved`` PPS 110, 111, 112, 113 - reserved ”h]”(j‚ )�”}”(hŒ``pps_long_110_reserved``”h]”jˆ )�”}”(hj h]”hŒpps_long_110_reserved”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´M-hjubjž )�”}”(hhh]”hÎ)�”}”(hŒ!PPS 110, 111, 112, 113 - reserved”h]”hŒ!PPS 110, 111, 112, 113 - reserved”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j!h´M-hj"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j!h´M-hj�ubj| )�”}”(hŒ3``pps_long_114_reserved`` PPS 114 - 117 - reserved ”h]”(j‚ )�”}”(hŒ``pps_long_114_reserved``”h]”jˆ )�”}”(hjEh]”hŒpps_long_114_reserved”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjCubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´M2hj?ubjž )�”}”(hhh]”hÎ)�”}”(hŒPPS 114 - 117 - reserved”h]”hŒPPS 114 - 117 - reserved”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jZh´M2hj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jZh´M2hj�ubj| )�”}”(hŒ3``pps_long_118_reserved`` PPS 118 - 121 - reserved ”h]”(j‚ )�”}”(hŒ``pps_long_118_reserved``”h]”jˆ )�”}”(hj~h]”hŒpps_long_118_reserved”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´M7hjxubjž )�”}”(hhh]”hÎ)�”}”(hŒPPS 118 - 121 - reserved”h]”hŒPPS 118 - 121 - reserved”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j“h´M7hj”ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjxubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j“h´M7hj�ubj| )�”}”(hŒ2``pps_long_122_reserved`` PPS 122- 125 - reserved ”h]”(j‚ )�”}”(hŒ``pps_long_122_reserved``”h]”jˆ )�”}”(hj·h]”hŒpps_long_122_reserved”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjµubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´M<hj±ubjž )�”}”(hhh]”hÎ)�”}”(hŒPPS 122- 125 - reserved”h]”hŒPPS 122- 125 - reserved”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÌh´M<hjÍubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÌh´M<hj�ubj| )�”}”(hŒ2``pps_short_126_reserved`` PPS 126, 127 - reserved”h]”(j‚ )�”}”(hŒ``pps_short_126_reserved``”h]”jˆ )�”}”(hjðh]”hŒpps_short_126_reserved”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjîubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´M@hjêubjž )�”}”(hhh]”hÎ)�”}”(hŒPPS 126, 127 - reserved”h]”hŒPPS 126, 127 - reserved”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´MAhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjêubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jh´M@hj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjEubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjƒ÷h²hh³jÀ÷h´NubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj3h]”hŒ Description”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´MDhjƒ÷h²hubhÎ)�”}”(hXlThe VESA DSC standard defines picture parameter set (PPS) which display stream compression encoders must communicate to decoders. The PPS is encapsulated in 128 bytes (PPS 0 through PPS 127). The fields in this structure are as per Table 4.1 in Vesa DSC specification v1.1/v1.2. The PPS fields that span over more than a byte should be stored in Big Endian format.”h]”hXlThe VESA DSC standard defines picture parameter set (PPS) which display stream compression encoders must communicate to decoders. The PPS is encapsulated in 128 bytes (PPS 0 through PPS 127). The fields in this structure are as per Table 4.1 in Vesa DSC specification v1.1/v1.2. The PPS fields that span over more than a byte should be stored in Big Endian format.”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´Mhjƒ÷h²hubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ drm_dsc_pps_infoframe (C struct)”Œc.drm_dsc_pps_infoframe”hNt”auh1j† hjƒ÷h²hh³jÀ÷h´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒdrm_dsc_pps_infoframe”h]”j¤ )�”}”(hŒstruct drm_dsc_pps_infoframe”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjmh²hh³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjmh²hh³j~h´MubjÍ )�”}”(hŒdrm_dsc_pps_infoframe”h]”jÓ )�”}”(hjkh]”hŒdrm_dsc_pps_infoframe”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj�ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjmh²hh³j~h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjih²hh³j~h´Mubah}”(h]”jdah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j~h´Mhjfh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ9DSC infoframe carrying the Picture Parameter Set Metadata”h]”hŒ9DSC infoframe carrying the Picture Parameter Set Metadata”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´MGhj°h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjfh²hh³j~h´Mubeh}”(h]”h ]”(j Œstruct”eh"]”h$]”h&]”j" j j# jËj$ jËj% ‰j& ‰j' ‰uh1j˜ h²hhjƒ÷h³jÀ÷h´Nubj) )�”}”(hXÅ**Definition**:: struct drm_dsc_pps_infoframe { struct dp_sdp_header pps_header; struct drm_dsc_picture_parameter_set pps_payload; }; **Members** ``pps_header`` Header for PPS as per DP SDP header format of type :c:type:`struct dp_sdp_header ` ``pps_payload`` PPS payload fields as per DSC specification Table 4-1 as represented in :c:type:`struct drm_dsc_picture_parameter_set `”h]”(hÎ)�”}”(hŒ**Definition**::”h]”(j3 )�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÓubhŒ:”…”�”}”(hjÓh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´MKhjÏubjN )�”}”(hŒ|struct drm_dsc_pps_infoframe { struct dp_sdp_header pps_header; struct drm_dsc_picture_parameter_set pps_payload; };”h]”hŒ|struct drm_dsc_pps_infoframe { struct dp_sdp_header pps_header; struct drm_dsc_picture_parameter_set pps_payload; };”…”�”}”hjðsbah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jM h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´MMhjÏubhÎ)�”}”(hŒ **Members**”h]”j3 )�”}”(hjh]”hŒMembers”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÿubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´MRhjÏubjw )�”}”(hhh]”(j| )�”}”(hŒq``pps_header`` Header for PPS as per DP SDP header format of type :c:type:`struct dp_sdp_header ` ”h]”(j‚ )�”}”(hŒ``pps_header``”h]”jˆ )�”}”(hj h]”hŒ pps_header”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´MRhjubjž )�”}”(hhh]”hÎ)�”}”(hŒaHeader for PPS as per DP SDP header format of type :c:type:`struct dp_sdp_header `”h]”(hŒ3Header for PPS as per DP SDP header format of type ”…”�”}”(hj9h²hh³Nh´Nubh)�”}”(hŒ.:c:type:`struct dp_sdp_header `”h]”jˆ )�”}”(hjCh]”hŒstruct dp_sdp_header”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjAubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ dp_sdp_header”uh1hh³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´MQhj9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j`h´MQhj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j5h´MRhjubj| )�”}”(hŒ¦``pps_payload`` PPS payload fields as per DSC specification Table 4-1 as represented in :c:type:`struct drm_dsc_picture_parameter_set `”h]”(j‚ )�”}”(hŒ``pps_payload``”h]”jˆ )�”}”(hjyh]”hŒ pps_payload”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjwubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´MShjsubjž )�”}”(hhh]”hÎ)�”}”(hŒ–PPS payload fields as per DSC specification Table 4-1 as represented in :c:type:`struct drm_dsc_picture_parameter_set `”h]”(hŒHPPS payload fields as per DSC specification Table 4-1 as represented in ”…”�”}”(hj’h²hh³Nh´Nubh)�”}”(hŒN:c:type:`struct drm_dsc_picture_parameter_set `”h]”jˆ )�”}”(hjœh]”hŒ$struct drm_dsc_picture_parameter_set”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjšubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dsc_picture_parameter_set”uh1hh³jŽh´MShj’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jŽh´MShj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjsubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jŽh´MShjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÏubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjƒ÷h²hh³jÀ÷h´NubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjÚh]”hŒ Description”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjØubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´MWhjƒ÷h²hubhÎ)�”}”(hX©This structure represents the DSC PPS infoframe required to send the Picture Parameter Set metadata required before enabling VESA Display Stream Compression. This is based on the DP Secondary Data Packet structure and comprises of SDP Header as defined :c:type:`struct dp_sdp_header ` in drm_dp_helper.h and PPS payload defined in :c:type:`struct drm_dsc_picture_parameter_set `.”h]”(hŒýThis structure represents the DSC PPS infoframe required to send the Picture Parameter Set metadata required before enabling VESA Display Stream Compression. This is based on the DP Secondary Data Packet structure and comprises of SDP Header as defined ”…”�”}”(hjðh²hh³Nh´Nubh)�”}”(hŒ.:c:type:`struct dp_sdp_header `”h]”jˆ )�”}”(hjúh]”hŒstruct dp_sdp_header”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjøubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ dp_sdp_header”uh1hh³Œb/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:365: ./include/drm/display/drm_dsc.h”h´MHhjðubhŒ/ in drm_dp_helper.h and PPS payload defined in ”…”�”}”(hjðh²hh³Nh´Nubh)�”}”(hŒN:c:type:`struct drm_dsc_picture_parameter_set `”h]”jˆ )�”}”(hjh]”hŒ$struct drm_dsc_picture_parameter_set”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dsc_picture_parameter_set”uh1hh³jh´MHhjðubhŒ.”…”�”}”(hjðh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jh´MHhjƒ÷h²hubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ'drm_dsc_dp_pps_header_init (C function)”Œc.drm_dsc_dp_pps_header_init”hNt”auh1j† hjƒ÷h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒBvoid drm_dsc_dp_pps_header_init (struct dp_sdp_header *pps_header)”h]”j¤ )�”}”(hŒAvoid drm_dsc_dp_pps_header_init(struct dp_sdp_header *pps_header)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjZh²hh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´K$ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjZh²hh³jlh´K$ubjÍ )�”}”(hŒdrm_dsc_dp_pps_header_init”h]”jÓ )�”}”(hŒdrm_dsc_dp_pps_header_init”h]”hŒdrm_dsc_dp_pps_header_init”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj{ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjZh²hh³jlh´K$ubjÞ)�”}”(hŒ"(struct dp_sdp_header *pps_header)”h]”jä)�”}”(hŒ struct dp_sdp_header *pps_header”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Œ dp_sdp_header”h]”hŒ dp_sdp_header”…”�”}”(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%)�”}”jj�sbŒc.drm_dsc_dp_pps_header_init”†”asbuh1hhj—ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj—ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj—ubjÓ )�”}”(hŒ pps_header”h]”hŒ pps_header”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj—ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj“ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjZh²hh³jlh´K$ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjVh²hh³jlh´K$ubah}”(h]”jQah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jlh´K$hjSh²hubj )�”}”(hhh]”hÎ)�”}”(hŒBInitializes the PPS Header for DisplayPort as per the DP 1.4 spec.”h]”hŒBInitializes the PPS Header for DisplayPort as per the DP 1.4 spec.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´K$hjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjSh²hh³jlh´K$ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j6j$ j6j% ‰j& ‰j' ‰uh1j˜ h²hhjƒ÷h³Nh´Nubj) )�”}”(hXœ**Parameters** ``struct dp_sdp_header *pps_header`` Secondary data packet header for DSC Picture Parameter Set as defined in :c:type:`struct dp_sdp_header ` **Description** DP 1.4 spec defines the secondary data packet for sending the picture parameter infoframes from the source to the sink. This function populates the SDP header defined in :c:type:`struct dp_sdp_header `.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj@h]”hŒ Parameters”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´K(hj:ubjw )�”}”(hhh]”j| )�”}”(hŒ�``struct dp_sdp_header *pps_header`` Secondary data packet header for DSC Picture Parameter Set as defined in :c:type:`struct dp_sdp_header ` ”h]”(j‚ )�”}”(hŒ$``struct dp_sdp_header *pps_header``”h]”jˆ )�”}”(hj_h]”hŒ struct dp_sdp_header *pps_header”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´K'hjYubjž )�”}”(hhh]”hÎ)�”}”(hŒwSecondary data packet header for DSC Picture Parameter Set as defined in :c:type:`struct dp_sdp_header `”h]”(hŒISecondary data packet header for DSC Picture Parameter Set as defined in ”…”�”}”(hjxh²hh³Nh´Nubh)�”}”(hŒ.:c:type:`struct dp_sdp_header `”h]”jˆ )�”}”(hj‚h]”hŒstruct dp_sdp_header”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj€ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ dp_sdp_header”uh1hh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´K&hjxubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jŸh´K&hjuubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjYubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jth´K'hjVubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj:ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjºh]”hŒ Description”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´K)hj:ubhÎ)�”}”(hŒÙDP 1.4 spec defines the secondary data packet for sending the picture parameter infoframes from the source to the sink. This function populates the SDP header defined in :c:type:`struct dp_sdp_header `.”h]”(hŒªDP 1.4 spec defines the secondary data packet for sending the picture parameter infoframes from the source to the sink. This function populates the SDP header defined in ”…”�”}”(hjÐh²hh³Nh´Nubh)�”}”(hŒ.:c:type:`struct dp_sdp_header `”h]”jˆ )�”}”(hjÚh]”hŒstruct dp_sdp_header”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjØubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œ dp_sdp_header”uh1hh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´K(hjÐubhŒ.”…”�”}”(hjÐh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j÷h´K(hj:ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjƒ÷h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ&drm_dsc_dp_rc_buffer_size (C function)”Œc.drm_dsc_dp_rc_buffer_size”hNt”auh1j† hjƒ÷h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒJint drm_dsc_dp_rc_buffer_size (u8 rc_buffer_block_size, u8 rc_buffer_size)”h]”j¤ )�”}”(hŒIint drm_dsc_dp_rc_buffer_size(u8 rc_buffer_block_size, u8 rc_buffer_size)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjh²hh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´K8ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjh²hh³j0h´K8ubjÍ )�”}”(hŒdrm_dsc_dp_rc_buffer_size”h]”jÓ )�”}”(hŒdrm_dsc_dp_rc_buffer_size”h]”hŒdrm_dsc_dp_rc_buffer_size”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj?ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjh²hh³j0h´K8ubjÞ)�”}”(hŒ,(u8 rc_buffer_block_size, u8 rc_buffer_size)”h]”(jä)�”}”(hŒu8 rc_buffer_block_size”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj_ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jdŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjEsbŒc.drm_dsc_dp_rc_buffer_size”†”asbuh1hhj[ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj[ubjÓ )�”}”(hŒrc_buffer_block_size”h]”hŒrc_buffer_block_size”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj[ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjWubjä)�”}”(hŒu8 rc_buffer_size”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(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.drm_dsc_dp_rc_buffer_size”†”asbuh1hhj¥ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¥ubjÓ )�”}”(hŒrc_buffer_size”h]”hŒrc_buffer_size”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¥ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjWubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjh²hh³j0h´K8ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjh²hh³j0h´K8ubah}”(h]”jah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j0h´K8hjh²hubj )�”}”(hhh]”hÎ)�”}”(hŒget rc buffer size in bytes”h]”hŒget rc buffer size in bytes”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´K8hjÿh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjh²hh³j0h´K8ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jj$ jj% ‰j& ‰j' ‰uh1j˜ h²hhjƒ÷h³Nh´Nubj) )�”}”(hŒà**Parameters** ``u8 rc_buffer_block_size`` block size code, according to DPCD offset 62h ``u8 rc_buffer_size`` number of blocks - 1, according to DPCD offset 63h **Return** buffer size in bytes, or 0 on invalid input”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj$h]”hŒ Parameters”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj"ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´K` ``const struct drm_dsc_config *dsc_cfg`` DSC Configuration data filled by driver as defined by :c:type:`struct drm_dsc_config ` **Description** DSC source device sends a picture parameter set (PPS) containing the information required by the sink to decode the compressed frame. Driver populates the DSC PPS struct using the DSC configuration parameters in the order expected by the DSC Display Sink device. For the DSC, the sink device expects the PPS payload in big endian format for fields that span more than 1 byte.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjih]”hŒ Parameters”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjgubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´KWhjcubjw )�”}”(hhh]”(j| )�”}”(hŒÆ``struct drm_dsc_picture_parameter_set *pps_payload`` Bitwise struct for DSC Picture Parameter Set. This is defined by :c:type:`struct drm_dsc_picture_parameter_set ` ”h]”(j‚ )�”}”(hŒ5``struct drm_dsc_picture_parameter_set *pps_payload``”h]”jˆ )�”}”(hjˆh]”hŒ1struct drm_dsc_picture_parameter_set *pps_payload”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´KVhj‚ubjž )�”}”(hhh]”hÎ)�”}”(hŒ�Bitwise struct for DSC Picture Parameter Set. This is defined by :c:type:`struct drm_dsc_picture_parameter_set `”h]”(hŒABitwise struct for DSC Picture Parameter Set. This is defined by ”…”�”}”(hj¡h²hh³Nh´Nubh)�”}”(hŒN:c:type:`struct drm_dsc_picture_parameter_set `”h]”jˆ )�”}”(hj«h]”hŒ$struct drm_dsc_picture_parameter_set”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj©ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dsc_picture_parameter_set”uh1hh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´KUhj¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÈh´KUhjžubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j�h´KVhjubj| )�”}”(hŒ�``const struct drm_dsc_config *dsc_cfg`` DSC Configuration data filled by driver as defined by :c:type:`struct drm_dsc_config ` ”h]”(j‚ )�”}”(hŒ(``const struct drm_dsc_config *dsc_cfg``”h]”jˆ )�”}”(hjáh]”hŒ$const struct drm_dsc_config *dsc_cfg”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjßubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´KYhjÛubjž )�”}”(hhh]”hÎ)�”}”(hŒfDSC Configuration data filled by driver as defined by :c:type:`struct drm_dsc_config `”h]”(hŒ6DSC Configuration data filled by driver as defined by ”…”�”}”(hjúh²hh³Nh´Nubh)�”}”(hŒ0:c:type:`struct drm_dsc_config `”h]”jˆ )�”}”(hjh]”hŒstruct drm_dsc_config”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_dsc_config”uh1hh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´KXhjúubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j!h´KXhj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jöh´KYhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjcubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj<h]”hŒ Description”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´K[hjcubhÎ)�”}”(hXwDSC source device sends a picture parameter set (PPS) containing the information required by the sink to decode the compressed frame. Driver populates the DSC PPS struct using the DSC configuration parameters in the order expected by the DSC Display Sink device. For the DSC, the sink device expects the PPS payload in big endian format for fields that span more than 1 byte.”h]”hXwDSC source device sends a picture parameter set (PPS) containing the information required by the sink to decode the compressed frame. Driver populates the DSC PPS struct using the DSC configuration parameters in the order expected by the DSC Display Sink device. For the DSC, the sink device expects the PPS payload in big endian format for fields that span more than 1 byte.”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´K[hjcubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjƒ÷h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ%drm_dsc_set_const_params (C function)”Œc.drm_dsc_set_const_params”hNt”auh1j† hjƒ÷h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ?void drm_dsc_set_const_params (struct drm_dsc_config *vdsc_cfg)”h]”j¤ )�”}”(hŒ>void drm_dsc_set_const_params(struct drm_dsc_config *vdsc_cfg)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj}h²hh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj}h²hh³j�h´MubjÍ )�”}”(hŒdrm_dsc_set_const_params”h]”jÓ )�”}”(hŒdrm_dsc_set_const_params”h]”hŒdrm_dsc_set_const_params”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjžubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj}h²hh³j�h´MubjÞ)�”}”(hŒ!(struct drm_dsc_config *vdsc_cfg)”h]”jä)�”}”(hŒstruct drm_dsc_config *vdsc_cfg”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Œdrm_dsc_config”h]”hŒdrm_dsc_config”…”�”}”(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%)�”}”jj¤sbŒc.drm_dsc_set_const_params”†”asbuh1hhjºubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjºubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjºubjÓ )�”}”(hŒvdsc_cfg”h]”hŒvdsc_cfg”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjºubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¶ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj}h²hh³j�h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjyh²hh³j�h´Mubah}”(h]”jtah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j�h´Mhjvh²hubj )�”}”(hhh]”hÎ)�”}”(hŒGSet DSC parameters considered typically constant across operation modes”h]”hŒGSet DSC parameters considered typically constant across operation modes”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´Mhj>h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjvh²hh³j�h´Mubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jYj$ jYj% ‰j& ‰j' ‰uh1j˜ h²hhjƒ÷h³Nh´Nubj) )�”}”(hŒg**Parameters** ``struct drm_dsc_config *vdsc_cfg`` DSC Configuration data partially filled by driver”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjch]”hŒ Parameters”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjaubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´Mhj]ubjw )�”}”(hhh]”j| )�”}”(hŒU``struct drm_dsc_config *vdsc_cfg`` DSC Configuration data partially filled by driver”h]”(j‚ )�”}”(hŒ#``struct drm_dsc_config *vdsc_cfg``”h]”jˆ )�”}”(hj‚h]”hŒstruct drm_dsc_config *vdsc_cfg”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj€ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´Mhj|ubjž )�”}”(hhh]”hÎ)�”}”(hŒ1DSC Configuration data partially filled by driver”h]”hŒ1DSC Configuration data partially filled by driver”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´Mhj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j—h´Mhjyubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj]ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjƒ÷h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ&drm_dsc_set_rc_buf_thresh (C function)”Œc.drm_dsc_set_rc_buf_thresh”hNt”auh1j† hjƒ÷h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ@void drm_dsc_set_rc_buf_thresh (struct drm_dsc_config *vdsc_cfg)”h]”j¤ )�”}”(hŒ?void drm_dsc_set_rc_buf_thresh(struct drm_dsc_config *vdsc_cfg)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjØh²hh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´M0ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjØh²hh³jêh´M0ubjÍ )�”}”(hŒdrm_dsc_set_rc_buf_thresh”h]”jÓ )�”}”(hŒdrm_dsc_set_rc_buf_thresh”h]”hŒdrm_dsc_set_rc_buf_thresh”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjùubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjØh²hh³jêh´M0ubjÞ)�”}”(hŒ!(struct drm_dsc_config *vdsc_cfg)”h]”jä)�”}”(hŒstruct drm_dsc_config *vdsc_cfg”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(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Œdrm_dsc_config”h]”hŒdrm_dsc_config”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj4ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j9Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjÿsbŒc.drm_dsc_set_rc_buf_thresh”†”asbuh1hhjubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjubjÓ )�”}”(hŒvdsc_cfg”h]”hŒvdsc_cfg”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjØh²hh³jêh´M0ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjÔh²hh³jêh´M0ubah}”(h]”jÏah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jêh´M0hjÑh²hubj )�”}”(hhh]”hÎ)�”}”(hŒMSet thresholds for the RC model in accordance with the DSC 1.2 specification.”h]”hŒMSet thresholds for the RC model in accordance with the DSC 1.2 specification.”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´M0hj™h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÑh²hh³jêh´M0ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j´j$ j´j% ‰j& ‰j' ‰uh1j˜ h²hhjƒ÷h³Nh´Nubj) )�”}”(hŒg**Parameters** ``struct drm_dsc_config *vdsc_cfg`` DSC Configuration data partially filled by driver”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj¾h]”hŒ Parameters”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´M4hj¸ubjw )�”}”(hhh]”j| )�”}”(hŒU``struct drm_dsc_config *vdsc_cfg`` DSC Configuration data partially filled by driver”h]”(j‚ )�”}”(hŒ#``struct drm_dsc_config *vdsc_cfg``”h]”jˆ )�”}”(hjÝh]”hŒstruct drm_dsc_config *vdsc_cfg”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÛubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´M6hj×ubjž )�”}”(hhh]”hÎ)�”}”(hŒ1DSC Configuration data partially filled by driver”h]”hŒ1DSC Configuration data partially filled by driver”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´M3hjóubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj×ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jòh´M6hjÔubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj¸ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjƒ÷h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ$drm_dsc_setup_rc_params (C function)”Œc.drm_dsc_setup_rc_params”hNt”auh1j† hjƒ÷h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ\int drm_dsc_setup_rc_params (struct drm_dsc_config *vdsc_cfg, enum drm_dsc_params_type type)”h]”j¤ )�”}”(hŒ[int drm_dsc_setup_rc_params(struct drm_dsc_config *vdsc_cfg, enum drm_dsc_params_type type)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj3h²hh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´MÒubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj3h²hh³jEh´MÒubjÍ )�”}”(hŒdrm_dsc_setup_rc_params”h]”jÓ )�”}”(hŒdrm_dsc_setup_rc_params”h]”hŒdrm_dsc_setup_rc_params”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjTubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj3h²hh³jEh´MÒubjÞ)�”}”(hŒ@(struct drm_dsc_config *vdsc_cfg, enum drm_dsc_params_type type)”h]”(jä)�”}”(hŒstruct drm_dsc_config *vdsc_cfg”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjpubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjpubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_dsc_config”h]”hŒdrm_dsc_config”…”�”}”(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%)�”}”jjZsbŒc.drm_dsc_setup_rc_params”†”asbuh1hhjpubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjpubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjpubjÓ )�”}”(hŒvdsc_cfg”h]”hŒvdsc_cfg”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjpubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjlubjä)�”}”(hŒenum drm_dsc_params_type type”h]”(jª )�”}”(hjÂ7h]”hŒenum”…”�”}”(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Œdrm_dsc_params_type”h]”hŒdrm_dsc_params_type”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jŒmodname”NŒ classname”Njé jì )�”}”jï ]”j®Œc.drm_dsc_setup_rc_params”†”asbuh1hhjâubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjâubjÓ )�”}”(hŒtype”h]”hŒtype”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjâubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjlubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj3h²hh³jEh´MÒubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj/h²hh³jEh´MÒubah}”(h]”j*ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jEh´MÒhj,h²hubj )�”}”(hhh]”hÎ)�”}”(hŒÁSet parameters and limits for RC model in accordance with the DSC 1.1 or 1.2 specification and DSC C Model Required bits_per_pixel and bits_per_component to be set before calling this function.”•Jh]”hŒÁSet parameters and limits for RC model in accordance with the DSC 1.1 or 1.2 specification and DSC C Model Required bits_per_pixel and bits_per_component to be set before calling this function.”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´MÒhjWh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj,h²hh³jEh´MÒubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jrj$ jrj% ‰j& ‰j' ‰uh1j˜ h²hhjƒ÷h³Nh´Nubj) )�”}”(hŒä**Parameters** ``struct drm_dsc_config *vdsc_cfg`` DSC Configuration data partially filled by driver ``enum drm_dsc_params_type type`` operating mode and standard to follow **Return** 0 or -error code in case of an error”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj|h]”hŒ Parameters”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjzubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´MÖhjvubjw )�”}”(hhh]”(j| )�”}”(hŒV``struct drm_dsc_config *vdsc_cfg`` DSC Configuration data partially filled by driver ”h]”(j‚ )�”}”(hŒ#``struct drm_dsc_config *vdsc_cfg``”h]”jˆ )�”}”(hj›h]”hŒstruct drm_dsc_config *vdsc_cfg”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj™ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´M×hj•ubjž )�”}”(hhh]”hÎ)�”}”(hŒ1DSC Configuration data partially filled by driver”h]”hŒ1DSC Configuration data partially filled by driver”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j°h´M×hj±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j°h´M×hj’ubj| )�”}”(hŒH``enum drm_dsc_params_type type`` operating mode and standard to follow ”h]”(j‚ )�”}”(hŒ!``enum drm_dsc_params_type type``”h]”jˆ )�”}”(hjÔh]”hŒenum drm_dsc_params_type type”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÒubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´MØhjÎubjž )�”}”(hhh]”hÎ)�”}”(hŒ%operating mode and standard to follow”h]”hŒ%operating mode and standard to follow”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jéh´MØhjêubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÎubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jéh´MØhj’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjvubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjh]”hŒReturn”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´MÚhjvubhÎ)�”}”(hŒ$0 or -error code in case of an error”h]”hŒ$0 or -error code in case of an error”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´MÚhjvubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjƒ÷h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ*drm_dsc_compute_rc_parameters (C function)”Œc.drm_dsc_compute_rc_parameters”hNt”auh1j† hjƒ÷h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒCint drm_dsc_compute_rc_parameters (struct drm_dsc_config *vdsc_cfg)”h]”j¤ )�”}”(hŒBint drm_dsc_compute_rc_parameters(struct drm_dsc_config *vdsc_cfg)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjPh²hh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjPh²hh³jbh´MubjÍ )�”}”(hŒdrm_dsc_compute_rc_parameters”h]”jÓ )�”}”(hŒdrm_dsc_compute_rc_parameters”h]”hŒdrm_dsc_compute_rc_parameters”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjqubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjPh²hh³jbh´MubjÞ)�”}”(hŒ!(struct drm_dsc_config *vdsc_cfg)”h]”jä)�”}”(hŒstruct drm_dsc_config *vdsc_cfg”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Œdrm_dsc_config”h]”hŒdrm_dsc_config”…”�”}”(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%)�”}”jjwsbŒc.drm_dsc_compute_rc_parameters”†”asbuh1hhj�ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj�ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�ubjÓ )�”}”(hŒvdsc_cfg”h]”hŒvdsc_cfg”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj‰ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjPh²hh³jbh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjLh²hh³jbh´Mubah}”(h]”jGah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jbh´MhjIh²hubj )�”}”(hhh]”hÎ)�”}”(hŒÖWrite rate control parameters to the dsc configuration defined in :c:type:`struct drm_dsc_config ` in accordance with the DSC 1.2 specification. Some configuration fields must be present beforehand.”h]”(hŒBWrite rate control parameters to the dsc configuration defined in ”…”�”}”(hjh²hh³Nh´Nubh)�”}”(hŒ0:c:type:`struct drm_dsc_config `”h]”jˆ )�”}”(hjh]”hŒstruct drm_dsc_config”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jì )�”}”jï ]”jËŒc.drm_dsc_compute_rc_parameters”†”asbjñ Œdrm_dsc_config”uh1hh³jlh´K$hjubhŒd in accordance with the DSC 1.2 specification. Some configuration fields must be present beforehand.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´Mhjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjIh²hh³jbh´Mubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jTj$ jTj% ‰j& ‰j' ‰uh1j˜ h²hhjƒ÷h³Nh´Nubj) )�”}”(hŒg**Parameters** ``struct drm_dsc_config *vdsc_cfg`` DSC Configuration data partially filled by driver”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj^h]”hŒ Parameters”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj\ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´MhjXubjw )�”}”(hhh]”j| )�”}”(hŒU``struct drm_dsc_config *vdsc_cfg`` DSC Configuration data partially filled by driver”h]”(j‚ )�”}”(hŒ#``struct drm_dsc_config *vdsc_cfg``”h]”jˆ )�”}”(hj}h]”hŒstruct drm_dsc_config *vdsc_cfg”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´Mhjwubjž )�”}”(hhh]”hÎ)�”}”(hŒ1DSC Configuration data partially filled by driver”h]”hŒ1DSC Configuration data partially filled by driver”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´Mhj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjwubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j’h´Mhjtubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjXubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjƒ÷h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ drm_dsc_get_bpp_int (C function)”Œc.drm_dsc_get_bpp_int”hNt”auh1j† hjƒ÷h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ?u32 drm_dsc_get_bpp_int (const struct drm_dsc_config *vdsc_cfg)”h]”j¤ )�”}”(hŒ>u32 drm_dsc_get_bpp_int(const struct drm_dsc_config *vdsc_cfg)”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%)�”}”jŒdrm_dsc_get_bpp_int”sbŒc.drm_dsc_get_bpp_int”†”asbuh1hhjÓh²hh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.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Œdrm_dsc_get_bpp_int”h]”jÓ )�”}”(hjøh]”hŒdrm_dsc_get_bpp_int”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÓh²hh³jûh´M¢ubjÞ)�”}”(hŒ'(const struct drm_dsc_config *vdsc_cfg)”h]”jä)�”}”(hŒ%const struct drm_dsc_config *vdsc_cfg”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj%ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj%ubjª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj%ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj%ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_dsc_config”h]”hŒdrm_dsc_config”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj_ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jdŒmodname”NŒ classname”Njé jì )�”}”jï ]”jöŒc.drm_dsc_get_bpp_int”†”asbuh1hhj%ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj%ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj%ubjÓ )�”}”(hŒvdsc_cfg”h]”hŒvdsc_cfg”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj%ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj!ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjÓh²hh³jûh´M¢ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ=Get integer bits per pixel value for the given DRM DSC config”h]”hŒ=Get integer bits per pixel value for the given DRM DSC config”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.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²hhjƒ÷h³Nh´Nubj) )�”}”(hŒ{**Parameters** ``const struct drm_dsc_config *vdsc_cfg`` Pointer to DRM DSC config struct **Return** Integer BPP value”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjçh]”hŒ Parameters”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjåubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´M¦hjáubjw )�”}”(hhh]”j| )�”}”(hŒK``const struct drm_dsc_config *vdsc_cfg`` Pointer to DRM DSC config struct ”h]”(j‚ )�”}”(hŒ)``const struct drm_dsc_config *vdsc_cfg``”h]”jˆ )�”}”(hjh]”hŒ%const struct drm_dsc_config *vdsc_cfg”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´M£hjubjž )�”}”(hhh]”hÎ)�”}”(hŒ Pointer to DRM DSC config struct”h]”hŒ Pointer to DRM DSC config struct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jh´M£hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jh´M£hjýubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjáubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjAh]”hŒReturn”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´M¥hjáubhÎ)�”}”(hŒInteger BPP value”h]”hŒInteger BPP value”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´M¥hjáubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjƒ÷h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ(drm_dsc_initial_scale_value (C function)”Œc.drm_dsc_initial_scale_value”hNt”auh1j† hjƒ÷h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒAu8 drm_dsc_initial_scale_value (const struct drm_dsc_config *dsc)”h]”j¤ )�”}”(hŒ@u8 drm_dsc_initial_scale_value(const struct drm_dsc_config *dsc)”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu8”h]”hŒu8”…”�”}”(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Œdrm_dsc_initial_scale_value”sbŒc.drm_dsc_initial_scale_value”†”asbuh1hhj‚h²hh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.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Œdrm_dsc_initial_scale_value”h]”jÓ )�”}”(hj§h]”hŒdrm_dsc_initial_scale_value”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¹ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj‚h²hh³jªh´M¯ubjÞ)�”}”(hŒ"(const struct drm_dsc_config *dsc)”h]”jä)�”}”(hŒ const struct drm_dsc_config *dsc”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(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Œdrm_dsc_config”h]”hŒdrm_dsc_config”…”�”}”(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.drm_dsc_initial_scale_value”†”asbuh1hhjÔubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/ h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÔubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj= h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÔubjÓ )�”}”(hŒdsc”h]”hŒdsc”…”�”}”(hjJ h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÔubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÐubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj‚h²hh³jªh´M¯ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj~h²hh³jªh´M¯ubah}”(h]”jyah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jªh´M¯hj{h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ:Calculate the initial scale value for the given DSC config”h]”hŒ:Calculate the initial scale value for the given DSC config”…”�”}”(hjt h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´M¯hjq 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²hhjƒ÷h³Nh´Nubj) )�”}”(hŒƒ**Parameters** ``const struct drm_dsc_config *dsc`` Pointer to DRM DSC config struct **Return** Calculated initial scale value”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj– h]”hŒ Parameters”…”�”}”(hj˜ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj” ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´M³hj� ubjw )�”}”(hhh]”j| )�”}”(hŒF``const struct drm_dsc_config *dsc`` Pointer to DRM DSC config struct ”h]”(j‚ )�”}”(hŒ$``const struct drm_dsc_config *dsc``”h]”jˆ )�”}”(hjµ h]”hŒ const struct drm_dsc_config *dsc”…”�”}”(hj· h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj³ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´M°hj¯ ubjž )�”}”(hhh]”hÎ)�”}”(hŒ Pointer to DRM DSC config struct”h]”hŒ Pointer to DRM DSC config struct”…”�”}”(hjÎ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÊ h´M°hjË ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¯ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÊ h´M°hj¬ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj� ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjð h]”hŒReturn”…”�”}”(hjò h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjî ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´M²hj� ubhÎ)�”}”(hŒCalculated initial scale value”h]”hŒCalculated initial scale value”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´M²hj� ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjƒ÷h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ(drm_dsc_flatness_det_thresh (C function)”Œc.drm_dsc_flatness_det_thresh”hNt”auh1j† hjƒ÷h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒBu32 drm_dsc_flatness_det_thresh (const struct drm_dsc_config *dsc)”h]”j¤ )�”}”(hŒAu32 drm_dsc_flatness_det_thresh(const struct drm_dsc_config *dsc)”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu32”h]”hŒu32”…”�”}”(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Œdrm_dsc_flatness_det_thresh”sbŒc.drm_dsc_flatness_det_thresh”†”asbuh1hhj1!h²hh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´M»ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZ!h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj1!h²hh³jY!h´M»ubjÍ )�”}”(hŒdrm_dsc_flatness_det_thresh”h]”jÓ )�”}”(hjV!h]”hŒdrm_dsc_flatness_det_thresh”…”�”}”(hjl!h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjh!ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj1!h²hh³jY!h´M»ubjÞ)�”}”(hŒ"(const struct drm_dsc_config *dsc)”h]”jä)�”}”(hŒ const struct drm_dsc_config *dsc”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(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Œdrm_dsc_config”h]”hŒdrm_dsc_config”…”�”}”(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ï ]”jT!Œc.drm_dsc_flatness_det_thresh”†”asbuh1hhjƒ!ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞ!h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjƒ!ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjì!h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjƒ!ubjÓ )�”}”(hŒdsc”h]”hŒdsc”…”�”}”(hjù!h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjƒ!ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj!ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj1!h²hh³jY!h´M»ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj-!h²hh³jY!h´M»ubah}”(h]”j(!ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jY!h´M»hj*!h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ:Calculate the flatness_det_thresh for the given DSC config”h]”hŒ:Calculate the flatness_det_thresh for the given DSC config”…”�”}”(hj#"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´M»hj "h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj*!h²hh³jY!h´M»ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j;"j$ j;"j% ‰j& ‰j' ‰uh1j˜ h²hhjƒ÷h³Nh´Nubj) )�”}”(hŒ‰**Parameters** ``const struct drm_dsc_config *dsc`` Pointer to DRM DSC config struct **Return** Calculated flatness det thresh value”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjE"h]”hŒ Parameters”…”�”}”(hjG"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjC"ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´M¿hj?"ubjw )�”}”(hhh]”j| )�”}”(hŒF``const struct drm_dsc_config *dsc`` Pointer to DRM DSC config struct ”h]”(j‚ )�”}”(hŒ$``const struct drm_dsc_config *dsc``”h]”jˆ )�”}”(hjd"h]”hŒ const struct drm_dsc_config *dsc”…”�”}”(hjf"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjb"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´M¼hj^"ubjž )�”}”(hhh]”hÎ)�”}”(hŒ Pointer to DRM DSC config struct”h]”hŒ Pointer to DRM DSC config struct”…”�”}”(hj}"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jy"h´M¼hjz"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj^"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jy"h´M¼hj["ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj?"ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjŸ"h]”hŒReturn”…”�”}”(hj¡"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj�"ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´M¾hj?"ubhÎ)�”}”(hŒ$Calculated flatness det thresh value”h]”hŒ$Calculated flatness det thresh value”…”�”}”(hjµ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´M¾hj?"ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjƒ÷h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ drm_dsc_dump_config (C function)”Œc.drm_dsc_dump_config”hNt”auh1j† hjƒ÷h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ^void drm_dsc_dump_config (struct drm_printer *p, int indent, const struct drm_dsc_config *cfg)”h]”j¤ )�”}”(hŒ]void drm_dsc_dump_config(struct drm_printer *p, int indent, const struct drm_dsc_config *cfg)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjä"h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjà"h²hh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjó"h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjà"h²hh³jò"h´MubjÍ )�”}”(hŒdrm_dsc_dump_config”h]”jÓ )�”}”(hŒdrm_dsc_dump_config”h]”hŒdrm_dsc_dump_config”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj#ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjà"h²hh³jò"h´MubjÞ)�”}”(hŒE(struct drm_printer *p, int indent, const struct drm_dsc_config *cfg)”h]”(jä)�”}”(hŒstruct drm_printer *p”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Œ drm_printer”h]”hŒ drm_printer”…”�”}”(hj?#h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj<#ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jA#Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj#sbŒc.drm_dsc_dump_config”†”asbuh1hhj#ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_#h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj#ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjm#h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj#ubjÓ )�”}”(hjDh]”hŒp”…”�”}”(hjz#h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj#ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj#ubjä)�”}”(hŒ int indent”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(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Œindent”h]”hŒindent”…”�”}”(hj®#h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjŽ#ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj#ubjä)�”}”(hŒ const struct drm_dsc_config *cfg”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(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Œdrm_dsc_config”h]”hŒdrm_dsc_config”…”�”}”(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.drm_dsc_dump_config”†”asbuh1hhjÃ#ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÃ#ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj,$h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÃ#ubjÓ )�”}”(hŒcfg”h]”hŒcfg”…”�”}”(hj9$h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÃ#ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj#ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjà"h²hh³jò"h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjÜ"h²hh³jò"h´Mubah}”(h]”j×"ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jò"h´MhjÙ"h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ#Dump the provided DSC configuration”h]”hŒ#Dump the provided DSC configuration”…”�”}”(hjc$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´Mhj`$h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÙ"h²hh³jò"h´Mubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j{$j$ j{$j% ‰j& ‰j' ‰uh1j˜ h²hhjƒ÷h³Nh´Nubj) )�”}”(hŒý**Parameters** ``struct drm_printer *p`` The printer used for output ``int indent`` Tab indentation level (max 5) ``const struct drm_dsc_config *cfg`` DSC configuration to print **Description** Print the provided DSC configuration in **cfg**.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj…$h]”hŒ Parameters”…”�”}”(hj‡$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjƒ$ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´Mhj$ubjw )�”}”(hhh]”(j| )�”}”(hŒ6``struct drm_printer *p`` The printer used for output ”h]”(j‚ )�”}”(hŒ``struct drm_printer *p``”h]”jˆ )�”}”(hj¤$h]”hŒstruct drm_printer *p”…”�”}”(hj¦$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj¢$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´Mhjž$ubjž )�”}”(hhh]”hÎ)�”}”(hŒThe printer used for output”h]”hŒThe printer used for output”…”�”}”(hj½$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¹$h´Mhjº$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjž$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¹$h´Mhj›$ubj| )�”}”(hŒ-``int indent`` Tab indentation level (max 5) ”h]”(j‚ )�”}”(hŒ``int indent``”h]”jˆ )�”}”(hjÝ$h]”hŒ int indent”…”�”}”(hjß$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÛ$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´Mhj×$ubjž )�”}”(hhh]”hÎ)�”}”(hŒTab indentation level (max 5)”h]”hŒTab indentation level (max 5)”…”�”}”(hjö$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jò$h´Mhjó$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj×$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jò$h´Mhj›$ubj| )�”}”(hŒ@``const struct drm_dsc_config *cfg`` DSC configuration to print ”h]”(j‚ )�”}”(hŒ$``const struct drm_dsc_config *cfg``”h]”jˆ )�”}”(hj%h]”hŒ const struct drm_dsc_config *cfg”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´Mhj%ubjž )�”}”(hhh]”hÎ)�”}”(hŒDSC configuration to print”h]”hŒDSC configuration to print”…”�”}”(hj/%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j+%h´Mhj,%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j+%h´Mhj›$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj$ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjQ%h]”hŒ Description”…”�”}”(hjS%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjO%ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´Mhj$ubhÎ)�”}”(hŒ0Print the provided DSC configuration in **cfg**.”h]”(hŒ(Print the provided DSC configuration in ”…”�”}”(hjg%h²hh³Nh´Nubj3 )�”}”(hŒ**cfg**”h]”hŒcfg”…”�”}”(hjo%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjg%ubhŒ.”…”�”}”(hjg%h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œm/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:368: ./drivers/gpu/drm/display/drm_dsc_helper.c”h´Mhj$ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjƒ÷h²hh³Nh´Nubeh}”(h]”jªah ]”h"]”Œ5display stream compression helper functions reference”ah$]”h&]”uh1hµhh·h²hh³hÌh´Mhubh¶)�”}”(hhh]”(h»)�”}”(hŒ)Output Probing Helper Functions Reference”h]”hŒ)Output Probing Helper Functions Reference”…”�”}”(hj™%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÊjÆuh1hºhj–%h²hh³hÌh´MtubhÎ)�”}”(hŒÝThis library provides some helper code for output probing. It provides an implementation of the core :c:type:`drm_connector_funcs.fill_modes ` interface with drm_helper_probe_single_connector_modes().”h]”(hŒeThis library provides some helper code for output probing. It provides an implementation of the core ”…”�”}”(hj§%h²hh³Nh´Nubh)�”}”(hŒ>:c:type:`drm_connector_funcs.fill_modes `”h]”jˆ )�”}”(hj±%h]”hŒdrm_connector_funcs.fill_modes”…”�”}”(hj³%h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj¯%ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_connector_funcs”uh1hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:374: ./drivers/gpu/drm/drm_probe_helper.c”h´K1hj§%ubhŒ: interface with drm_helper_probe_single_connector_modes().”…”�”}”(hj§%h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÎ%h´K1hj–%h²hubhÎ)�”}”(hŒ»It also provides support for polling connectors with a work item and for generic hotplug interrupt handling where the driver doesn't or cannot keep track of a per-connector hpd interrupt.”h]”hŒ½It also provides support for polling connectors with a work item and for generic hotplug interrupt handling where the driver doesn’t or cannot keep track of a per-connector hpd interrupt.”…”�”}”(hjÙ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:374: ./drivers/gpu/drm/drm_probe_helper.c”h´K5hj–%h²hubhÎ)�”}”(hŒÄThis helper library can be used independently of the modeset helper library. Drivers can also overwrite different parts e.g. use their own hotplug handling code to avoid probing unrelated outputs.”h]”hŒÄThis helper library can be used independently of the modeset helper library. Drivers can also overwrite different parts e.g. use their own hotplug handling code to avoid probing unrelated outputs.”…”�”}”(hjè%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:374: ./drivers/gpu/drm/drm_probe_helper.c”h´K9hj–%h²hubhÎ)�”}”(hŒ¸The probe helpers share the function table structures with other display helper libraries. See :c:type:`struct drm_connector_helper_funcs ` for the details.”h]”(hŒ_The probe helpers share the function table structures with other display helper libraries. See ”…”�”}”(hj÷%h²hh³Nh´Nubh)�”}”(hŒH:c:type:`struct drm_connector_helper_funcs `”h]”jˆ )�”}”(hj&h]”hŒ!struct drm_connector_helper_funcs”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÿ%ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_connector_helper_funcs”uh1hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:374: ./drivers/gpu/drm/drm_probe_helper.c”h´K=hj÷%ubhŒ for the details.”…”�”}”(hj÷%h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j&h´K=hj–%h²hubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ'drm_kms_helper_poll_enable (C function)”Œc.drm_kms_helper_poll_enable”hNt”auh1j† hj–%h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ8void drm_kms_helper_poll_enable (struct drm_device *dev)”h]”j¤ )�”}”(hŒ7void drm_kms_helper_poll_enable(struct drm_device *dev)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjB&h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj>&h²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´M ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQ&h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj>&h²hh³jP&h´M ubjÍ )�”}”(hŒdrm_kms_helper_poll_enable”h]”jÓ )�”}”(hŒdrm_kms_helper_poll_enable”h]”hŒdrm_kms_helper_poll_enable”…”�”}”(hjc&h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj_&ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj>&h²hh³jP&h´M ubjÞ)�”}”(hŒ(struct drm_device *dev)”h]”jä)�”}”(hŒstruct drm_device *dev”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Œ drm_device”h]”hŒ drm_device”…”�”}”(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%)�”}”jje&sbŒc.drm_kms_helper_poll_enable”†”asbuh1hhj{&ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½&h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj{&ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjË&h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj{&ubjÓ )�”}”(hŒdev”h]”hŒdev”…”�”}”(hjØ&h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj{&ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjw&ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj>&h²hh³jP&h´M ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj:&h²hh³jP&h´M ubah}”(h]”j5&ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jP&h´M hj7&h²hubj )�”}”(hhh]”hÎ)�”}”(hŒre-enable output polling.”h]”hŒre-enable output polling.”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´M hjÿ&h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj7&h²hh³jP&h´M ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j'j$ j'j% ‰j& ‰j' ‰uh1j˜ h²hhj–%h³Nh´Nubj) )�”}”(hXt**Parameters** ``struct drm_device *dev`` drm_device **Description** This function re-enables the output polling work, after it has been temporarily disabled using drm_kms_helper_poll_disable(), for example over suspend/resume. Drivers can call this helper from their device resume implementation. It is not an error to call this even when output polling isn't enabled. If device polling was never initialized before, this call will trigger a warning and return. Note that calls to enable and disable polling must be strictly ordered, which is automatically the case when they're only call from suspend/resume callbacks.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj$'h]”hŒ Parameters”…”�”}”(hj&'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj"'ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´M$hj'ubjw )�”}”(hhh]”j| )�”}”(hŒ&``struct drm_device *dev`` drm_device ”h]”(j‚ )�”}”(hŒ``struct drm_device *dev``”h]”jˆ )�”}”(hjC'h]”hŒstruct drm_device *dev”…”�”}”(hjE'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjA'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´M!hj='ubjž )�”}”(hhh]”hÎ)�”}”(hŒ drm_device”h]”hŒ drm_device”…”�”}”(hj\'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jX'h´M!hjY'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj='ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jX'h´M!hj:'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj'ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj~'h]”hŒ Description”…”�”}”(hj€'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj|'ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´M#hj'ubhÎ)�”}”(hŒžThis function re-enables the output polling work, after it has been temporarily disabled using drm_kms_helper_poll_disable(), for example over suspend/resume.”h]”hŒžThis function re-enables the output polling work, after it has been temporarily disabled using drm_kms_helper_poll_disable(), for example over suspend/resume.”…”�”}”(hj”'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´M"hj'ubhÎ)�”}”(hŒ�Drivers can call this helper from their device resume implementation. It is not an error to call this even when output polling isn't enabled.”h]”hŒ�Drivers can call this helper from their device resume implementation. It is not an error to call this even when output polling isn’t enabled.”…”�”}”(hj£'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´M&hj'ubhÎ)�”}”(hŒ\If device polling was never initialized before, this call will trigger a warning and return.”h]”hŒ\If device polling was never initialized before, this call will trigger a warning and return.”…”�”}”(hj²'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´M)hj'ubhÎ)�”}”(hŒ�Note that calls to enable and disable polling must be strictly ordered, which is automatically the case when they're only call from suspend/resume callbacks.”h]”hŒŸNote that calls to enable and disable polling must be strictly ordered, which is automatically the case when they’re only call from suspend/resume callbacks.”…”�”}”(hjÁ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´M,hj'ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj–%h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ+drm_kms_helper_poll_reschedule (C function)”Œ c.drm_kms_helper_poll_reschedule”hNt”auh1j† hj–%h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ` vfunc for drivers that use the CRTC helpers for output mode filtering and detection. The basic procedure is as follows 1. All modes currently on the connector's modes list are marked as stale 2. New modes are added to the connector's probed_modes list with drm_mode_probed_add(). New modes start their life with status as OK. Modes are added from a single source using the following priority order. - :c:type:`drm_connector_helper_funcs.get_modes ` vfunc - if the connector status is connector_status_connected, standard VESA DMT modes up to 1024x768 are automatically added (drm_add_modes_noedid()) Finally modes specified via the kernel command line (video=...) are added in addition to what the earlier probes produced (drm_helper_probe_add_cmdline_mode()). These modes are generated using the VESA GTF/CVT formulas. 3. Modes are moved from the probed_modes list to the modes list. Potential duplicates are merged together (see drm_connector_list_update()). After this step the probed_modes list will be empty again. 4. Any non-stale mode on the modes list then undergoes validation - drm_mode_validate_basic() performs basic sanity checks - drm_mode_validate_size() filters out modes larger than **maxX** and **maxY** (if specified) - drm_mode_validate_flag() checks the modes against basic connector capabilities (interlace_allowed,doublescan_allowed,stereo_allowed) - the optional :c:type:`drm_connector_helper_funcs.mode_valid ` or :c:type:`drm_connector_helper_funcs.mode_valid_ctx ` helpers can perform driver and/or sink specific checks - the optional :c:type:`drm_crtc_helper_funcs.mode_valid `, :c:type:`drm_bridge_funcs.mode_valid ` and :c:type:`drm_encoder_helper_funcs.mode_valid ` helpers can perform driver and/or source specific checks which are also enforced by the modeset/atomic helpers 5. Any mode whose status is not OK is pruned from the connector's modes list, accompanied by a debug message indicating the reason for the mode's rejection (see drm_mode_prune_invalid()). **Return** The number of modes found on **connector**.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjñ-h]”hŒ Parameters”…”�”}”(hjó-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjï-ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´Mùhjë-ubjw )�”}”(hhh]”(j| )�”}”(hŒ7``struct drm_connector *connector`` connector to probe ”h]”(j‚ )�”}”(hŒ#``struct drm_connector *connector``”h]”jˆ )�”}”(hj.h]”hŒstruct drm_connector *connector”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´Möhj .ubjž )�”}”(hhh]”hÎ)�”}”(hŒconnector to probe”h]”hŒconnector to probe”…”�”}”(hj).h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j%.h´Möhj&.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj .ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j%.h´Möhj.ubj| )�”}”(hŒ&``uint32_t maxX`` max width for modes ”h]”(j‚ )�”}”(hŒ``uint32_t maxX``”h]”jˆ )�”}”(hjI.h]”hŒ uint32_t maxX”…”�”}”(hjK.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjG.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´M÷hjC.ubjž )�”}”(hhh]”hÎ)�”}”(hŒmax width for modes”h]”hŒmax width for modes”…”�”}”(hjb.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j^.h´M÷hj_.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjC.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j^.h´M÷hj.ubj| )�”}”(hŒ'``uint32_t maxY`` max height for modes ”h]”(j‚ )�”}”(hŒ``uint32_t maxY``”h]”jˆ )�”}”(hj‚.h]”hŒ uint32_t maxY”…”�”}”(hj„.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj€.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”•h´Møhj|.ubjž )�”}”(hhh]”hÎ)�”}”(hŒmax height for modes”h]”hŒmax height for modes”…”�”}”(hj›.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j—.h´Møhj˜.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj|.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j—.h´Møhj.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjë-ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj½.h]”hŒ Description”…”�”}”(hj¿.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj».ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´Múhjë-ubhÎ)�”}”(hX3Based on the helper callbacks implemented by **connector** in struct :c:type:`drm_connector_helper_funcs` try to detect all valid modes. Modes will first be added to the connector's probed_modes list, then culled (based on validity and the **maxX**, **maxY** parameters) and put into the normal modes list.”h]”(hŒ-Based on the helper callbacks implemented by ”…”�”}”(hjÓ.h²hh³Nh´Nubj3 )�”}”(hŒ **connector**”h]”hŒ connector”…”�”}”(hjÛ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÓ.ubhŒ in struct ”…”�”}”(hjÓ.h²hh³Nh´Nubh)�”}”(hŒ$:c:type:`drm_connector_helper_funcs`”h]”jˆ )�”}”(hjï.h]”hŒdrm_connector_helper_funcs”…”�”}”(hjñ.h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjí.ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œdrm_connector_helper_funcs”uh1hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´MùhjÓ.ubhŒŠ try to detect all valid modes. Modes will first be added to the connector’s probed_modes list, then culled (based on validity and the ”…”�”}”(hjÓ.h²hh³Nh´Nubj3 )�”}”(hŒ**maxX**”h]”hŒmaxX”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÓ.ubhŒ, ”…”�”}”(hjÓ.h²hh³Nh´Nubj3 )�”}”(hŒ**maxY**”h]”hŒmaxY”…”�”}”(hj#/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÓ.ubhŒ0 parameters) and put into the normal modes list.”…”�”}”(hjÓ.h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j /h´Mùhjë-ubhÎ)�”}”(hŒÎIntended to be used as a generic implementation of the :c:type:`drm_connector_funcs.fill_modes\(\) ` vfunc for drivers that use the CRTC helpers for output mode filtering and detection.”h]”(hŒ7Intended to be used as a generic implementation of the ”…”�”}”(hj;/h²hh³Nh´Nubh)�”}”(hŒB:c:type:`drm_connector_funcs.fill_modes\(\) `”h]”jˆ )�”}”(hjE/h]”hŒ drm_connector_funcs.fill_modes()”…”�”}”(hjG/h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjC/ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_connector_funcs”uh1hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´Mþhj;/ubhŒU vfunc for drivers that use the CRTC helpers for output mode filtering and detection.”…”�”}”(hj;/h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jb/h´Mþhjë-ubhÎ)�”}”(hŒ!The basic procedure is as follows”h]”hŒ!The basic procedure is as follows”…”�”}”(hjm/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´Mhjë-ubjMP)�”}”(hhh]”(hÿ)�”}”(hŒFAll modes currently on the connector's modes list are marked as stale ”h]”hÎ)�”}”(hŒEAll modes currently on the connector's modes list are marked as stale”h]”hŒGAll modes currently on the connector’s modes list are marked as stale”…”�”}”(hjƒ/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´Mhj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj|/ubhÿ)�”}”(hX“New modes are added to the connector's probed_modes list with drm_mode_probed_add(). New modes start their life with status as OK. Modes are added from a single source using the following priority order. - :c:type:`drm_connector_helper_funcs.get_modes ` vfunc - if the connector status is connector_status_connected, standard VESA DMT modes up to 1024x768 are automatically added (drm_add_modes_noedid()) Finally modes specified via the kernel command line (video=...) are added in addition to what the earlier probes produced (drm_helper_probe_add_cmdline_mode()). These modes are generated using the VESA GTF/CVT formulas. ”h]”(hÎ)�”}”(hŒËNew modes are added to the connector's probed_modes list with drm_mode_probed_add(). New modes start their life with status as OK. Modes are added from a single source using the following priority order.”h]”hŒÍNew modes are added to the connector’s probed_modes list with drm_mode_probed_add(). New modes start their life with status as OK. Modes are added from a single source using the following priority order.”…”�”}”(hjœ/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´Mhj˜/ubhú)�”}”(hhh]”(hÿ)�”}”(hŒQ:c:type:`drm_connector_helper_funcs.get_modes ` vfunc”h]”hÎ)�”}”(hj°/h]”(h)�”}”(hŒK:c:type:`drm_connector_helper_funcs.get_modes `”h]”jˆ )�”}”(hj·/h]”hŒ$drm_connector_helper_funcs.get_modes”…”�”}”(hj¹/h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjµ/ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_connector_helper_funcs”uh1hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´M hj²/ubhŒ vfunc”…”�”}”(hj²/h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÔ/h´M hj®/ubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj«/ubhÿ)�”}”(hŒ�if the connector status is connector_status_connected, standard VESA DMT modes up to 1024x768 are automatically added (drm_add_modes_noedid()) ”h]”hÎ)�”}”(hŒŽif the connector status is connector_status_connected, standard VESA DMT modes up to 1024x768 are automatically added (drm_add_modes_noedid())”h]”hŒŽif the connector status is connector_status_connected, standard VESA DMT modes up to 1024x768 are automatically added (drm_add_modes_noedid())”…”�”}”(hjé/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´M hjå/ubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj«/ubeh}”(h]”h ]”h"]”h$]”h&]”jNjÅ<uh1hùh³jÔ/h´M hj˜/ubhÎ)�”}”(hŒÛFinally modes specified via the kernel command line (video=...) are added in addition to what the earlier probes produced (drm_helper_probe_add_cmdline_mode()). These modes are generated using the VESA GTF/CVT formulas.”h]”hŒÛFinally modes specified via the kernel command line (video=...) are added in addition to what the earlier probes produced (drm_helper_probe_add_cmdline_mode()). These modes are generated using the VESA GTF/CVT formulas.”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´Mhj˜/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hþhj|/ubhÿ)�”}”(hŒÅModes are moved from the probed_modes list to the modes list. Potential duplicates are merged together (see drm_connector_list_update()). After this step the probed_modes list will be empty again. ”h]”hÎ)�”}”(hŒÄModes are moved from the probed_modes list to the modes list. Potential duplicates are merged together (see drm_connector_list_update()). After this step the probed_modes list will be empty again.”h]”hŒÄModes are moved from the probed_modes list to the modes list. Potential duplicates are merged together (see drm_connector_list_update()). After this step the probed_modes list will be empty again.”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´Mhj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj|/ubhÿ)�”}”(hX›Any non-stale mode on the modes list then undergoes validation - drm_mode_validate_basic() performs basic sanity checks - drm_mode_validate_size() filters out modes larger than **maxX** and **maxY** (if specified) - drm_mode_validate_flag() checks the modes against basic connector capabilities (interlace_allowed,doublescan_allowed,stereo_allowed) - the optional :c:type:`drm_connector_helper_funcs.mode_valid ` or :c:type:`drm_connector_helper_funcs.mode_valid_ctx ` helpers can perform driver and/or sink specific checks - the optional :c:type:`drm_crtc_helper_funcs.mode_valid `, :c:type:`drm_bridge_funcs.mode_valid ` and :c:type:`drm_encoder_helper_funcs.mode_valid ` helpers can perform driver and/or source specific checks which are also enforced by the modeset/atomic helpers ”h]”(hÎ)�”}”(hŒ>Any non-stale mode on the modes list then undergoes validation”h]”hŒ>Any non-stale mode on the modes list then undergoes validation”…”�”}”(hj60h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´Mhj20ubhú)�”}”(hhh]”(hÿ)�”}”(hŒ6drm_mode_validate_basic() performs basic sanity checks”h]”hÎ)�”}”(hjJ0h]”hŒ6drm_mode_validate_basic() performs basic sanity checks”…”�”}”(hjL0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´MhjH0ubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjE0ubhÿ)�”}”(hŒ[drm_mode_validate_size() filters out modes larger than **maxX** and **maxY** (if specified)”h]”hÎ)�”}”(hŒ[drm_mode_validate_size() filters out modes larger than **maxX** and **maxY** (if specified)”h]”(hŒ7drm_mode_validate_size() filters out modes larger than ”…”�”}”(hjd0h²hh³Nh´Nubj3 )�”}”(hŒ**maxX**”h]”hŒmaxX”…”�”}”(hjl0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjd0ubhŒ and ”…”�”}”(hjd0h²hh³Nh´Nubj3 )�”}”(hŒ**maxY**”h]”hŒmaxY”…”�”}”(hj~0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjd0ubhŒ (if specified)”…”�”}”(hjd0h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´Mhj`0ubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjE0ubhÿ)�”}”(hŒ„drm_mode_validate_flag() checks the modes against basic connector capabilities (interlace_allowed,doublescan_allowed,stereo_allowed)”h]”hÎ)�”}”(hŒ„drm_mode_validate_flag() checks the modes against basic connector capabilities (interlace_allowed,doublescan_allowed,stereo_allowed)”h]”hŒ„drm_mode_validate_flag() checks the modes against basic connector capabilities (interlace_allowed,doublescan_allowed,stereo_allowed)”…”�”}”(hj¡0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´Mhj�0ubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjE0ubhÿ)�”}”(hŒäthe optional :c:type:`drm_connector_helper_funcs.mode_valid ` or :c:type:`drm_connector_helper_funcs.mode_valid_ctx ` helpers can perform driver and/or sink specific checks”h]”hÎ)�”}”(hŒäthe optional :c:type:`drm_connector_helper_funcs.mode_valid ` or :c:type:`drm_connector_helper_funcs.mode_valid_ctx ` helpers can perform driver and/or sink specific checks”h]”(hŒ the optional ”…”�”}”(hjº0h²hh³Nh´Nubh)�”}”(hŒL:c:type:`drm_connector_helper_funcs.mode_valid `”h]”jˆ )�”}”(hjÄ0h]”hŒ%drm_connector_helper_funcs.mode_valid”…”�”}”(hjÆ0h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjÂ0ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_connector_helper_funcs”uh1hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´Mhjº0ubhŒ or ”…”�”}”(hjº0h²hh³Nh´Nubh)�”}”(hŒP:c:type:`drm_connector_helper_funcs.mode_valid_ctx `”h]”jˆ )�”}”(hjè0h]”hŒ)drm_connector_helper_funcs.mode_valid_ctx”…”�”}”(hjê0h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjæ0ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_connector_helper_funcs”uh1hh³já0h´Mhjº0ubhŒ7 helpers can perform driver and/or sink specific checks”…”�”}”(hjº0h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³já0h´Mhj¶0ubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjE0ubhÿ)�”}”(hXFthe optional :c:type:`drm_crtc_helper_funcs.mode_valid `, :c:type:`drm_bridge_funcs.mode_valid ` and :c:type:`drm_encoder_helper_funcs.mode_valid ` helpers can perform driver and/or source specific checks which are also enforced by the modeset/atomic helpers ”h]”hÎ)�”}”(hXEthe optional :c:type:`drm_crtc_helper_funcs.mode_valid `, :c:type:`drm_bridge_funcs.mode_valid ` and :c:type:`drm_encoder_helper_funcs.mode_valid ` helpers can perform driver and/or source specific checks which are also enforced by the modeset/atomic helpers”h]”(hŒ the optional ”…”�”}”(hj1h²hh³Nh´Nubh)�”}”(hŒB:c:type:`drm_crtc_helper_funcs.mode_valid `”h]”jˆ )�”}”(hj#1h]”hŒ drm_crtc_helper_funcs.mode_valid”…”�”}”(hj%1h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hj!1ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_crtc_helper_funcs”uh1hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´M"hj1ubhŒ, ”…”�”}”(hj1h²hh³Nh´Nubh)�”}”(hŒ8:c:type:`drm_bridge_funcs.mode_valid `”h]”jˆ )�”}”(hjG1h]”hŒdrm_bridge_funcs.mode_valid”…”�”}”(hjI1h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjE1ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_bridge_funcs”uh1hh³j@1h´M"hj1ubhŒ and ”…”�”}”(hj1h²hh³Nh´Nubh)�”}”(hŒH:c:type:`drm_encoder_helper_funcs.mode_valid `”h]”jˆ )�”}”(hjj1h]”hŒ#drm_encoder_helper_funcs.mode_valid”…”�”}”(hjl1h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjh1ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰jé jí jñ Œdrm_encoder_helper_funcs”uh1hh³j@1h´M"hj1ubhŒo helpers can perform driver and/or source specific checks which are also enforced by the modeset/atomic helpers”…”�”}”(hj1h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j@1h´M"hj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhjE0ubeh}”(h]”h ]”h"]”h$]”h&]”jNjÅ<uh1hùh³jY0h´Mhj20ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hþhj|/ubhÿ)�”}”(hŒ¹Any mode whose status is not OK is pruned from the connector's modes list, accompanied by a debug message indicating the reason for the mode's rejection (see drm_mode_prune_invalid()). ”h]”hÎ)�”}”(hŒ¸Any mode whose status is not OK is pruned from the connector's modes list, accompanied by a debug message indicating the reason for the mode's rejection (see drm_mode_prune_invalid()).”h]”hŒ¼Any mode whose status is not OK is pruned from the connector’s modes list, accompanied by a debug message indicating the reason for the mode’s rejection (see drm_mode_prune_invalid()).”…”�”}”(hj§1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´M'hj£1ubah}”(h]”h ]”h"]”h$]”h&]”uh1hþhj|/ubeh}”(h]”h ]”h"]”h$]”h&]”jIRjJRjKRhjLRjMRuh1jLPhjë-ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjÄ1h]”hŒReturn”…”�”}”(hjÆ1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÂ1ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´M+hjë-ubhÎ)�”}”(hŒ+The number of modes found on **connector**.”h]”(hŒThe number of modes found on ”…”�”}”(hjÚ1h²hh³Nh´Nubj3 )�”}”(hŒ **connector**”h]”hŒ connector”…”�”}”(hjâ1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÚ1ubhŒ.”…”�”}”(hjÚ1h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´M,hjë-ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj–%h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ)drm_kms_helper_hotplug_event (C function)”Œc.drm_kms_helper_hotplug_event”hNt”auh1j† hj–%h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ:void drm_kms_helper_hotplug_event (struct drm_device *dev)”h]”j¤ )�”}”(hŒ9void drm_kms_helper_hotplug_event(struct drm_device *dev)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj2h²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´MËubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*2h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj2h²hh³j)2h´MËubjÍ )�”}”(hŒdrm_kms_helper_hotplug_event”h]”jÓ )�”}”(hŒdrm_kms_helper_hotplug_event”h]”hŒdrm_kms_helper_hotplug_event”…”�”}”(hj<2h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj82ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj2h²hh³j)2h´MËubjÞ)�”}”(hŒ(struct drm_device *dev)”h]”jä)�”}”(hŒstruct drm_device *dev”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjX2h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjT2ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hje2h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjT2ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_device”h]”hŒ drm_device”…”�”}”(hjv2h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjs2ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jx2Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj>2sbŒc.drm_kms_helper_hotplug_event”†”asbuh1hhjT2ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–2h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjT2ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj¤2h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjT2ubjÓ )�”}”(hŒdev”h]”hŒdev”…”�”}”(hj±2h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjT2ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjP2ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj2h²hh³j)2h´MËubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj2h²hh³j)2h´MËubah}”(h]”j2ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j)2h´MËhj2h²hubj )�”}”(hhh]”hÎ)�”}”(hŒfire off KMS hotplug events”h]”hŒfire off KMS hotplug events”…”�”}”(hjÛ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´MËhjØ2h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj2h²hh³j)2h´MËubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jó2j$ jó2j% ‰j& ‰j' ‰uh1j˜ h²hhj–%h³Nh´Nubj) )�”}”(hXî**Parameters** ``struct drm_device *dev`` drm_device whose connector state changed **Description** This function fires off the uevent for userspace and also calls the client hotplug function, which is most commonly used to inform the fbdev emulation code and allow it to update the fbcon output configuration. Drivers should call this from their hotplug handling code when a change is detected. Note that this function does not do any output detection of its own, like drm_helper_hpd_irq_event() does - this is assumed to be done by the driver already. This function must be called from process context with no mode setting locks held. If only a single connector has changed, consider calling drm_kms_helper_connector_hotplug_event() instead.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjý2h]”hŒ Parameters”…”�”}”(hjÿ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjû2ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´MÏhj÷2ubjw )�”}”(hhh]”j| )�”}”(hŒD``struct drm_device *dev`` drm_device whose connector state changed ”h]”(j‚ )�”}”(hŒ``struct drm_device *dev``”h]”jˆ )�”}”(hj3h]”hŒstruct drm_device *dev”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´MÌhj3ubjž )�”}”(hhh]”hÎ)�”}”(hŒ(drm_device whose connector state changed”h]”hŒ(drm_device whose connector state changed”…”�”}”(hj53h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j13h´MÌhj23ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j13h´MÌhj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj÷2ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjW3h]”hŒ Description”…”�”}”(hjY3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjU3ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´MÎhj÷2ubhÎ)�”}”(hŒÒThis function fires off the uevent for userspace and also calls the client hotplug function, which is most commonly used to inform the fbdev emulation code and allow it to update the fbcon output configuration.”h]”hŒÒThis function fires off the uevent for userspace and also calls the client hotplug function, which is most commonly used to inform the fbdev emulation code and allow it to update the fbcon output configuration.”…”�”}”(hjm3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´MÍhj÷2ubhÎ)�”}”(hŒòDrivers should call this from their hotplug handling code when a change is detected. Note that this function does not do any output detection of its own, like drm_helper_hpd_irq_event() does - this is assumed to be done by the driver already.”h]”hŒòDrivers should call this from their hotplug handling code when a change is detected. Note that this function does not do any output detection of its own, like drm_helper_hpd_irq_event() does - this is assumed to be done by the driver already.”…”�”}”(hj|3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´MÑhj÷2ubhÎ)�”}”(hŒRThis function must be called from process context with no mode setting locks held.”h]”hŒRThis function must be called from process context with no mode setting locks held.”…”�”}”(hj‹3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´MÖhj÷2ubhÎ)�”}”(hŒjIf only a single connector has changed, consider calling drm_kms_helper_connector_hotplug_event() instead.”h]”hŒjIf only a single connector has changed, consider calling drm_kms_helper_connector_hotplug_event() instead.”…”�”}”(hjš3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´MÙhj÷2ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj–%h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ3drm_kms_helper_connector_hotplug_event (C function)”Œ(c.drm_kms_helper_connector_hotplug_event”hNt”auh1j† hj–%h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒMvoid drm_kms_helper_connector_hotplug_event (struct drm_connector *connector)”h]”j¤ )�”}”(hŒLvoid drm_kms_helper_connector_hotplug_event(struct drm_connector *connector)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÉ3h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjÅ3h²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´Måubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØ3h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÅ3h²hh³j×3h´MåubjÍ )�”}”(hŒ&drm_kms_helper_connector_hotplug_event”h]”jÓ )�”}”(hŒ&drm_kms_helper_connector_hotplug_event”h]”hŒ&drm_kms_helper_connector_hotplug_event”…”�”}”(hjê3h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjæ3ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÅ3h²hh³j×3h´MåubjÞ)�”}”(hŒ!(struct drm_connector *connector)”h]”jä)�”}”(hŒstruct drm_connector *connector”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj4ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj4ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_connector”h]”hŒ drm_connector”…”�”}”(hj$4h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj!4ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j&4Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjì3sbŒ(c.drm_kms_helper_connector_hotplug_event”†”asbuh1hhj4ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjD4h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj4ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjR4h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj4ubjÓ )�”}”(hŒ connector”h]”hŒ connector”…”�”}”(hj_4h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj4ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjþ3ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjÅ3h²hh³j×3h´Måubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjÁ3h²hh³j×3h´Måubah}”(h]”j¼3ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j×3h´Måhj¾3h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ&fire off a KMS connector hotplug event”h]”hŒ&fire off a KMS connector hotplug event”…”�”}”(hj‰4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´Måhj†4h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj¾3h²hh³j×3h´Måubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j¡4j$ j¡4j% ‰j& ‰j' ‰uh1j˜ h²hhj–%h³Nh´Nubj) )�”}”(hŒÞ**Parameters** ``struct drm_connector *connector`` drm_connector which has changed **Description** This is the same as drm_kms_helper_hotplug_event(), except it fires a more fine-grained uevent for a single connector.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj«4h]”hŒ Parameters”…”�”}”(hj­4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj©4ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´Méhj¥4ubjw )�”}”(hhh]”j| )�”}”(hŒD``struct drm_connector *connector`` drm_connector which has changed ”h]”(j‚ )�”}”(hŒ#``struct drm_connector *connector``”h]”jˆ )�”}”(hjÊ4h]”hŒstruct drm_connector *connector”…”�”}”(hjÌ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjÈ4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´MæhjÄ4ubjž )�”}”(hhh]”hÎ)�”}”(hŒdrm_connector which has changed”h]”hŒdrm_connector which has changed”…”�”}”(hjã4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jß4h´Mæhjà4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÄ4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jß4h´MæhjÁ4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj¥4ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj5h]”hŒ Description”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´Mèhj¥4ubhÎ)�”}”(hŒvThis is the same as drm_kms_helper_hotplug_event(), except it fires a more fine-grained uevent for a single connector.”h]”hŒvThis is the same as drm_kms_helper_hotplug_event(), except it fires a more fine-grained uevent for a single connector.”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´Mçhj¥4ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj–%h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ*drm_kms_helper_is_poll_worker (C function)”Œc.drm_kms_helper_is_poll_worker”hNt”auh1j† hj–%h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ)bool drm_kms_helper_is_poll_worker (void)”h]”j¤ )�”}”(hŒ(bool drm_kms_helper_is_poll_worker(void)”h]”(j¦)�”}”(hj£Ih]”hŒbool”…”�”}”(hjJ5h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjF5h²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´Mcubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjX5h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjF5h²hh³jW5h´McubjÍ )�”}”(hŒdrm_kms_helper_is_poll_worker”h]”jÓ )�”}”(hŒdrm_kms_helper_is_poll_worker”h]”hŒdrm_kms_helper_is_poll_worker”…”�”}”(hjj5h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjf5ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjF5h²hh³jW5h´McubjÞ)�”}”(hŒ(void)”h]”jä)�”}”(hŒvoid”h]”j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj†5h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj‚5ubah}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj~5ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjF5h²hh³jW5h´Mcubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjB5h²hh³jW5h´Mcubah}”(h]”j=5ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jW5h´Mchj?5h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ*is ``current`` task an output poll worker?”h]”(hŒis ”…”�”}”(hj°5h²hh³Nh´Nubjˆ )�”}”(hŒ ``current``”h]”hŒcurrent”…”�”}”(hj¸5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj°5ubhŒ task an output poll worker?”…”�”}”(hj°5h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´Mchj­5h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj?5h²hh³jW5h´Mcubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jÚ5j$ jÚ5j% ‰j& ‰j' ‰uh1j˜ h²hhj–%h³Nh´Nubj) )�”}”(hXû**Parameters** ``void`` no arguments **Description** Determine if ``current`` task is an output poll worker. This can be used to select distinct code paths for output polling versus other contexts. One use case is to avoid a deadlock between the output poll worker and the autosuspend worker wherein the latter waits for polling to finish upon calling drm_kms_helper_poll_disable(), while the former waits for runtime suspend to finish upon calling pm_runtime_get_sync() in a connector ->detect hook.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjä5h]”hŒ Parameters”…”�”}”(hjæ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjâ5ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´MghjÞ5ubjw )�”}”(hhh]”j| )�”}”(hŒ``void`` no arguments ”h]”(j‚ )�”}”(hŒ``void``”h]”jˆ )�”}”(hj6h]”hŒvoid”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´Khjý5ubjž )�”}”(hhh]”hÎ)�”}”(hŒ no arguments”h]”hŒ no arguments”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j6h´Khj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjý5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j6h´Khjú5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÞ5ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj>6h]”hŒ Description”…”�”}”(hj@6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj<6ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´KhjÞ5ubhÎ)�”}”(hŒ‘Determine if ``current`` task is an output poll worker. This can be used to select distinct code paths for output polling versus other contexts.”h]”(hŒ Determine if ”…”�”}”(hjT6h²hh³Nh´Nubjˆ )�”}”(hŒ ``current``”h]”hŒcurrent”…”�”}”(hj\6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjT6ubhŒy task is an output poll worker. This can be used to select distinct code paths for output polling versus other contexts.”…”�”}”(hjT6h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´MdhjÞ5ubhÎ)�”}”(hX.One use case is to avoid a deadlock between the output poll worker and the autosuspend worker wherein the latter waits for polling to finish upon calling drm_kms_helper_poll_disable(), while the former waits for runtime suspend to finish upon calling pm_runtime_get_sync() in a connector ->detect hook.”h]”hX.One use case is to avoid a deadlock between the output poll worker and the autosuspend worker wherein the latter waits for polling to finish upon calling drm_kms_helper_poll_disable(), while the former waits for runtime suspend to finish upon calling pm_runtime_get_sync() in a connector ->detect hook.”…”�”}”(hju6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´MghjÞ5ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj–%h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ(drm_kms_helper_poll_disable (C function)”Œc.drm_kms_helper_poll_disable”hNt”auh1j† hj–%h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ9void drm_kms_helper_poll_disable (struct drm_device *dev)”h]”j¤ )�”}”(hŒ8void drm_kms_helper_poll_disable(struct drm_device *dev)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¤6h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj 6h²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´Mwubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³6h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj 6h²hh³j²6h´MwubjÍ )�”}”(hŒdrm_kms_helper_poll_disable”h]”jÓ )�”}”(hŒdrm_kms_helper_poll_disable”h]”hŒdrm_kms_helper_poll_disable”…”�”}”(hjÅ6h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÁ6ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj 6h²hh³j²6h´MwubjÞ)�”}”(hŒ(struct drm_device *dev)”h]”jä)�”}”(hŒstruct drm_device *dev”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjá6h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjÝ6ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjî6h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÝ6ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_device”h]”hŒ drm_device”…”�”}”(hjÿ6h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjü6ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j7Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjÇ6sbŒc.drm_kms_helper_poll_disable”†”asbuh1hhjÝ6ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÝ6ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj-7h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÝ6ubjÓ )�”}”(hŒdev”h]”hŒdev”…”�”}”(hj:7h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÝ6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjÙ6ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj 6h²hh³j²6h´Mwubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjœ6h²hh³j²6h´Mwubah}”(h]”j—6ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j²6h´Mwhj™6h²hubj )�”}”(hhh]”hÎ)�”}”(hŒdisable output polling”h]”hŒdisable output polling”…”�”}”(hjd7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´Mwhja7h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj™6h²hh³j²6h´Mwubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j|7j$ j|7j% ‰j& ‰j' ‰uh1j˜ h²hhj–%h³Nh´Nubj) )�”}”(hXX**Parameters** ``struct drm_device *dev`` drm_device **Description** This function disables the output polling work. Drivers can call this helper from their device suspend implementation. It is not an error to call this even when output polling isn't enabled or already disabled. Polling is re-enabled by calling drm_kms_helper_poll_enable(). If however, the polling was never initialized, this call will trigger a warning and return. Note that calls to enable and disable polling must be strictly ordered, which is automatically the case when they're only call from suspend/resume callbacks.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj†7h]”hŒ Parameters”…”�”}”(hjˆ7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj„7ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´M{hj€7ubjw )�”}”(hhh]”j| )�”}”(hŒ&``struct drm_device *dev`` drm_device ”h]”(j‚ )�”}”(hŒ``struct drm_device *dev``”h]”jˆ )�”}”(hj¥7h]”hŒstruct drm_device *dev”…”�”}”(hj§7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj£7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´MxhjŸ7ubjž )�”}”(hhh]”hÎ)�”}”(hŒ drm_device”h]”hŒ drm_device”…”�”}”(hj¾7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jº7h´Mxhj»7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjŸ7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jº7h´Mxhjœ7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj€7ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjà7h]”hŒ Description”…”�”}”(hjâ7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÞ7ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´Mzhj€7ubhÎ)�”}”(hŒ/This function disables the output polling work.”h]”hŒ/This function disables the output polling work.”…”�”}”(hjö7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´Myhj€7ubhÎ)�”}”(hŒáDrivers can call this helper from their device suspend implementation. It is not an error to call this even when output polling isn't enabled or already disabled. Polling is re-enabled by calling drm_kms_helper_poll_enable().”h]”hŒãDrivers can call this helper from their device suspend implementation. It is not an error to call this even when output polling isn’t enabled or already disabled. Polling is re-enabled by calling drm_kms_helper_poll_enable().”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´M{hj€7ubhÎ)�”}”(hŒ[If however, the polling was never initialized, this call will trigger a warning and return.”h]”hŒ[If however, the polling was never initialized, this call will trigger a warning and return.”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´Mhj€7ubhÎ)�”}”(hŒ�Note that calls to enable and disable polling must be strictly ordered, which is automatically the case when they're only call from suspend/resume callbacks.”h]”hŒŸNote that calls to enable and disable polling must be strictly ordered, which is automatically the case when they’re only call from suspend/resume callbacks.”…”�”}”(hj#8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´M‚hj€7ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj–%h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ%drm_kms_helper_poll_init (C function)”Œc.drm_kms_helper_poll_init”hNt”auh1j† hj–%h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ6void drm_kms_helper_poll_init (struct drm_device *dev)”h]”j¤ )�”}”(hŒ5void drm_kms_helper_poll_init(struct drm_device *dev)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjR8h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjN8h²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´M–ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hja8h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjN8h²hh³j`8h´M–ubjÍ )�”}”(hŒdrm_kms_helper_poll_init”h]”jÓ )�”}”(hŒdrm_kms_helper_poll_init”h]”hŒdrm_kms_helper_poll_init”…”�”}”(hjs8h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjo8ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjN8h²hh³j`8h´M–ubjÞ)�”}”(hŒ(struct drm_device *dev)”h]”jä)�”}”(hŒstruct drm_device *dev”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj�8h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj‹8ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœ8h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj‹8ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_device”h]”hŒ drm_device”…”�”}”(hj­8h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjª8ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j¯8Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jju8sbŒc.drm_kms_helper_poll_init”†”asbuh1hhj‹8ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍ8h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj‹8ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÛ8h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj‹8ubjÓ )�”}”(hŒdev”h]”hŒdev”…”�”}”(hjè8h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj‹8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj‡8ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjN8h²hh³j`8h´M–ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjJ8h²hh³j`8h´M–ubah}”(h]”jE8ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j`8h´M–hjG8h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ$initialize and enable output polling”h]”hŒ$initialize and enable output polling”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´M–hj9h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjG8h²hh³j`8h´M–ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j*9j$ j*9j% ‰j& ‰j' ‰uh1j˜ h²hhj–%h³Nh´Nubj) )�”}”(hXX**Parameters** ``struct drm_device *dev`` drm_device **Description** This function initializes and then also enables output polling support for **dev**. Drivers which do not have reliable hotplug support in hardware can use this helper infrastructure to regularly poll such connectors for changes in their connection state. Drivers can control which connectors are polled by setting the DRM_CONNECTOR_POLL_CONNECT and DRM_CONNECTOR_POLL_DISCONNECT flags. On connectors where probing live outputs can result in visual distortion drivers should not set the DRM_CONNECTOR_POLL_DISCONNECT flag to avoid this. Connectors which have no flag or only DRM_CONNECTOR_POLL_HPD set are completely ignored by the polling logic. Note that a connector can be both polled and probed from the hotplug handler, in case the hotplug interrupt is known to be unreliable.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj49h]”hŒ Parameters”…”�”}”(hj69h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj29ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´Mšhj.9ubjw )�”}”(hhh]”j| )�”}”(hŒ&``struct drm_device *dev`` drm_device ”h]”(j‚ )�”}”(hŒ``struct drm_device *dev``”h]”jˆ )�”}”(hjS9h]”hŒstruct drm_device *dev”…”�”}”(hjU9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjQ9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´M—hjM9ubjž )�”}”(hhh]”hÎ)�”}”(hŒ drm_device”h]”hŒ drm_device”…”�”}”(hjl9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jh9h´M—hji9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjM9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jh9h´M—hjJ9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj.9ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjŽ9h]”hŒ Description”…”�”}”(hj�9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjŒ9ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´M™hj.9ubhÎ)�”}”(hŒþThis function initializes and then also enables output polling support for **dev**. Drivers which do not have reliable hotplug support in hardware can use this helper infrastructure to regularly poll such connectors for changes in their connection state.”h]”(hŒKThis function initializes and then also enables output polling support for ”…”�”}”(hj¤9h²hh³Nh´Nubj3 )�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hj¬9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¤9ubhŒ¬. Drivers which do not have reliable hotplug support in hardware can use this helper infrastructure to regularly poll such connectors for changes in their connection state.”…”�”}”(hj¤9h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´M˜hj.9ubhÎ)�”}”(hX†Drivers can control which connectors are polled by setting the DRM_CONNECTOR_POLL_CONNECT and DRM_CONNECTOR_POLL_DISCONNECT flags. On connectors where probing live outputs can result in visual distortion drivers should not set the DRM_CONNECTOR_POLL_DISCONNECT flag to avoid this. Connectors which have no flag or only DRM_CONNECTOR_POLL_HPD set are completely ignored by the polling logic.”h]”hX†Drivers can control which connectors are polled by setting the DRM_CONNECTOR_POLL_CONNECT and DRM_CONNECTOR_POLL_DISCONNECT flags. On connectors where probing live outputs can result in visual distortion drivers should not set the DRM_CONNECTOR_POLL_DISCONNECT flag to avoid this. Connectors which have no flag or only DRM_CONNECTOR_POLL_HPD set are completely ignored by the polling logic.”…”�”}”(hjÅ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´M�hj.9ubhÎ)�”}”(hŒ†Note that a connector can be both polled and probed from the hotplug handler, in case the hotplug interrupt is known to be unreliable.”h]”hŒ†Note that a connector can be both polled and probed from the hotplug handler, in case the hotplug interrupt is known to be unreliable.”…”�”}”(hjÔ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´M¤hj.9ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj–%h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ%drm_kms_helper_poll_fini (C function)”Œc.drm_kms_helper_poll_fini”hNt”auh1j† hj–%h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ6void drm_kms_helper_poll_fini (struct drm_device *dev)”h]”j¤ )�”}”(hŒ5void drm_kms_helper_poll_fini(struct drm_device *dev)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjÿ9h²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´M²ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÿ9h²hh³j:h´M²ubjÍ )�”}”(hŒdrm_kms_helper_poll_fini”h]”jÓ )�”}”(hŒdrm_kms_helper_poll_fini”h]”hŒdrm_kms_helper_poll_fini”…”�”}”(hj$:h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj :ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÿ9h²hh³j:h´M²ubjÞ)�”}”(hŒ(struct drm_device *dev)”h]”jä)�”}”(hŒstruct drm_device *dev”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj@:h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj<:ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjM:h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj<:ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_device”h]”hŒ drm_device”…”�”}”(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%)�”}”jj&:sbŒc.drm_kms_helper_poll_fini”†”asbuh1hhj<:ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~:h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj<:ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjŒ:h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj<:ubjÓ )�”}”(hŒdev”h]”hŒdev”…”�”}”(hj™:h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj<:ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj8:ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjÿ9h²hh³j:h´M²ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjû9h²hh³j:h´M²ubah}”(h]”jö9ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j:h´M²hjø9h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ&disable output polling and clean it up”h]”hŒ&disable output polling and clean it up”…”�”}”(hjÃ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´M²hjÀ:h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjø9h²hh³j:h´M²ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jÛ:j$ jÛ:j% ‰j& ‰j' ‰uh1j˜ h²hhj–%h³Nh´Nubj) )�”}”(hŒ7**Parameters** ``struct drm_device *dev`` drm_device”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjå:h]”hŒ Parameters”…”�”}”(hjç:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjã:ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´M¶hjß:ubjw )�”}”(hhh]”j| )�”}”(hŒ%``struct drm_device *dev`` drm_device”h]”(j‚ )�”}”(hŒ``struct drm_device *dev``”h]”jˆ )�”}”(hj;h]”hŒstruct drm_device *dev”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´M¸hjþ:ubjž )�”}”(hhh]”hÎ)�”}”(hŒ drm_device”h]”hŒ drm_device”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´M³hj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjþ:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j;h´M¸hjû:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjß:ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj–%h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ&drmm_kms_helper_poll_init (C function)”Œc.drmm_kms_helper_poll_init”hNt”auh1j† hj–%h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ7void drmm_kms_helper_poll_init (struct drm_device *dev)”h]”j¤ )�”}”(hŒ6void drmm_kms_helper_poll_init(struct drm_device *dev)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj^;h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjZ;h²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´MÆubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjm;h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjZ;h²hh³jl;h´MÆubjÍ )�”}”(hŒdrmm_kms_helper_poll_init”h]”jÓ )�”}”(hŒdrmm_kms_helper_poll_init”h]”hŒdrmm_kms_helper_poll_init”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj{;ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjZ;h²hh³jl;h´MÆubjÞ)�”}”(hŒ(struct drm_device *dev)”h]”jä)�”}”(hŒstruct drm_device *dev”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Œ drm_device”h]”hŒ drm_device”…”�”}”(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%)�”}”jj�;sbŒc.drmm_kms_helper_poll_init”†”asbuh1hhj—;ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙ;h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj—;ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjç;h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj—;ubjÓ )�”}”(hŒdev”h]”hŒdev”…”�”}”(hjô;h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj—;ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj“;ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjZ;h²hh³jl;h´MÆubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjV;h²hh³jl;h´MÆubah}”(h]”jQ;ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jl;h´MÆhjS;h²hubj )�”}”(hhh]”hÎ)�”}”(hŒ$initialize and enable output polling”h]”hŒ$initialize and enable output polling”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´MÆhj<h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjS;h²hh³jl;h´MÆubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j6<j$ j6<j% ‰j& ‰j' ‰uh1j˜ h²hhj–%h³Nh´Nubj) )�”}”(hXA**Parameters** ``struct drm_device *dev`` drm_device **Description** This function initializes and then also enables output polling support for **dev** similar to drm_kms_helper_poll_init(). Polling will automatically be cleaned up when the DRM device goes away. See drm_kms_helper_poll_init() for more information.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj@<h]”hŒ Parameters”…”�”}”(hjB<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj><ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´MÊhj:<ubjw )�”}”(hhh]”j| )�”}”(hŒ&``struct drm_device *dev`` drm_device ”h]”(j‚ )�”}”(hŒ``struct drm_device *dev``”h]”jˆ )�”}”(hj_<h]”hŒstruct drm_device *dev”…”�”}”(hja<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj]<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´MÇhjY<ubjž )�”}”(hhh]”hÎ)�”}”(hŒ drm_device”h]”hŒ drm_device”…”�”}”(hjx<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jt<h´MÇhju<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjY<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jt<h´MÇhjV<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj:<ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjš<h]”hŒ Description”…”�”}”(hjœ<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj˜<ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´MÉhj:<ubhÎ)�”}”(hŒÁThis function initializes and then also enables output polling support for **dev** similar to drm_kms_helper_poll_init(). Polling will automatically be cleaned up when the DRM device goes away.”h]”(hŒKThis function initializes and then also enables output polling support for ”…”�”}”(hj°<h²hh³Nh´Nubj3 )�”}”(hŒ**dev**”h]”hŒdev”…”�”}”(hj¸<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj°<ubhŒo similar to drm_kms_helper_poll_init(). Polling will automatically be cleaned up when the DRM device goes away.”…”�”}”(hj°<h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´MÈhj:<ubhÎ)�”}”(hŒ4See drm_kms_helper_poll_init() for more information.”h]”hŒ4See drm_kms_helper_poll_init() for more information.”…”�”}”(hjÑ<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´MÌhj:<ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj–%h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ/drm_connector_helper_hpd_irq_event (C function)”Œ$c.drm_connector_helper_hpd_irq_event”hNt”auh1j† hj–%h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒIbool drm_connector_helper_hpd_irq_event (struct drm_connector *connector)”h]”j¤ )�”}”(hŒHbool drm_connector_helper_hpd_irq_event(struct drm_connector *connector)”h]”(j¦)�”}”(hj£Ih]”hŒbool”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjü<h²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjü<h²hh³j =h´MubjÍ )�”}”(hŒ"drm_connector_helper_hpd_irq_event”h]”jÓ )�”}”(hŒ"drm_connector_helper_hpd_irq_event”h]”hŒ"drm_connector_helper_hpd_irq_event”…”�”}”(hj =h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj=ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjü<h²hh³j =h´MubjÞ)�”}”(hŒ!(struct drm_connector *connector)”h]”jä)�”}”(hŒstruct drm_connector *connector”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj<=h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj8=ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjI=h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj8=ubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_connector”h]”hŒ drm_connector”…”�”}”(hjZ=h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjW=ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j\=Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj"=sbŒ$c.drm_connector_helper_hpd_irq_event”†”asbuh1hhj8=ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjz=h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj8=ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjˆ=h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj8=ubjÓ )�”}”(hŒ connector”h]”hŒ connector”…”�”}”(hj•=h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj8=ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj4=ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjü<h²hh³j =h´Mubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjø<h²hh³j =h´Mubah}”(h]”jó<ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j =h´Mhjõ<h²hubj )�”}”(hhh]”hÎ)�”}”(hŒhotplug processing”h]”hŒhotplug processing”…”�”}”(hj¿=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´Mhj¼=h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjõ<h²hh³j =h´Mubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j×=j$ j×=j% ‰j& ‰j' ‰uh1j˜ h²hhj–%h³Nh´Nubj) )�”}”(hX**Parameters** ``struct drm_connector *connector`` drm_connector **Description** Drivers can use this helper function to run a detect cycle on a connector which has the DRM_CONNECTOR_POLL_HPD flag set in its :c:type:`polled` member. This helper function is useful for drivers which can track hotplug interrupts for a single connector. Drivers that want to send a hotplug event for all connectors or can't track hotplug interrupts per connector need to use drm_helper_hpd_irq_event(). This function must be called from process context with no mode setting locks held. Note that a connector can be both polled and probed from the hotplug handler, in case the hotplug interrupt is known to be unreliable. **Return** A boolean indicating whether the connector status changed or not”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjá=h]”hŒ Parameters”…”�”}”(hjã=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjß=ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´MhjÛ=ubjw )�”}”(hhh]”j| )�”}”(hŒ2``struct drm_connector *connector`` drm_connector ”h]”(j‚ )�”}”(hŒ#``struct drm_connector *connector``”h]”jˆ )�”}”(hj>h]”hŒstruct drm_connector *connector”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjþ=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´Mhjú=ubjž )�”}”(hhh]”hÎ)�”}”(hŒ drm_connector”h]”hŒ drm_connector”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j>h´Mhj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjú=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j>h´Mhj÷=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÛ=ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj;>h]”hŒ Description”…”�”}”(hj=>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj9>ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´MhjÛ=ubhÎ)�”}”(hŒ—Drivers can use this helper function to run a detect cycle on a connector which has the DRM_CONNECTOR_POLL_HPD flag set in its :c:type:`polled` member.”h]”(hŒDrivers can use this helper function to run a detect cycle on a connector which has the DRM_CONNECTOR_POLL_HPD flag set in its ”…”�”}”(hjQ>h²hh³Nh´Nubh)�”}”(hŒ:c:type:`polled`”h]”jˆ )�”}”(hj[>h]”hŒpolled”…”�”}”(hj]>h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjY>ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œpolled”uh1hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´MhjQ>ubhŒ member.”…”�”}”(hjQ>h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jx>h´MhjÛ=ubhÎ)�”}”(hŒúThis helper function is useful for drivers which can track hotplug interrupts for a single connector. Drivers that want to send a hotplug event for all connectors or can't track hotplug interrupts per connector need to use drm_helper_hpd_irq_event().”h]”hŒüThis helper function is useful for drivers which can track hotplug interrupts for a single connector. Drivers that want to send a hotplug event for all connectors or can’t track hotplug interrupts per connector need to use drm_helper_hpd_irq_event().”…”�”}”(hjƒ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´MhjÛ=ubhÎ)�”}”(hŒRThis function must be called from process context with no mode setting locks held.”h]”hŒRThis function must be called from process context with no mode setting locks held.”…”�”}”(hj’>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´M hjÛ=ubhÎ)�”}”(hŒ†Note that a connector can be both polled and probed from the hotplug handler, in case the hotplug interrupt is known to be unreliable.”h]”hŒ†Note that a connector can be both polled and probed from the hotplug handler, in case the hotplug interrupt is known to be unreliable.”…”�”}”(hj¡>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´MhjÛ=ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj²>h]”hŒReturn”…”�”}”(hj´>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj°>ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´MhjÛ=ubhÎ)�”}”(hŒ@A boolean indicating whether the connector status changed or not”h]”hŒ@A boolean indicating whether the connector status changed or not”…”�”}”(hjÈ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´MhjÛ=ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj–%h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ%drm_helper_hpd_irq_event (C function)”Œc.drm_helper_hpd_irq_event”hNt”auh1j† hj–%h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ6bool drm_helper_hpd_irq_event (struct drm_device *dev)”h]”j¤ )�”}”(hŒ5bool drm_helper_hpd_irq_event(struct drm_device *dev)”h]”(j¦)�”}”(hj£Ih]”hŒbool”…”�”}”(hj÷>h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”u•h1j¥hjó>h²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.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Œdrm_helper_hpd_irq_event”h]”jÓ )�”}”(hŒdrm_helper_hpd_irq_event”h]”hŒdrm_helper_hpd_irq_event”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj?ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjó>h²hh³j?h´M,ubjÞ)�”}”(hŒ(struct drm_device *dev)”h]”jä)�”}”(hŒstruct drm_device *dev”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj3?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Œ drm_device”h]”hŒ drm_device”…”�”}”(hjQ?h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjN?ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jS?Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj?sbŒc.drm_helper_hpd_irq_event”†”asbuh1hhj/?ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjq?h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj/?ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj/?ubjÓ )�”}”(hŒdev”h]”hŒdev”…”�”}”(hjŒ?h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj/?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj+?ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjó>h²hh³j?h´M,ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œhotplug processing”h]”hŒhotplug processing”…”�”}”(hj¶?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.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²hhj–%h³Nh´Nubj) )�”}”(hXü**Parameters** ``struct drm_device *dev`` drm_device **Description** Drivers can use this helper function to run a detect cycle on all connectors which have the DRM_CONNECTOR_POLL_HPD flag set in their :c:type:`polled` member. All other connectors are ignored, which is useful to avoid reprobing fixed panels. This helper function is useful for drivers which can't or don't track hotplug interrupts for each connector. Drivers which support hotplug interrupts for each connector individually and which have a more fine-grained detect logic can use drm_connector_helper_hpd_irq_event(). Alternatively, they should bypass this code and directly call drm_kms_helper_hotplug_event() in case the connector state changed. This function must be called from process context with no mode setting locks held. Note that a connector can be both polled and probed from the hotplug handler, in case the hotplug interrupt is known to be unreliable. **Return** A boolean indicating whether the connector status changed or not”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjØ?h]”hŒ Parameters”…”�”}”(hjÚ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÖ?ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´M0hjÒ?ubjw )�”}”(hhh]”j| )�”}”(hŒ&``struct drm_device *dev`` drm_device ”h]”(j‚ )�”}”(hŒ``struct drm_device *dev``”h]”jˆ )�”}”(hj÷?h]”hŒstruct drm_device *dev”…”�”}”(hjù?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjõ?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´M-hjñ?ubjž )�”}”(hhh]”hÎ)�”}”(hŒ drm_device”h]”hŒ drm_device”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j @h´M-hj @ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjñ?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j @h´M-hjî?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÒ?ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj2@h]”hŒ Description”…”�”}”(hj4@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj0@ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´M/hjÒ?ubhÎ)�”}”(hŒðDrivers can use this helper function to run a detect cycle on all connectors which have the DRM_CONNECTOR_POLL_HPD flag set in their :c:type:`polled` member. All other connectors are ignored, which is useful to avoid reprobing fixed panels.”h]”(hŒ…Drivers can use this helper function to run a detect cycle on all connectors which have the DRM_CONNECTOR_POLL_HPD flag set in their ”…”�”}”(hjH@h²hh³Nh´Nubh)�”}”(hŒ:c:type:`polled`”h]”jˆ )�”}”(hjR@h]”hŒpolled”…”�”}”(hjT@h²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjP@ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œpolled”uh1hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´M.hjH@ubhŒ[ member. All other connectors are ignored, which is useful to avoid reprobing fixed panels.”…”�”}”(hjH@h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jo@h´M.hjÒ?ubhÎ)�”}”(hŒlThis helper function is useful for drivers which can't or don't track hotplug interrupts for each connector.”h]”hŒpThis helper function is useful for drivers which can’t or don’t track hotplug interrupts for each connector.”…”�”}”(hjz@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´M3hjÒ?ubhÎ)�”}”(hX(Drivers which support hotplug interrupts for each connector individually and which have a more fine-grained detect logic can use drm_connector_helper_hpd_irq_event(). Alternatively, they should bypass this code and directly call drm_kms_helper_hotplug_event() in case the connector state changed.”h]”hX(Drivers which support hotplug interrupts for each connector individually and which have a more fine-grained detect logic can use drm_connector_helper_hpd_irq_event(). Alternatively, they should bypass this code and directly call drm_kms_helper_hotplug_event() in case the connector state changed.”…”�”}”(hj‰@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´M6hjÒ?ubhÎ)�”}”(hŒRThis function must be called from process context with no mode setting locks held.”h]”hŒRThis function must be called from process context with no mode setting locks held.”…”�”}”(hj˜@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´M<hjÒ?ubhÎ)�”}”(hŒ†Note that a connector can be both polled and probed from the hotplug handler, in case the hotplug interrupt is known to be unreliable.”h]”hŒ†Note that a connector can be both polled and probed from the hotplug handler, in case the hotplug interrupt is known to be unreliable.”…”�”}”(hj§@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´M?hjÒ?ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj¸@h]”hŒReturn”…”�”}”(hjº@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¶@ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´MBhjÒ?ubhÎ)�”}”(hŒ@A boolean indicating whether the connector status changed or not”h]”hŒ@A boolean indicating whether the connector status changed or not”…”�”}”(hjÎ@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´MChjÒ?ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj–%h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ-drm_crtc_helper_mode_valid_fixed (C function)”Œ"c.drm_crtc_helper_mode_valid_fixed”hNt”auh1j† hj–%h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ�enum drm_mode_status drm_crtc_helper_mode_valid_fixed (struct drm_crtc *crtc, const struct drm_display_mode *mode, const struct drm_display_mode *fixed_mode)”h]”j¤ )�”}”(hŒœenum drm_mode_status drm_crtc_helper_mode_valid_fixed(struct drm_crtc *crtc, const struct drm_display_mode *mode, const struct drm_display_mode *fixed_mode)”h]”(jª )�”}”(hjÂ7h]”hŒenum”…”�”}”(hjý@h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjù@h²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´Mfubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Ah²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjù@h²hh³j Ah´Mfubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_mode_status”h]”hŒdrm_mode_status”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjAubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jAŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jŒ drm_crtc_helper_mode_valid_fixed”sbŒ"c.drm_crtc_helper_mode_valid_fixed”†”asbuh1hhjù@h²hh³j Ah´Mfubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=Ah²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjù@h²hh³j Ah´MfubjÍ )�”}”(hŒ drm_crtc_helper_mode_valid_fixed”h]”jÓ )�”}”(hj:Ah]”hŒ drm_crtc_helper_mode_valid_fixed”…”�”}”(hjOAh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjKAubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjù@h²hh³j Ah´MfubjÞ)�”}”(hŒg(struct drm_crtc *crtc, const struct drm_display_mode *mode, const struct drm_display_mode *fixed_mode)”h]”(jä)�”}”(hŒstruct drm_crtc *crtc”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjjAh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjfAubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwAh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjfAubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_crtc”h]”hŒdrm_crtc”…”�”}”(hjˆAh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj…Aubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jŠAŒmodname”NŒ classname”Njé jì )�”}”jï ]”j8AŒ"c.drm_crtc_helper_mode_valid_fixed”†”asbuh1hhjfAubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦Ah²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjfAubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj´Ah²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjfAubjÓ )�”}”(hŒcrtc”h]”hŒcrtc”…”�”}”(hjÁAh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjfAubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjbAubjä)�”}”(hŒ#const struct drm_display_mode *mode”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hjÚAh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjÖAubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjçAh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÖAubjª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjõAh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjÖAubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÖAubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_display_mode”h]”hŒdrm_display_mode”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjBubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jBŒmodname”NŒ classname”Njé jì )�”}”jï ]”j8AŒ"c.drm_crtc_helper_mode_valid_fixed”†”asbuh1hhjÖAubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1Bh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÖAubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj?Bh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÖAubjÓ )�”}”(hŒmode”h]”hŒmode”…”�”}”(hjLBh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÖAubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjbAubjä)�”}”(hŒ)const struct drm_display_mode *fixed_mode”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hjeBh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjaBubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrBh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjaBubjª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj€Bh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjaBubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Bh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjaBubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_display_mode”h]”hŒdrm_display_mode”…”�”}”(hjžBh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj›Bubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j BŒmodname”NŒ classname”Njé jì )�”}”jï ]”j8AŒ"c.drm_crtc_helper_mode_valid_fixed”†”asbuh1hhjaBubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼Bh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjaBubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÊBh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjaBubjÓ )�”}”(hŒ fixed_mode”h]”hŒ fixed_mode”…”�”}”(hj×Bh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjaBubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjbAubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjù@h²hh³j Ah´Mfubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjõ@h²hh³j Ah´Mfubah}”(h]”jð@ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j Ah´Mfhjò@h²hubj )�”}”(hhh]”hÎ)�”}”(hŒValidates a display mode”h]”hŒValidates a display mode”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´MfhjþBh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjò@h²hh³j Ah´Mfubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jCj$ jCj% ‰j& ‰j' ‰uh1j˜ h²hhj–%h³Nh´Nubj) )�”}”(hX **Parameters** ``struct drm_crtc *crtc`` the crtc ``const struct drm_display_mode *mode`` the mode to validate ``const struct drm_display_mode *fixed_mode`` the display hardware's mode **Return** MODE_OK on success, or another mode-status code otherwise.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj#Ch]”hŒ Parameters”…”�”}”(hj%Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj!Cubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´MjhjCubjw )�”}”(hhh]”(j| )�”}”(hŒ#``struct drm_crtc *crtc`` the crtc ”h]”(j‚ )�”}”(hŒ``struct drm_crtc *crtc``”h]”jˆ )�”}”(hjBCh]”hŒstruct drm_crtc *crtc”…”�”}”(hjDCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj@Cubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´Mghjddc is set), and update the connector using the EDID. This can be used as the "default" connector helper .get_modes() hook if the driver does not need any special processing. This is sets the example what custom .get_modes() hooks should do regarding EDID read and connector update. **Return** Number of modes.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj‚Gh]”hŒ Parameters”…”�”}”(hj„Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj€Gubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´Mªhj|Gubjw )�”}”(hhh]”j| )�”}”(hŒ2``struct drm_connector *connector`` The connector ”h]”(j‚ )�”}”(hŒ#``struct drm_connector *connector``”h]”jˆ )�”}”(hj¡Gh]”hŒstruct drm_connector *connector”…”�”}”(hj£Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjŸGubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´M§hj›Gubjž )�”}”(hhh]”hÎ)�”}”(hŒ The connector”h]”hŒ The connector”…”�”}”(hjºGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j¶Gh´M§hj·Gubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj›Gubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j¶Gh´M§hj˜Gubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj|GubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjÜGh]”hŒ Description”…”�”}”(hjÞGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÚGubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´M©hj|GubhÎ)�”}”(hŒyRead the EDID using drm_edid_read() (which requires that connector->ddc is set), and update the connector using the EDID.”h]”hŒyRead the EDID using drm_edid_read() (which requires that connector->ddc is set), and update the connector using the EDID.”…”�”}”(hjòGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´M¨hj|GubhÎ)�”}”(hŒäThis can be used as the "default" connector helper .get_modes() hook if the driver does not need any special processing. This is sets the example what custom .get_modes() hooks should do regarding EDID read and connector update.”h]”hŒèThis can be used as the “defaultâ€� connector helper .get_modes() hook if the driver does not need any special processing. This is sets the example what custom .get_modes() hooks should do regarding EDID read and connector update.”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´M«hj|GubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjHh]”hŒReturn”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjHubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´M¯hj|GubhÎ)�”}”(hŒNumber of modes.”h]”hŒNumber of modes.”…”�”}”(hj(Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´M°hj|Gubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj–%h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ.drm_connector_helper_tv_get_modes (C function)”Œ#c.drm_connector_helper_tv_get_modes”hNt”auh1j† hj–%h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒGint drm_connector_helper_tv_get_modes (struct drm_connector *connector)”h]”j¤ )�”}”(hŒFint drm_connector_helper_tv_get_modes(struct drm_connector *connector)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjWHh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjSHh²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´MÊubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjfHh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjSHh²hh³jeHh´MÊubjÍ )�”}”(hŒ!drm_connector_helper_tv_get_modes”h]”jÓ )�”}”(hŒ!drm_connector_helper_tv_get_modes”h]”hŒ!drm_connector_helper_tv_get_modes”…”�”}”(hjxHh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjtHubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjSHh²hh³jeHh´MÊubjÞ)�”}”(hŒ!(struct drm_connector *connector)”h]”jä)�”}”(hŒstruct drm_connector *connector”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj”Hh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj�Hubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡Hh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj�Hubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_connector”h]”hŒ drm_connector”…”�”}”(hj²Hh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¯Hubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j´HŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjzHsbŒ#c.drm_connector_helper_tv_get_modes”†”asbuh1hhj�Hubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒHh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj�Hubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjàHh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj�HubjÓ )�”}”(hŒ connector”h]”hŒ connector”…”�”}”(hjíHh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj�Hubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjŒHubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjSHh²hh³jeHh´MÊubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjOHh²hh³jeHh´MÊubah}”(h]”jJHah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jeHh´MÊhjLHh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ,Fills the modes availables to a TV connector”h]”hŒ,Fills the modes availables to a TV connector”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´MÊhjIh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjLHh²hh³jeHh´MÊubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j/Ij$ j/Ij% ‰j& ‰j' ‰uh1j˜ h²hhj–%h³Nh´Nubj) )�”}”(hX’**Parameters** ``struct drm_connector *connector`` The connector **Description** Fills the available modes for a TV connector based on the supported TV modes, and the default mode expressed by the kernel command line. This can be used as the default TV connector helper .get_modes() hook if the driver does not need any special processing. **Return** The number of modes added to the connector.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj9Ih]”hŒ Parameters”…”�”}”(hj;Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj7Iubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´MÎhj3Iubjw )�”}”(hhh]”j| )�”}”(hŒ2``struct drm_connector *connector`` The connector ”h]”(j‚ )�”}”(hŒ#``struct drm_connector *connector``”h]”jˆ )�”}”(hjXIh]”hŒstruct drm_connector *connector”…”�”}”(hjZIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjVIubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´MËhjRIubjž )�”}”(hhh]”hÎ)�”}”(hŒ The connector”h]”hŒ The connector”…”�”}”(hjqIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jmIh´MËhjnIubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjRIubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jmIh´MËhjOIubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj3IubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj“Ih]”hŒ Description”…”�”}”(hj•Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj‘Iubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´MÍhj3IubhÎ)�”}”(hŒˆFills the available modes for a TV connector based on the supported TV modes, and the default mode expressed by the kernel command line.”h]”hŒˆFills the available modes for a TV connector based on the supported TV modes, and the default mode expressed by the kernel command line.”…”�”}”(hj©Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´MÌhj3IubhÎ)�”}”(hŒyThis can be used as the default TV connector helper .get_modes() hook if the driver does not need any special processing.”h]”hŒyThis can be used as the default TV connector helper .get_modes() hook if the driver does not need any special processing.”…”�”}”(hj¸Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´MÏhj3IubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjÉIh]”hŒReturn”…”�”}”(hjËIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÇIubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´MÒhj3IubhÎ)�”}”(hŒ+The number of modes added to the connector.”h]”hŒ+The number of modes added to the connector.”…”�”}”(hjßIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´MÓhj3Iubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj–%h²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ1drm_connector_helper_detect_from_ddc (C function)”Œ&c.drm_connector_helper_detect_from_ddc”hNt”auh1j† hj–%h²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ{int drm_connector_helper_detect_from_ddc (struct drm_connector *connector, struct drm_modeset_acquire_ctx *ctx, bool force)”h]”j¤ )�”}”(hŒzint drm_connector_helper_detect_from_ddc(struct drm_connector *connector, struct drm_modeset_acquire_ctx *ctx, bool force)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj Jh²hh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´Mubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj Jh²hh³jJh´MubjÍ )�”}”(hŒ$drm_connector_helper_detect_from_ddc”h]”jÓ )�”}”(hŒ$drm_connector_helper_detect_from_ddc”h]”hŒ$drm_connector_helper_detect_from_ddc”…”�”}”(hj/Jh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj+Jubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj Jh²hh³jJh´MubjÞ)�”}”(hŒR(struct drm_connector *connector, struct drm_modeset_acquire_ctx *ctx, bool force)”h]”(jä)�”}”(hŒstruct drm_connector *connector”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjKJh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjGJubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXJh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjGJubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_connector”h]”hŒ drm_connector”…”�”}”(hjiJh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjfJubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jkJŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj1JsbŒ&c.drm_connector_helper_detect_from_ddc”†”asbuh1hhjGJubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‰Jh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjGJubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj—Jh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjGJubjÓ )�”}”(hŒ connector”h]”hŒ connector”…”�”}”(hj¤Jh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjGJubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjCJubjä)�”}”(hŒ#struct drm_modeset_acquire_ctx *ctx”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj½Jh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj¹Jubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊJh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¹Jubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_modeset_acquire_ctx”h]”hŒdrm_modeset_acquire_ctx”…”�”}”(hjÛJh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjØJubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jÝJŒmodname”NŒ classname”Njé jì )�”}”jï ]”j…JŒ&c.drm_connector_helper_detect_from_ddc”†”asbuh1hhj¹Jubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùJh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¹Jubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¹JubjÓ )�”}”(hŒctx”h]”hŒctx”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¹Jubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjCJubjä)�”}”(hŒ bool force”h]”(j¦)�”}”(hj£Ih]”hŒbool”…”�”}”(hj-Kh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj)Kubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:Kh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj)KubjÓ )�”}”(hŒforce”h]”hŒforce”…”�”}”(hjHKh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj)Kubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjCJubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj Jh²hh³jJh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjJh²hh³jJh´Mubah}”(h]”jJah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jJh´MhjJh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ&Read EDID and detect connector status.”h]”hŒ&Read EDID and detect connector status.”…”�”}”(hjrKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´MhjoKh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjJh²hh³jJh´Mubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jŠKj$ jŠKj% ‰j& ‰j' ‰uh1j˜ h²hhj–%h³Nh´Nubj) )�”}”(hXí**Parameters** ``struct drm_connector *connector`` The connector ``struct drm_modeset_acquire_ctx *ctx`` Acquire context ``bool force`` Perform screen-destructive operations, if necessary **Description** Detects the connector status by reading the EDID using drm_probe_ddc(), which requires connector->ddc to be set. Returns connector_status_connected on success or connector_status_disconnected on failure. **Return** The connector status as defined by enum drm_connector_status.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj”Kh]”hŒ Parameters”…”�”}”(hj–Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj’Kubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´M!hjŽKubjw )�”}”(hhh]”(j| )�”}”(hŒ2``struct drm_connector *connector`` The connector ”h]”(j‚ )�”}”(hŒ#``struct drm_connector *connector``”h]”jˆ )�”}”(hj³Kh]”hŒstruct drm_connector *connector”…”�”}”(hjµKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj±Kubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´Mhj­Kubjž )�”}”(hhh]”hÎ)�”}”(hŒ The connector”h]”hŒ The connector”…”�”}”(hjÌKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jÈKh´MhjÉKubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj­Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÈKh´MhjªKubj| )�”}”(hŒ8``struct drm_modeset_acquire_ctx *ctx`` Acquire context ”h]”(j‚ )�”}”(hŒ'``struct drm_modeset_acquire_ctx *ctx``”h]”jˆ )�”}”(hjìKh]”hŒ#struct drm_modeset_acquire_ctx *ctx”…”�”}”(hjîKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjêKubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´MhjæKubjž )�”}”(hhh]”hÎ)�”}”(hŒAcquire context”h]”hŒAcquire context”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jLh´MhjLubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjæKubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jLh´MhjªKubj| )�”}”(hŒC``bool force`` Perform screen-destructive operations, if necessary ”h]”(j‚ )�”}”(hŒ``bool force``”h]”jˆ )�”}”(hj%Lh]”hŒ bool force”…”�”}”(hj'Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj#Lubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´M hjLubjž )�”}”(hhh]”hÎ)�”}”(hŒ3Perform screen-destructive operations, if necessary”h]”hŒ3Perform screen-destructive operations, if necessary”…”�”}”(hj>Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j:Lh´M hj;Lubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjLubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j:Lh´M hjªKubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjŽKubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj`Lh]”hŒ Description”…”�”}”(hjbLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj^Lubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´M"hjŽKubhÎ)�”}”(hŒËDetects the connector status by reading the EDID using drm_probe_ddc(), which requires connector->ddc to be set. Returns connector_status_connected on success or connector_status_disconnected on failure.”h]”hŒËDetects the connector status by reading the EDID using drm_probe_ddc(), which requires connector->ddc to be set. Returns connector_status_connected on success or connector_status_disconnected on failure.”…”�”}”(hjvLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´M!hjŽKubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj‡Lh]”hŒReturn”…”�”}”(hj‰Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj…Lubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´M%hjŽKubhÎ)�”}”(hŒ=The connector status as defined by enum drm_connector_status.”h]”hŒ=The connector status as defined by enum drm_connector_status.”…”�”}”(hj�Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œg/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:377: ./drivers/gpu/drm/drm_probe_helper.c”h´M&hjŽKubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hj–%h²hh³Nh´Nubeh}”(h]”jÌah ]”h"]”Œ)output probing helper functions reference”ah$]”h&]”uh1hµhh·h²hh³hÌh´Mtubh¶)�”}”(hhh]”(h»)�”}”(hŒEDID Helper Functions Reference”h]”hŒEDID Helper Functions Reference”…”�”}”(hj½Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”hÊjèuh1hºhjºLh²hh³hÌh´M}ubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ#drm_edid_decode_mfg_id (C function)”Œc.drm_edid_decode_mfg_id”hNt”auh1j† hjºLh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ>const char * drm_edid_decode_mfg_id (u16 mfg_id, char vend[4])”h]”j¤ )�”}”(hŒ 0x09e52d08 **Return** a 32-bit ID per panel.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj>Oh]”hŒ Parameters”…”�”}”(hj@Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj 0x09e52d08 ”h]”(j‚ )�”}”(hŒ For instance:”h]”hŒ For instance:”…”�”}”(hjoPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:383: ./include/drm/drm_edid.h”h´M•hjkPubjž )�”}”(hhh]”hÎ)�”}”(hŒ=drm_edid_encode_panel_id('B', 'O', 'E', 0x2d08) => 0x09e52d08”h]”hŒIdrm_edid_encode_panel_id(‘B’, ‘O’, ‘E’, 0x2d08) => 0x09e52d08”…”�”}”(hj�Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j}Ph´M•hj~Pubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjkPubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j}Ph´M•hjhPubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj8OubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj£Ph]”hŒReturn”…”�”}”(hj¥Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj¡Pubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:383: ./include/drm/drm_edid.h”h´M—hj8OubhÎ)�”}”(hŒa 32-bit ID per panel.”h]”hŒa 32-bit ID per panel.”…”�”}”(hj¹Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:383: ./include/drm/drm_edid.h”h´M˜hj8Oubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjºLh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ%drm_edid_decode_panel_id (C function)”Œc.drm_edid_decode_panel_id”hNt”auh1j† hjºLh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒKvoid drm_edid_decode_panel_id (u32 panel_id, char vend[4], u16 *product_id)”h]”j¤ )�”}”(hŒJvoid drm_edid_decode_panel_id(u32 panel_id, char vend[4], u16 *product_id)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjèPh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjäPh²hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:383: ./include/drm/drm_edid.h”h´M¡ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷Ph²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjäPh²hh³jöPh´M¡ubjÍ )�”}”(hŒdrm_edid_decode_panel_id”h]”jÓ )�”}”(hŒdrm_edid_decode_panel_id”h]”hŒdrm_edid_decode_panel_id”…”�”}”(hj Qh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjQubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjäPh²hh³jöPh´M¡ubjÞ)�”}”(hŒ-(u32 panel_id, char vend[4], u16 *product_id)”h]”(jä)�”}”(hŒ u32 panel_id”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu32”h]”hŒu32”…”�”}”(hj(Qh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj%Qubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j*QŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj QsbŒc.drm_edid_decode_panel_id”†”asbuh1hhj!Qubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHQh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj!QubjÓ )�”}”(hŒpanel_id”h]”hŒpanel_id”…”�”}”(hjVQh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj!Qubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjQubjä)�”}”(hŒ char vend[4]”h]”(j¦)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjoQh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjkQubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}Qh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjkQubjÓ )�”}”(hŒvend”h]”hŒvend”…”�”}”(hj‹Qh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjkQubj9)�”}”(hjMh]”hŒ[”…”�”}”(hj™Qh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjkQubjš)�”}”(hjšh]”hŒ4”…”�”}”(hj¦Qh²hh³Nh´Nubah}”(h]”h ]”jšah"]”h$]”h&]”uh1jšhjkQubj9)�”}”(hj=Mh]”hŒ]”…”�”}”(hj³Qh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjkQubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjQubjä)�”}”(hŒu16 *product_id”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒu16”h]”hŒu16”…”�”}”(hjÎQh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjËQubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jÐQŒmodname”NŒ classname”Njé jì )�”}”jï ]”jDQŒc.drm_edid_decode_panel_id”†”asbuh1hhjÇQubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjìQh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÇQubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjúQh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÇQubjÓ )�”}”(hŒ product_id”h]”hŒ product_id”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÇQubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjQubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjäPh²hh³jöPh´M¡ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjàPh²hh³jöPh´M¡ubah}”(h]”jÛPah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jöPh´M¡hjÝPh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ1Decode a panel ID from drm_edid_encode_panel_id()”h]”hŒ1Decode a panel ID from drm_edid_encode_panel_id()”…”�”}”(hj1Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:383: ./include/drm/drm_edid.h”h´M¡hj.Rh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÝPh²hh³jöPh´M¡ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jIRj$ jIRj% ‰j& ‰j' ‰uh1j˜ h²hhjºLh³Nh´Nubj) )�”}”(hX®**Parameters** ``u32 panel_id`` The panel ID to decode. ``char vend[4]`` A 4-byte buffer to store the 3-letter vendor string plus a '\0' termination ``u16 *product_id`` The product ID will be returned here. **Description** For instance, after: drm_edid_decode_panel_id(0x09e52d08, vend, :c:type:`product_id`) These will be true: vend[0] = 'B' vend[1] = 'O' vend[2] = 'E' vend[3] = '\0' product_id = 0x2d08”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjSRh]”hŒ Parameters”…”�”}”(hjURh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjQRubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:383: ./include/drm/drm_edid.h”h´M¥hjMRubjw )�”}”(hhh]”(j| )�”}”(hŒ)``u32 panel_id`` The panel ID to decode. ”h]”(j‚ )�”}”(hŒ``u32 panel_id``”h]”jˆ )�”}”(hjrRh]”hŒ u32 panel_id”…”�”}”(hjtRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjpRubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:383: ./include/drm/drm_edid.h”h´M¢hjlRubjž )�”}”(hhh]”hÎ)�”}”(hŒThe panel ID to decode.”h]”hŒThe panel ID to decode.”…”�”}”(hj‹Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j‡Rh´M¢hjˆRubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjlRubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j‡Rh´M¢hjiRubj| )�”}”(hŒ]``char vend[4]`` A 4-byte buffer to store the 3-letter vendor string plus a '\0' termination ”h]”(j‚ )�”}”(hŒ``char vend[4]``”h]”jˆ )�”}”(hj«Rh]”hŒ char vend[4]”…”�”}”(hj­Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj©Rubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:383: ./include/drm/drm_edid.h”h´M¤hj¥Rubjž )�”}”(hhh]”hÎ)�”}”(hŒKA 4-byte buffer to store the 3-letter vendor string plus a '\0' termination”h]”hŒOA 4-byte buffer to store the 3-letter vendor string plus a ‘0’ termination”…”�”}”(hjÄRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:383: ./include/drm/drm_edid.h”h´M£hjÁRubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj¥Rubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jÀRh´M¤hjiRubj| )�”}”(hŒ:``u16 *product_id`` The product ID will be returned here. ”h]”(j‚ )�”}”(hŒ``u16 *product_id``”h]”jˆ )�”}”(hjåRh]”hŒu16 *product_id”…”�”}”(hjçRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjãRubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:383: ./include/drm/drm_edid.h”h´M¥hjßRubjž )�”}”(hhh• ]”hÎ)�”}”(hŒ%The product ID will be returned here.”h]”hŒ%The product ID will be returned here.”…”�”}”(hjþRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³júRh´M¥hjûRubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjßRubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³júRh´M¥hjiRubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjMRubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj Sh]”hŒ Description”…”�”}”(hj"Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjSubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:383: ./include/drm/drm_edid.h”h´M§hjMRubjw )�”}”(hhh]”(j| )�”}”(hŒUFor instance, after: drm_edid_decode_panel_id(0x09e52d08, vend, :c:type:`product_id`)”h]”(j‚ )�”}”(hŒFor instance, after:”h]”hŒFor instance, after:”…”�”}”(hj=Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:383: ./include/drm/drm_edid.h”h´M¦hj9Subjž )�”}”(hhh]”hÎ)�”}”(hŒ@drm_edid_decode_panel_id(0x09e52d08, vend, :c:type:`product_id`)”h]”(hŒ+drm_edid_decode_panel_id(0x09e52d08, vend, ”…”�”}”(hjOSh²hh³Nh´Nubh)�”}”(hŒ:c:type:`product_id`”h]”jˆ )�”}”(hjYSh]”hŒ product_id”…”�”}”(hj[Sh²hh³Nh´Nubah}”(h]”h ]”(j× j Œc-type”eh"]”h$]”h&]”uh1j‡ hjWSubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jã Œ refdomain”j Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jé jí jñ Œ product_id”uh1hh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:383: ./include/drm/drm_edid.h”h´M§hjOSubhŒ)”…”�”}”(hjOSh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jvSh´M§hjLSubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj9Subeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jKSh´M¦hj6Subj| )�”}”(hŒ`These will be true: vend[0] = 'B' vend[1] = 'O' vend[2] = 'E' vend[3] = '\0' product_id = 0x2d08”h]”(j‚ )�”}”(hŒThese will be true:”h]”hŒThese will be true:”…”�”}”(hj‘Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:383: ./include/drm/drm_edid.h”h´M¬hj�Subjž )�”}”(hhh]”hÎ)�”}”(hŒLvend[0] = 'B' vend[1] = 'O' vend[2] = 'E' vend[3] = '\0' product_id = 0x2d08”h]”hŒ\vend[0] = ‘B’ vend[1] = ‘O’ vend[2] = ‘E’ vend[3] = ‘0’ product_id = 0x2d08”…”�”}”(hj£Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ[/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:383: ./include/drm/drm_edid.h”h´M©hj Subah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj�Subeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jŸSh´M¬hj6Subeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjMRubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjºLh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ%drm_edid_header_is_valid (C function)”Œc.drm_edid_header_is_valid”hNt”auh1j† hjºLh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ0int drm_edid_header_is_valid (const void *_edid)”h]”j¤ )�”}”(hŒ/int drm_edid_header_is_valid(const void *_edid)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjäSh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjàSh²hh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´M ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjóSh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjàSh²hh³jòSh´M ubjÍ )�”}”(hŒdrm_edid_header_is_valid”h]”jÓ )�”}”(hŒdrm_edid_header_is_valid”h]”hŒdrm_edid_header_is_valid”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjTubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjàSh²hh³jòSh´M ubjÞ)�”}”(hŒ(const void *_edid)”h]”jä)�”}”(hŒconst void *_edid”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hj!Th²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjTubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.Th²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjTubj¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj8 if the header is perfect, down to 0 if it’s totally wrong.”…”�”}”(hjHUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´Mhj«Tubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjºLh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_edid_is_valid (C function)”Œc.drm_edid_is_valid”hNt”auh1j† hjºLh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ*bool drm_edid_is_valid (struct edid *edid)”h]”j¤ )�”}”(hŒ)bool drm_edid_is_valid(struct edid *edid)”h]”(j¦)�”}”(hj£Ih]”hŒbool”…”�”}”(hjwUh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjsUh²hh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´M ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…Uh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjsUh²hh³j„Uh´M ubjÍ )�”}”(hŒdrm_edid_is_valid”h]”jÓ )�”}”(hŒdrm_edid_is_valid”h]”hŒdrm_edid_is_valid”…”�”}”(hj—Uh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj“Uubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjsUh²hh³j„Uh´M ubjÞ)�”}”(hŒ(struct edid *edid)”h]”jä)�”}”(hŒstruct edid *edid”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj³Uh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj¯Uubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀUh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¯Uubh)�”}”(hhh]”jÓ )�”}”(hŒedid”h]”hŒedid”…”�”}”(hjÑUh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÎUubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jÓUŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj™UsbŒc.drm_edid_is_valid”†”asbuh1hhj¯Uubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñUh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¯Uubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÿUh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¯UubjÓ )�”}”(hŒedid”h]”hŒedid”…”�”}”(hj Vh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¯Uubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj«Uubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjsUh²hh³j„Uh´M ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjoUh²hh³j„Uh´M ubah}”(h]”jjUah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j„Uh´M hjlUh²hubj )�”}”(hhh]”hÎ)�”}”(hŒsanity check EDID data”h]”hŒsanity check EDID data”…”�”}”(hj6Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´M hj3Vh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjlUh²hh³j„Uh´M ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jNVj$ jNVj% ‰j& ‰j' ‰uh1j˜ h²hhjºLh³Nh´Nubj) )�”}”(hŒ»**Parameters** ``struct edid *edid`` EDID data **Description** Sanity-check an entire EDID record (including extensions) **Return** True if the EDID data is valid, false otherwise.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjXVh]”hŒ Parameters”…”�”}”(hjZVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjVVubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´MhjRVubjw )�”}”(hhh]”j| )�”}”(hŒ ``struct edid *edid`` EDID data ”h]”(j‚ )�”}”(hŒ``struct edid *edid``”h]”jˆ )�”}”(hjwVh]”hŒstruct edid *edid”…”�”}”(hjyVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjuVubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´M hjqVubjž )�”}”(hhh]”hÎ)�”}”(hŒ EDID data”h]”hŒ EDID data”…”�”}”(hj�Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jŒVh´M hj�Vubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjqVubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jŒVh´M hjnVubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjRVubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj²Vh]”hŒ Description”…”�”}”(hj´Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj°Vubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´M hjRVubhÎ)�”}”(hŒ9Sanity-check an entire EDID record (including extensions)”h]”hŒ9Sanity-check an entire EDID record (including extensions)”…”�”}”(hjÈVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´M hjRVubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjÙVh]”hŒReturn”…”�”}”(hjÛVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj×Vubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´MhjRVubhÎ)�”}”(hŒ0True if the EDID data is valid, false otherwise.”h]”hŒ0True if the EDID data is valid, false otherwise.”…”�”}”(hjïVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´MhjRVubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjºLh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_edid_valid (C function)”Œc.drm_edid_valid”hNt”auh1j† hjºLh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ5bool drm_edid_valid (const struct drm_edid *drm_edid)”h]”j¤ )�”}”(hŒ4bool drm_edid_valid(const struct drm_edid *drm_edid)”h]”(j¦)�”}”(hj£Ih]”hŒbool”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjWh²hh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´M$ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,Wh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjWh²hh³j+Wh´M$ubjÍ )�”}”(hŒdrm_edid_valid”h]”jÓ )�”}”(hŒdrm_edid_valid”h]”hŒdrm_edid_valid”…”�”}”(hj>Wh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj:Wubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjWh²hh³j+Wh´M$ubjÞ)�”}”(hŒ!(const struct drm_edid *drm_edid)”h]”jä)�”}”(hŒconst struct drm_edid *drm_edid”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hjZWh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjVWubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjgWh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjVWubjª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjuWh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjVWubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚Wh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjVWubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_edid”h]”hŒdrm_edid”…”�”}”(hj“Wh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj�Wubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j•WŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jj@WsbŒc.drm_edid_valid”†”asbuh1hhjVWubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³Wh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjVWubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjÁWh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjVWubjÓ )�”}”(hŒdrm_edid”h]”hŒdrm_edid”…”�”}”(hjÎWh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjVWubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjRWubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjWh²hh³j+Wh´M$ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjWh²hh³j+Wh´M$ubah}”(h]”jWah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j+Wh´M$hjWh²hubj )�”}”(hhh]”hÎ)�”}”(hŒsanity check EDID data”h]”hŒsanity check EDID data”…”�”}”(hjøWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´M$hjõWh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjWh²hh³j+Wh´M$ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jXj$ jXj% ‰j& ‰j' ‰uh1j˜ h²hhjºLh³Nh´Nubj) )�”}”(hŒí**Parameters** ``const struct drm_edid *drm_edid`` EDID data **Description** Sanity check an EDID. Cross check block count against allocated size and checksum the blocks. **Return** True if the EDID data is valid, false otherwise.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjXh]”hŒ Parameters”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjXubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´M(hjXubjw )�”}”(hhh]”j| )�”}”(hŒ.``const struct drm_edid *drm_edid`` EDID data ”h]”(j‚ )�”}”(hŒ#``const struct drm_edid *drm_edid``”h]”jˆ )�”}”(hj9Xh]”hŒconst struct drm_edid *drm_edid”…”�”}”(hj;Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj7Xubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´M%hj3Xubjž )�”}”(hhh]”hÎ)�”}”(hŒ EDID data”h]”hŒ EDID data”…”�”}”(hjRXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jNXh´M%hjOXubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj3Xubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jNXh´M%hj0Xubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjXubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjtXh]”hŒ Description”…”�”}”(hjvXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjrXubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´M'hjXubhÎ)�”}”(hŒ]Sanity check an EDID. Cross check block count against allocated size and checksum the blocks.”h]”hŒ]Sanity check an EDID. Cross check block count against allocated size and checksum the blocks.”…”�”}”(hjŠXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´M&hjXubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj›Xh]”hŒReturn”…”�”}”(hj�Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj™Xubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´M)hjXubhÎ)�”}”(hŒ0True if the EDID data is valid, false otherwise.”h]”hŒ0True if the EDID data is valid, false otherwise.”…”�”}”(hj±Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´M*hjXubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjºLh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ/drm_edid_override_connector_update (C function)”Œ$c.drm_edid_override_connector_update”hNt”auh1j† hjºLh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒHint drm_edid_override_connector_update (struct drm_connector *connector)”h]”j¤ )�”}”(hŒGint drm_edid_override_connector_update(struct drm_connector *connector)”h]”(j¦)�”}”(hŒint”h]”hŒint”…”�”}”(hjàXh²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjÜXh²hh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´M ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïXh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÜXh²hh³jîXh´M ubjÍ )�”}”(hŒ"drm_edid_override_connector_update”h]”jÓ )�”}”(hŒ"drm_edid_override_connector_update”h]”hŒ"drm_edid_override_connector_update”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjýXubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hjÜXh²hh³jîXh´M ubjÞ)�”}”(hŒ!(struct drm_connector *connector)”h]”jä)�”}”(hŒstruct drm_connector *connector”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjYubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*Yh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjYubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_connector”h]”hŒ drm_connector”…”�”}”(hj;Yh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj8Yubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j=YŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjYsbŒ$c.drm_edid_override_connector_update”†”asbuh1hhjYubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[Yh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjYubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjiYh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjYubjÓ )�”}”(hŒ connector”h]”hŒ connector”…”�”}”(hjvYh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjYubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjYubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhjÜXh²hh³jîXh´M ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hjØXh²hh³jîXh´M ubah}”(h]”jÓXah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jîXh´M hjÕXh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ%add modes from override/firmware EDID”h]”hŒ%add modes from override/firmware EDID”…”�”}”(hj Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´M hj�Yh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÕXh²hh³jîXh´M ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j¸Yj$ j¸Yj% ‰j& ‰j' ‰uh1j˜ h²hhjºLh³Nh´Nubj) )�”}”(hX�**Parameters** ``struct drm_connector *connector`` connector we're probing **Description** Add modes from the override/firmware EDID, if available. Only to be used from drm_helper_probe_single_connector_modes() as a fallback for when DDC probe failed during drm_get_edid() and caused the override/firmware EDID to be skipped. **Return** The number of modes added or 0 if we couldn't find any.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjÂYh]”hŒ Parameters”…”�”}”(hjÄYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÀYubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´M hj¼Yubjw )�”}”(hhh]”j| )�”}”(hŒ<``struct drm_connector *connector`` connector we're probing ”h]”(j‚ )�”}”(hŒ#``struct drm_connector *connector``”h]”jˆ )�”}”(hjáYh]”hŒstruct drm_connector *connector”…”�”}”(hjãYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjßYubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´M hjÛYubjž )�”}”(hhh]”hÎ)�”}”(hŒconnector we're probing”h]”hŒconnector we’re probing”…”�”}”(hjúYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jöYh´M hj÷Yubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjÛYubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jöYh´M hjØYubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hj¼YubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjZh]”hŒ Description”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjZubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´M hj¼YubhÎ)�”}”(hŒêAdd modes from the override/firmware EDID, if available. Only to be used from drm_helper_probe_single_connector_modes() as a fallback for when DDC probe failed during drm_get_edid() and caused the override/firmware EDID to be skipped.”h]”hŒêAdd modes from the override/firmware EDID, if available. Only to be used from drm_helper_probe_single_connector_modes() as a fallback for when DDC probe failed during drm_get_edid() and caused the override/firmware EDID to be skipped.”…”�”}”(hj2Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´M hj¼YubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjCZh]”hŒReturn”…”�”}”(hjEZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjAZubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´M hj¼YubhÎ)�”}”(hŒ7The number of modes added or 0 if we couldn't find any.”h]”hŒ9The number of modes added or 0 if we couldn’t find any.”…”�”}”(hjYZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´M hj¼Yubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjºLh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_edid_raw (C function)”Œc.drm_edid_raw”hNt”auh1j† hjºLh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒBconst struct edid * drm_edid_raw (const struct drm_edid *drm_edid)”h]”j¤ )�”}”(hŒ@const struct edid *drm_edid_raw(const struct drm_edid *drm_edid)”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hjˆZh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj„Zh²hh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´MÀ ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–Zh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj„Zh²hh³j•Zh´MÀ ubjª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj¤Zh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj„Zh²hh³j•Zh´MÀ ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±Zh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj„Zh²hh³j•Zh´MÀ ubh)�”}”(hhh]”jÓ )�”}”(hŒedid”h]”hŒedid”…”�”}”(hjÂZh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¿Zubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jÄZŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jŒ drm_edid_raw”sbŒc.drm_edid_raw”†”asbuh1hhj„Zh²hh³j•Zh´MÀ ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjãZh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj„Zh²hh³j•Zh´MÀ ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjñZh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj„Zh²hh³j•Zh´MÀ ubjÍ )�”}”(hŒ drm_edid_raw”h]”jÓ )�”}”(hjàZh]”hŒ drm_edid_raw”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjþZubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj„Zh²hh³j•Zh´MÀ ubjÞ)�”}”(hŒ!(const struct drm_edid *drm_edid)”h]”jä)�”}”(hŒconst struct drm_edid *drm_edid”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj8[h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj[ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjE[h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj[ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_edid”h]”hŒdrm_edid”…”�”}”(hjV[h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjS[ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jX[Œmodname”NŒ classname”Njé jì )�”}”jï ]”jÞZŒc.drm_edid_raw”†”asbuh1hhj[ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjt[h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj[ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj‚[h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj[ubjÓ )�”}”(hŒdrm_edid”h]”hŒdrm_edid”…”�”}”(hj�[h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj[ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj[ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj„Zh²hh³j•Zh´MÀ ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj€Zh²hh³j•Zh´MÀ ubah}”(h]”j{Zah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j•Zh´MÀ hj}Zh²hubj )�”}”(hhh]”hÎ)�”}”(hŒ#Get a pointer to the raw EDID data.”h]”hŒ#Get a pointer to the raw EDID data.”…”�”}”(hj¹[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´MÀ hj¶[h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj}Zh²hh³j•Zh´MÀ ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jÑ[j$ jÑ[j% ‰j& ‰j' ‰uh1j˜ h²hhjºLh³Nh´Nubj) )�”}”(hŒå**Parameters** ``const struct drm_edid *drm_edid`` drm_edid container **Description** Get a pointer to the raw EDID data. This is for transition only. Avoid using this like the plague. **Return** Pointer to raw EDID data.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjÛ[h]”hŒ Parameters”…”�”}”(hjÝ[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÙ[ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´MÄ hjÕ[ubjw )�”}”(hhh]”j| )�”}”(hŒ7``const struct drm_edid *drm_edid`` drm_edid container ”h]”(j‚ )�”}”(hŒ#``const struct drm_edid *drm_edid``”h]”jˆ )�”}”(hjú[h]”hŒconst struct drm_edid *drm_edid”…”�”}”(hjü[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjø[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´MÁ hjô[ubjž )�”}”(hhh]”hÎ)�”}”(hŒdrm_edid container”h]”hŒdrm_edid container”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j\h´MÁ hj\ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjô[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j\h´MÁ hjñ[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÕ[ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj5\h]”hŒ Description”…”�”}”(hj7\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj3\ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´Mà hjÕ[ubhÎ)�”}”(hŒ#Get a pointer to the raw EDID data.”h]”hŒ#Get a pointer to the raw EDID data.”…”�”}”(hjK\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´M hjÕ[ubhÎ)�”}”(hŒ>This is for transition only. Avoid using this like the plague.”h]”hŒ>This is for transition only. Avoid using this like the plague.”…”�”}”(hjZ\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´MÄ hjÕ[ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjk\h]”hŒReturn”…”�”}”(hjm\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hji\ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´MÆ hjÕ[ubhÎ)�”}”(hŒPointer to raw EDID data.”h]”hŒPointer to raw EDID data.”…”�”}”(hj�\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´MÇ hjÕ[ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjºLh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_edid_alloc (C function)”Œc.drm_edid_alloc”hNt”auh1j† hjºLh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒFconst struct drm_edid * drm_edid_alloc (const void *edid, size_t size)”h]”j¤ )�”}”(hŒDconst struct drm_edid *drm_edid_alloc(const void *edid, size_t size)”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hj°\h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj¬\h²hh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.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ª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjÌ\h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj¬\h²hh³j½\h´Më ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙ\h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¬\h²hh³j½\h´Më ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_edid”h]”hŒdrm_edid”…”�”}”(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Œdrm_edid_alloc”sbŒc.drm_edid_alloc”†”asbuh1hhj¬\h²hh³j½\h´Më ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ]h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¬\h²hh³j½\h´Më ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¬\h²hh³j½\h´Më ubjÍ )�”}”(hŒdrm_edid_alloc”h]”jÓ )�”}”(hj]h]”hŒdrm_edid_alloc”…”�”}”(hj*]h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj&]ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj¬\h²hh³j½\h´Më ubjÞ)�”}”(hŒ(const void *edid, size_t size)”h]”(jä)�”}”(hŒconst void *edid”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hjE]h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjA]ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjR]h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjA]ubj¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj`]h²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hjA]ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjn]h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjA]ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj|]h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjA]ubjÓ )�”}”(hŒedid”h]”hŒedid”…”�”}”(hj‰]h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjA]ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj=]ubjä)�”}”(hŒ size_t size”h]”(h)�”}”(hhh]”jÓ )�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(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.drm_edid_alloc”†”asbuh1hhjž]ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃ]h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjž]ubjÓ )�”}”(hŒsize”h]”hŒsize”…”�”}”(hjÑ]h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjž]ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj=]ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj¬\h²hh³j½\h´Më ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë 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Œ!Allocate a new drm_edid container”h]”hŒ!Allocate a new drm_edid container”…”�”}”(hjû]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.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²hhjºLh³Nh´Nubj) )�”}”(hXï**Parameters** ``const void *edid`` Pointer to raw EDID data ``size_t size`` Size of memory allocated for EDID **Description** Allocate a new drm_edid container. Do not calculate edid size from edid, pass the actual size that has been allocated for the data. There is no validation of the raw EDID data against the size, but at least the EDID base block must fit in the buffer. The returned pointer must be freed using drm_edid_free(). **Return** drm_edid container, or NULL on errors”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj^h]”hŒ Parameters”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj^ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´Mï hj^ubjw )�”}”(hhh]”(j| )�”}”(hŒ.``const void *edid`` Pointer to raw EDID data ”h]”(j‚ )�”}”(hŒ``const void *edid``”h]”jˆ )�”}”(hj<^h]”hŒconst void *edid”…”�”}”(hj>^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj:^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´Mì hj6^ubjž )�”}”(hhh]”hÎ)�”}”(hŒPointer to raw EDID data”h]”hŒPointer to raw EDID data”…”�”}”(hjU^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jQ^h´Mì hjR^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj6^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jQ^h´Mì hj3^ubj| )�”}”(hŒ2``size_t size`` Size of memory allocated for EDID ”h]”(j‚ )�”}”(hŒ``size_t size``”h]”jˆ )�”}”(hju^h]”hŒ size_t size”…”�”}”(hjw^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjs^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´Mí hjo^ubjž )�”}”(hhh]”hÎ)�”}”(hŒ!Size of memory allocated for EDID”h]”hŒ!Size of memory allocated for EDID”…”�”}”(hjŽ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jŠ^h´Mí hj‹^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjo^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jŠ^h´Mí hj3^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hj^ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hj°^h]”hŒ Description”…”�”}”(hj²^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj®^ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´Mï hj^ubhÎ)�”}”(hŒúAllocate a new drm_edid container. Do not calculate edid size from edid, pass the actual size that has been allocated for the data. There is no validation of the raw EDID data against the size, but at least the EDID base block must fit in the buffer.”h]”hŒúAllocate a new drm_edid container. Do not calculate edid size from edid, pass the actual size that has been allocated for the data. There is no validation of the raw EDID data against the size, but at least the EDID base block must fit in the buffer.”…”�”}”(hjÆ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´Mî hj^ubhÎ)�”}”(hŒ9The returned pointer must be freed using drm_edid_free().”h]”hŒ9The returned pointer must be freed using drm_edid_free().”…”�”}”(hjÕ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´Mó hj^ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjæ^h]”hŒReturn”…”�”}”(hjè^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjä^ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´Mõ hj^ubhÎ)�”}”(hŒ%drm_edid container, or NULL on errors”h]”hŒ%drm_edid container, or NULL on errors”…”�”}”(hjü^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´Mö hj^ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjºLh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_edid_dup (C function)”Œc.drm_edid_dup”hNt”auh1j† hjºLh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒFconst struct drm_edid * drm_edid_dup (const struct drm_edid *drm_edid)”h]”j¤ )�”}”(hŒDconst struct drm_edid *drm_edid_dup(const struct drm_edid *drm_edid)”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hj+_h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj'_h²hh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´M ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9_h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj'_h²hh³j8_h´M ubjª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjG_h²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj'_h²hh³j8_h´M ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjT_h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj'_h²hh³j8_h´M ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_edid”h]”hŒdrm_edid”…”�”}”(hje_h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjb_ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jg_Œmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jŒ drm_edid_dup”sbŒc.drm_edid_dup”†”asbuh1hhj'_h²hh³j8_h´M ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†_h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj'_h²hh³j8_h´M ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj”_h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj'_h²hh³j8_h´M ubjÍ )�”}”(hŒ drm_edid_dup”h]”jÓ )�”}”(hjƒ_h]”hŒ drm_edid_dup”…”�”}”(hj¥_h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¡_ubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj'_h²hh³j8_h´M ubjÞ)�”}”(hŒ!(const struct drm_edid *drm_edid)”h]”jä)�”}”(hŒconst struct drm_edid *drm_edid”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(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ª )�”}”(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Œdrm_edid”h]”hŒdrm_edid”…”�”}”(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.drm_edid_dup”†”asbuh1hhj¼_ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj¼_ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj%`h²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj¼_ubjÓ )�”}”(hŒdrm_edid”h]”hŒdrm_edid”…”�”}”(hj2`h²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj¼_ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¸_ubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj'_h²hh³j8_h´M ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj#_h²hh³j8_h´M ubah}”(h]”j_ah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³j8_h´M hj _h²hubj )�”}”(hhh]”hÎ)�”}”(hŒDuplicate a drm_edid container”h]”hŒDuplicate a drm_edid container”…”�”}”(hj\`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´M hjY`h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj _h²hh³j8_h´M ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# jt`j$ jt`j% ‰j& ‰j' ‰uh1j˜ h²hhjºLh³Nh´Nubj) )�”}”(hŒË**Parameters** ``const struct drm_edid *drm_edid`` EDID to duplicate **Description** The returned pointer must be freed using drm_edid_free(). **Return** drm_edid container copy, or NULL on errors”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hj~`h]”hŒ Parameters”…”�”}”(hj€`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hj|`ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´M hjx`ubjw )�”}”(hhh]”j| )�”}”(hŒ6``const struct drm_edid *drm_edid`` EDID to duplicate ”h]”(j‚ )�”}”(hŒ#``const struct drm_edid *drm_edid``”h]”jˆ )�”}”(hj�`h]”hŒconst struct drm_edid *drm_edid”…”�”}”(hjŸ`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hj›`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´M hj—`ubjž )�”}”(hhh]”hÎ)�”}”(hŒEDID to duplicate”h]”hŒEDID to duplicate”…”�”}”(hj¶`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j²`h´M hj³`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hj—`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j²`h´M hj”`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jv hjx`ubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjØ`h]”hŒ Description”…”�”}”(hjÚ`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÖ`ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´M hjx`ubhÎ)�”}”(hŒ9The returned pointer must be freed using drm_edid_free().”h]”hŒ9The returned pointer must be freed using drm_edid_free().”…”�”}”(hjî`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´M hjx`ubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hjÿ`h]”hŒReturn”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjý`ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´M hjx`ubhÎ)�”}”(hŒ*drm_edid container copy, or NULL on errors”h]”hŒ*drm_edid container copy, or NULL on errors”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´M hjx`ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjºLh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œdrm_edid_free (C function)”Œc.drm_edid_free”hNt”auh1j† hjºLh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒ4void drm_edid_free (const struct drm_edid *drm_edid)”h]”j¤ )�”}”(hŒ3void drm_edid_free(const struct drm_edid *drm_edid)”h]”(j¦)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjDah²hh³Nh´Nubah}”(h]”h ]”j²ah"]”h$]”h&]”uh1j¥hj@ah²hh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´M ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSah²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj@ah²hh³jRah´M ubjÍ )�”}”(hŒ drm_edid_free”h]”jÓ )�”}”(hŒ drm_edid_free”h]”hŒ drm_edid_free”…”�”}”(hjeah²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjaaubah}”(h]”h ]”(jå jæ eh"]”h$]”h&]”jê jë uh1jÌ hj@ah²hh³jRah´M ubjÞ)�”}”(hŒ!(const struct drm_edid *drm_edid)”h]”jä)�”}”(hŒconst struct drm_edid *drm_edid”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hj�ah²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj}aubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽah²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj}aubjª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjœah²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj}aubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©ah²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj}aubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_edid”h]”hŒdrm_edid”…”�”}”(hjºah²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj·aubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”j¼aŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jjgasbŒc.drm_edid_free”†”asbuh1hhj}aubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚah²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj}aubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjèah²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj}aubjÓ )�”}”(hŒdrm_edid”h]”hŒdrm_edid”…”�”}”(hjõah²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj}aubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhjyaubah}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj@ah²hh³jRah´M ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj(struct drm_connector *connector, struct i2c_adapter *adapter)”h]”(jä)�”}”(hŒstruct drm_connector *connector”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj´dh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj°dubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁdh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj°dubh)�”}”(hhh]”jÓ )�”}”(hŒ drm_connector”h]”hŒ drm_connector”…”�”}”(hjÒdh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjÏdubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jÔdŒmodname”NŒ classname”Njé jì )�”}”jï ]”judŒc.drm_get_edid”†”asbuh1hhj°dubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjðdh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj°dubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjþdh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj°dubjÓ )�”}”(hŒ connector”h]”hŒ connector”…”�”}”(hj eh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj°dubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¬dubjä)�”}”(hŒstruct i2c_adapter *adapter”h]”(jª )�”}”(hj­ h]”hŒstruct”…”�”}”(hj$eh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hj eubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1eh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj eubh)�”}”(hhh]”jÓ )�”}”(hŒ i2c_adapter”h]”hŒ i2c_adapter”…”�”}”(hjBeh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj?eubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jDeŒmodname”NŒ classname”Njé jì )�”}”jï ]”judŒc.drm_get_edid”†”asbuh1hhj eubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`eh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hj eubj9)�”}”(hjOh]”hŒ*”…”�”}”(hjneh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hj eubjÓ )�”}”(hŒadapter”h]”hŒadapter”…”�”}”(hj{eh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj eubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjê jë uh1jãhj¬dubeh}”(h]”h ]”h"]”h$]”h&]”jê jë uh1jÝhj6dh²hh³jGdh´M: ubeh}”(h]”h ]”h"]”h$]”h&]”jê jë jò ˆuh1j£ jó jô hj2dh²hh³jGdh´M: ubah}”(h]”j-dah ]”(jø jù eh"]”h$]”h&]”jý ˆjþ )jÿ huh1j� h³jGdh´M: hj/dh²hubj )�”}”(hhh]”hÎ)�”}”(hŒget EDID data, if available”h]”hŒget EDID data, if available”…”�”}”(hj¥eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´M: hj¢eh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj/dh²hh³jGdh´M: ubeh}”(h]”h ]”(j Œfunction”eh"]”h$]”h&]”j" j j# j½ej$ j½ej% ‰j& ‰j' ‰uh1j˜ h²hhjºLh³Nh´Nubj) )�”}”(hXB**Parameters** ``struct drm_connector *connector`` connector we're probing ``struct i2c_adapter *adapter`` I2C adapter to use for DDC **Description** Poke the given I2C channel to grab EDID data if possible. If found, attach it to the connector. **Return** Pointer to valid EDID or NULL if we couldn't find any.”h]”(hÎ)�”}”(hŒ**Parameters**”h]”j3 )�”}”(hjÇeh]”hŒ Parameters”…”�”}”(hjÉeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjÅeubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´M> hjÁeubjw )�”}”(hhh]”(j| )�”}”(hŒ<``struct drm_connector *connector`` connector we're probing ”h]”(j‚ )�”}”(hŒ#``struct drm_connector *connector``”h]”jˆ )�”}”(hjæeh]”hŒstruct drm_connector *connector”…”�”}”(hjèeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjäeubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´M; hjàeubjž )�”}”(hhh]”hÎ)�”}”(hŒconnector we're probing”h]”hŒconnector we’re probing”…”�”}”(hjÿeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³jûeh´M; hjüeubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjàeubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³jûeh´M; hjÝeubj| )�”}”(hŒ;``struct i2c_adapter *adapter`` I2C adapter to use for DDC ”h]”(j‚ )�”}”(hŒ``struct i2c_adapter *adapter``”h]”jˆ )�”}”(hjfh]”hŒstruct i2c_adapter *adapter”…”�”}”(hj!fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j‡ hjfubah}”(h]”h ]”h"]”h$]”h&]”uh1j� h³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´M< hjfubjž )�”}”(hhh]”hÎ)�”}”(hŒI2C adapter to use for DDC”h]”hŒI2C adapter to use for DDC”…”�”}”(hj8fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³j4fh´M< hj5fubah}”(h]”h ]”h"]”h$]”h&]”uh1j� hjfubeh}”(h]”h ]”h"]”h$]”h&]”uh1j{ h³j4fh´M< hjÝeubeh}”(h]”h ]”h"]”h$]”h&]”uh1jv hjÁeubhÎ)�”}”(hŒ**Description**”h]”j3 )�”}”(hjZfh]”hŒ Description”…”�”}”(hj\fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjXfubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´M> hjÁeubhÎ)�”}”(hŒ`Poke the given I2C channel to grab EDID data if possible. If found, attach it to the connector.”h]”hŒ`Poke the given I2C channel to grab EDID data if possible. If found, attach it to the connector.”…”�”}”(hjpfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´M= hjÁeubhÎ)�”}”(hŒ **Return**”h]”j3 )�”}”(hj�fh]”hŒReturn”…”�”}”(hjƒfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j2 hjfubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´M@ hjÁeubhÎ)�”}”(hŒ6Pointer to valid EDID or NULL if we couldn't find any.”h]”hŒ8Pointer to valid EDID or NULL if we couldn’t find any.”…”�”}”(hj—fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´MA hjÁeubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j( hjºLh²hh³Nh´Nubj‡ )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j“ Œ!drm_edid_read_custom (C function)”Œc.drm_edid_read_custom”hNt”auh1j† hjºLh²hh³Nh´Nubj™ )�”}”(hhh]”(jž )�”}”(hŒwconst struct drm_edid * drm_edid_read_custom (struct drm_connector *connector, read_block_fn read_block, void *context)”h]”j¤ )�”}”(hŒuconst struct drm_edid *drm_edid_read_custom(struct drm_connector *connector, read_block_fn read_block, void *context)”h]”(jª )�”}”(hjch]”hŒconst”…”�”}”(hjÆfh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjÂfh²hh³Œ_/var/lib/git/docbuild/linux/Documentation/gpu/drm-kms-helpers:386: ./drivers/gpu/drm/drm_edid.c”h´MU ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔfh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÂfh²hh³jÓfh´MU ubjª )�”}”(hj­ h]”hŒstruct”…”�”}”(hjâfh²hh³Nh´Nubah}”(h]”h ]”j¶ ah"]”h$]”h&]”uh1j© hjÂfh²hh³jÓfh´MU ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïfh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÂfh²hh³jÓfh´MU ubh)�”}”(hhh]”jÓ )�”}”(hŒdrm_edid”h]”hŒdrm_edid”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hjýfubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j Œreftype”jŒ reftarget”jgŒmodname”NŒ classname”Njé jì )�”}”jï ]”j%)�”}”jŒdrm_edid_read_custom”sbŒc.drm_edid_read_custom”†”asbuh1hhjÂfh²hh³jÓfh´MU ubj¼ )�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!gh²hh³Nh´Nubah}”(h]”h ]”jÈ ah"]”h$]”h&]”uh1j» hjÂfh²hh³jÓfh´MU ubj9)�”}”(hjOh]”hŒ*”…”�”}”(hj/gh²hh³Nh´Nubah}”(h]”h ]”jDah"]”h$]”h&]”uh1j8hjÂfh²hh³jÓfh´MU ubjÍ )�”}”(hŒdrm_edid_read_custom”h]”jÓ )�”}”(hjgh]”hŒdrm_edid_read_custom”…”�”}”(hj@gh²hh³Nh´Nubah}”(h]”h ]”jÞ ah"]”h$]”h&]”uh1jÒ hj