sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget"/translations/zh_CN/gpu/drm-clientmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget"/translations/zh_TW/gpu/drm-clientmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget"/translations/it_IT/gpu/drm-clientmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget"/translations/ja_JP/gpu/drm-clientmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget"/translations/ko_KR/gpu/drm-clientmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget"/translations/sp_SP/gpu/drm-clientmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhsection)}(hhh](htitle)}(hKernel clientsh]hKernel clients}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhh`. Protected by :c:type:`drm_device.clientlist_mutex `. ``funcs`` DRM client functions (optional) ``file`` DRM file ``modeset_mutex`` Protects **modesets**. ``modesets`` CRTC configurations ``suspended`` The client has been suspended. ``hotplug_pending`` A hotplug event has been received while the client was suspended. Try again on resume. ``hotplug_failed`` Set by client hotplug helpers if the hotplugging failed before. It is usually not tried again.h](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKghjubj)}(hX6struct drm_client_dev { struct drm_device *dev; const char *name; struct list_head list; const struct drm_client_funcs *funcs; struct drm_file *file; struct mutex modeset_mutex; struct drm_mode_set *modesets; bool suspended; bool hotplug_pending; bool hotplug_failed; };h]hX6struct drm_client_dev { struct drm_device *dev; const char *name; struct list_head list; const struct drm_client_funcs *funcs; struct drm_file *file; struct mutex modeset_mutex; struct drm_mode_set *modesets; bool suspended; bool hotplug_pending; bool hotplug_failed; };}hjsbah}(h]h ]h"]h$]h&]j:j;uh1jhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKihjubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKvhjubj)}(hhh](j)}(h``dev`` DRM device h](j)}(h``dev``h]j)}(hjh]hdev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhhjubj)}(hhh]h)}(h DRM deviceh]h DRM device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhhjubj)}(h``name`` Name of the client. h](j)}(h``name``h]j)}(hj;h]hname}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKmhj5ubj)}(hhh]h)}(hName of the client.h]hName of the client.}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1hhjPhKmhjQubah}(h]h ]h"]h$]h&]uh1jhj5ubeh}(h]h ]h"]h$]h&]uh1jhjPhKmhjubj)}(h``list`` List of all clients of a DRM device, linked into :c:type:`drm_device.clientlist `. Protected by :c:type:`drm_device.clientlist_mutex `. h](j)}(h``list``h]j)}(hjth]hlist}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjrubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKshjnubj)}(hhh]h)}(hList of all clients of a DRM device, linked into :c:type:`drm_device.clientlist `. Protected by :c:type:`drm_device.clientlist_mutex `.h](h1List of all clients of a DRM device, linked into }(hjhhhNhNubh)}(h,:c:type:`drm_device.clientlist `h]j)}(hjh]hdrm_device.clientlist}(hjhhhNhNubah}(h]h ](jjmc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjmreftypetype refexplicitrefwarnjjj drm_deviceuh1hhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKrhjubh. Protected by }(hjhhhNhNubh)}(h2:c:type:`drm_device.clientlist_mutex `h]j)}(hjh]hdrm_device.clientlist_mutex}(hjhhhNhNubah}(h]h ](jjmc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjmreftypetype refexplicitrefwarnjjj drm_deviceuh1hhjhKrhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKrhjubah}(h]h ]h"]h$]h&]uh1jhjnubeh}(h]h ]h"]h$]h&]uh1jhjhKshjubj)}(h*``funcs`` DRM client functions (optional) h](j)}(h ``funcs``h]j)}(hjh]hfuncs}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKzhjubj)}(hhh]h)}(hDRM client functions (optional)h]hDRM client functions (optional)}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKzhj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj hKzhjubj)}(h``file`` DRM file h](j)}(h``file``h]j)}(hj-h]hfile}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj+ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhj'ubj)}(hhh]h)}(hDRM fileh]hDRM file}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjBhKhjCubah}(h]h ]h"]h$]h&]uh1jhj'ubeh}(h]h ]h"]h$]h&]uh1jhjBhKhjubj)}(h)``modeset_mutex`` Protects **modesets**. h](j)}(h``modeset_mutex``h]j)}(hjfh]h modeset_mutex}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjdubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhj`ubj)}(hhh]h)}(hProtects **modesets**.h](h Protects }(hjhhhNhNubj)}(h **modesets**h]hmodesets}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj{hKhj|ubah}(h]h ]h"]h$]h&]uh1jhj`ubeh}(h]h ]h"]h$]h&]uh1jhj{hKhjubj)}(h!``modesets`` CRTC configurations h](j)}(h ``modesets``h]j)}(hjh]hmodesets}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhjubj)}(hhh]h)}(hCRTC configurationsh]hCRTC configurations}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(h-``suspended`` The client has been suspended. h](j)}(h ``suspended``h]j)}(hjh]h suspended}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhjubj)}(hhh]h)}(hThe client has been suspended.h]hThe client has been suspended.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(hk``hotplug_pending`` A hotplug event has been received while the client was suspended. Try again on resume. h](j)}(h``hotplug_pending``h]j)}(hj#h]hhotplug_pending}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhjubj)}(hhh]h)}(hVA hotplug event has been received while the client was suspended. Try again on resume.h]hVA hotplug event has been received while the client was suspended. Try again on resume.}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhj9ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj8hKhjubj)}(hq``hotplug_failed`` Set by client hotplug helpers if the hotplugging failed before. It is usually not tried again.h](j)}(h``hotplug_failed``h]j)}(hj]h]hhotplug_failed}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhjWubj)}(hhh]h)}(h^Set by client hotplug helpers if the hotplugging failed before. It is usually not tried again.h]h^Set by client hotplug helpers if the hotplugging failed before. It is usually not tried again.}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjrhKhjsubah}(h]h ]h"]h$]h&]uh1jhjWubeh}(h]h ]h"]h$]h&]uh1jhjrhKhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hdrm_client_buffer (C struct)c.drm_client_bufferhNtauh1hhhhhhNhNubh)}(hhh](h)}(hdrm_client_bufferh]h)}(hstruct drm_client_bufferh](h)}(hhh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1hhjhhhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKubj )}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjhhhjhKubj)}(hdrm_client_bufferh]j#)}(hjh]hdrm_client_buffer}(hjhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjubah}(h]h ](j5j6eh"]h$]h&]j:j;uh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]j:j;jBuh1hjCjDhjhhhjhKubah}(h]jah ](jHjIeh"]h$]h&]jMjN)jOhuh1hhjhKhjhhubjQ)}(hhh]h)}(hDRM client bufferh]hDRM client buffer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhjhhubah}(h]h ]h"]h$]h&]uh1jPhjhhhjhKubeh}(h]h ](jmstructeh"]h$]h&]jrjmjsjjtjjujvjwuh1hhhhhhNhNubjy)}(hX**Definition**:: struct drm_client_buffer { struct drm_client_dev *client; struct drm_gem_object *gem; struct iosys_map map; struct drm_framebuffer *fb; }; **Members** ``client`` DRM client ``gem`` GEM object backing this buffer FIXME: The DRM framebuffer holds a reference on its GEM buffer objects. Do not use this field in new code and update existing users. ``map`` Virtual address for the buffer ``fb`` DRM framebufferh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhjubj)}(hstruct drm_client_buffer { struct drm_client_dev *client; struct drm_gem_object *gem; struct iosys_map map; struct drm_framebuffer *fb; };h]hstruct drm_client_buffer { struct drm_client_dev *client; struct drm_gem_object *gem; struct iosys_map map; struct drm_framebuffer *fb; };}hj5sbah}(h]h ]h"]h$]h&]j:j;uh1jhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhjubh)}(h **Members**h]j)}(hjFh]hMembers}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhjubj)}(hhh](j)}(h``client`` DRM client h](j)}(h ``client``h]j)}(hjeh]hclient}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jhjcubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhj_ubj)}(hhh]h)}(h DRM clienth]h DRM client}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjzhKhj{ubah}(h]h ]h"]h$]h&]uh1jhj_ubeh}(h]h ]h"]h$]h&]uh1jhjzhKhj\ubj)}(h``gem`` GEM object backing this buffer FIXME: The DRM framebuffer holds a reference on its GEM buffer objects. Do not use this field in new code and update existing users. h](j)}(h``gem``h]j)}(hjh]hgem}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhjubj)}(hhh](h)}(hGEM object backing this bufferh]hGEM object backing this buffer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhjubh)}(hFIXME: The DRM framebuffer holds a reference on its GEM buffer objects. Do not use this field in new code and update existing users.h]hFIXME: The DRM framebuffer holds a reference on its GEM buffer objects. Do not use this field in new code and update existing users.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhj\ubj)}(h'``map`` Virtual address for the buffer h](j)}(h``map``h]j)}(hjh]hmap}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhjubj)}(hhh]h)}(hVirtual address for the bufferh]hVirtual address for the buffer}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhj\ubj)}(h``fb`` DRM framebufferh](j)}(h``fb``h]j)}(hj h]hfb}(hj" hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhj ubj)}(hhh]h)}(hDRM framebufferh]hDRM framebuffer}(hj9 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhj6 ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj5 hKhj\ubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h%drm_client_for_each_modeset (C macro)c.drm_client_for_each_modesethNtauh1hhhhhhNhNubh)}(hhh](h)}(hdrm_client_for_each_modeseth]h)}(hdrm_client_for_each_modeseth]j)}(hdrm_client_for_each_modeseth]j#)}(hjt h]hdrm_client_for_each_modeset}(hj~ hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjz ubah}(h]h ](j5j6eh"]h$]h&]j:j;uh1jhjv hhhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKubah}(h]h ]h"]h$]h&]j:j;jBuh1hjCjDhjr hhhj hKubah}(h]jm ah ](jHjIeh"]h$]h&]jMjN)jOhuh1hhj hKhjo hhubjQ)}(hhh]h}(h]h ]h"]h$]h&]uh1jPhjo hhhj hKubeh}(h]h ](jmmacroeh"]h$]h&]jrjmjsj jtj jujvjwuh1hhhhhhNhNubh)}(h1``drm_client_for_each_modeset (modeset, client)``h]j)}(hj h]h-drm_client_for_each_modeset (modeset, client)}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhhhhubh block_quote)}(hIterate over client modesets h]h)}(hIterate over client modesetsh]hIterate over client modesets}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhj ubah}(h]h ]h"]h$]h&]uh1j hj hKhhhhubjy)}(hY**Parameters** ``modeset`` :c:type:`drm_mode_set` loop cursor ``client`` DRM clienth](h)}(h**Parameters**h]j)}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhj ubj)}(hhh](j)}(h/``modeset`` :c:type:`drm_mode_set` loop cursor h](j)}(h ``modeset``h]j)}(hj h]hmodeset}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhj ubj)}(hhh]h)}(h":c:type:`drm_mode_set` loop cursorh](h)}(h:c:type:`drm_mode_set`h]j)}(hj% h]h drm_mode_set}(hj' hhhNhNubah}(h]h ](jjmc-typeeh"]h$]h&]uh1jhj# ubah}(h]h ]h"]h$]h&]refdocj refdomainjmreftypetype refexplicitrefwarnjjj drm_mode_setuh1hhj hKhj ubh loop cursor}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hKhj ubj)}(h``client`` DRM clienth](j)}(h ``client``h]j)}(hj^ h]hclient}(hj` hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj\ ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhjX ubj)}(hhh]h)}(h DRM clienth]h DRM client}(hjw hhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhjt ubah}(h]h ]h"]h$]h&]uh1jhjX ubeh}(h]h ]h"]h$]h&]uh1jhjs hKhj ubeh}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h,drm_client_for_each_connector_iter (C macro)$c.drm_client_for_each_connector_iterhNtauh1hhhhhhNhNubh)}(hhh](h)}(h"drm_client_for_each_connector_iterh]h)}(h"drm_client_for_each_connector_iterh]j)}(h"drm_client_for_each_connector_iterh]j#)}(hj h]h"drm_client_for_each_connector_iter}(hj hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj ubah}(h]h ](j5j6eh"]h$]h&]j:j;uh1jhj hhhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKubah}(h]h ]h"]h$]h&]j:j;jBuh1hjCjDhj hhhj hKubah}(h]j ah ](jHjIeh"]h$]h&]jMjN)jOhuh1hhj hKhj hhubjQ)}(hhh]h}(h]h ]h"]h$]h&]uh1jPhj hhhj hKubeh}(h]h ](jmmacroeh"]h$]h&]jrjmjsj jtj jujvjwuh1hhhhhhNhNubh)}(h8``drm_client_for_each_connector_iter (connector, iter)``h]j)}(hj h]h4drm_client_for_each_connector_iter (connector, iter)}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhhhhubj )}(hconnector_list iterator macro h]h)}(hconnector_list iterator macroh]hconnector_list iterator macro}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhj ubah}(h]h ]h"]h$]h&]uh1j hj hKhhhhubjy)}(hX\**Parameters** ``connector`` :c:type:`struct drm_connector ` pointer used as cursor ``iter`` :c:type:`struct drm_connector_list_iter ` **Description** This iterates the connectors that are useable for internal clients (excludes writeback connectors). For more info see drm_for_each_connector_iter().h](h)}(h**Parameters**h]j)}(hj# h]h Parameters}(hj% hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj! ubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhj ubj)}(hhh](j)}(hT``connector`` :c:type:`struct drm_connector ` pointer used as cursor h](j)}(h ``connector``h]j)}(hjB h]h connector}(hjD hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj@ ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhj< ubj)}(hhh]h)}(hE:c:type:`struct drm_connector ` pointer used as cursorh](h)}(h.:c:type:`struct drm_connector `h]j)}(hja h]hstruct drm_connector}(hjc hhhNhNubah}(h]h ](jjmc-typeeh"]h$]h&]uh1jhj_ ubah}(h]h ]h"]h$]h&]refdocj refdomainjmreftypetype refexplicitrefwarnjjj drm_connectoruh1hhjW hKhj[ ubh pointer used as cursor}(hj[ hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjW hKhjX ubah}(h]h ]h"]h$]h&]uh1jhj< ubeh}(h]h ]h"]h$]h&]uh1jhjW hKhj9 ubj)}(hL``iter`` :c:type:`struct drm_connector_list_iter ` h](j)}(h``iter``h]j)}(hj h]hiter}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhj ubj)}(hhh]h)}(hB:c:type:`struct drm_connector_list_iter `h]h)}(hj h]j)}(hj h]hstruct drm_connector_list_iter}(hj hhhNhNubah}(h]h ](jjmc-typeeh"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]refdocj refdomainjmreftypetype refexplicitrefwarnjjjdrm_connector_list_iteruh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hKhj9 ubeh}(h]h ]h"]h$]h&]uh1jhj ubh)}(h**Description**h]j)}(hj h]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhj ubh)}(hcThis iterates the connectors that are useable for internal clients (excludes writeback connectors).h]hcThis iterates the connectors that are useable for internal clients (excludes writeback connectors).}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhj ubh)}(h0For more info see drm_for_each_connector_iter().h]h0For more info see drm_for_each_connector_iter().}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hdrm_client_init (C function)c.drm_client_inithNtauh1hhhhhhNhNubh)}(hhh](h)}(hint drm_client_init (struct drm_device *dev, struct drm_client_dev *client, const char *name, const struct drm_client_funcs *funcs)h]h)}(hint drm_client_init(struct drm_device *dev, struct drm_client_dev *client, const char *name, const struct drm_client_funcs *funcs)h](hdesc_sig_keyword_type)}(hinth]hint}(hjE hhhNhNubah}(h]h ]ktah"]h$]h&]uh1jC hj? hhh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKBubj )}(h h]h }(hjU hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj? hhhjT hKBubj)}(hdrm_client_inith]j#)}(hdrm_client_inith]hdrm_client_init}(hjg hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjc ubah}(h]h ](j5j6eh"]h$]h&]j:j;uh1jhj? hhhjT hKBubhdesc_parameterlist)}(ho(struct drm_device *dev, struct drm_client_dev *client, const char *name, const struct drm_client_funcs *funcs)h](hdesc_parameter)}(hstruct drm_device *devh](h)}(hhh]hstruct}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1hhj ubj )}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj ubh)}(hhh]j#)}(h drm_deviceh]h drm_device}(hj hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj ubah}(h]h ]h"]h$]h&] refdomainjmreftype identifier reftargetj modnameN classnameNjj)}j]j ASTIdentifier)}j ji sbc.drm_client_initasbuh1hhj ubj )}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj ubhdesc_sig_punctuation)}(h*h]h*}(hj hhhNhNubah}(h]h ]pah"]h$]h&]uh1j hj ubj#)}(hdevh]hdev}(hj hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj ubeh}(h]h ]h"]h$]h&]noemphj:j;uh1j hj} ubj )}(hstruct drm_client_dev *clienth](h)}(hhh]hstruct}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1hhj ubj )}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj ubh)}(hhh]j#)}(hdrm_client_devh]hdrm_client_dev}(hj hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj ubah}(h]h ]h"]h$]h&] refdomainjmreftypej reftargetj modnameN classnameNjj)}j]j c.drm_client_initasbuh1hhj ubj )}(h h]h }(hj< hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj ubj )}(hj h]h*}(hjJ hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ubj#)}(hclienth]hclient}(hjW hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj ubeh}(h]h ]h"]h$]h&]noemphj:j;uh1j hj} ubj )}(hconst char *nameh](h)}(hconsth]hconst}(hjp hhhNhNubah}(h]h ]jah"]h$]h&]uh1hhjl ubj )}(h h]h }(hj~ hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjl ubjD )}(hcharh]hchar}(hj hhhNhNubah}(h]h ]jP ah"]h$]h&]uh1jC hjl ubj )}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjl ubj )}(hj h]h*}(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjl ubj#)}(hnameh]hname}(hj hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjl ubeh}(h]h ]h"]h$]h&]noemphj:j;uh1j hj} ubj )}(h$const struct drm_client_funcs *funcsh](h)}(hjr h]hconst}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1hhj ubj )}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj ubh)}(hhh]hstruct}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1hhj ubj )}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj ubh)}(hhh]j#)}(hdrm_client_funcsh]hdrm_client_funcs}(hjhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjubah}(h]h ]h"]h$]h&] refdomainjmreftypej reftargetj modnameN classnameNjj)}j]j c.drm_client_initasbuh1hhj ubj )}(h h]h }(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj ubj )}(hj h]h*}(hj3hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ubj#)}(hfuncsh]hfuncs}(hj@hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj ubeh}(h]h ]h"]h$]h&]noemphj:j;uh1j hj} ubeh}(h]h ]h"]h$]h&]j:j;uh1j{ hj? hhhjT hKBubeh}(h]h ]h"]h$]h&]j:j;jBuh1hjCjDhj; hhhjT hKBubah}(h]j6 ah ](jHjIeh"]h$]h&]jMjN)jOhuh1hhjT hKBhj8 hhubjQ)}(hhh]h)}(hInitialise a DRM clienth]hInitialise a DRM client}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKBhjghhubah}(h]h ]h"]h$]h&]uh1jPhj8 hhhjT hKBubeh}(h]h ](jmfunctioneh"]h$]h&]jrjmjsjjtjjujvjwuh1hhhhhhNhNubjy)}(hXC**Parameters** ``struct drm_device *dev`` DRM device ``struct drm_client_dev *client`` DRM client ``const char *name`` Client name ``const struct drm_client_funcs *funcs`` DRM client functions (optional) **Description** This initialises the client and opens a :c:type:`drm_file`. Use drm_client_register() to complete the process. The caller needs to hold a reference on **dev** before calling this function. The client is freed when the :c:type:`drm_device` is unregistered. See drm_client_release(). **Return** Zero on success or negative error code on failure.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKFhjubj)}(hhh](j)}(h&``struct drm_device *dev`` DRM device h](j)}(h``struct drm_device *dev``h]j)}(hjh]hstruct drm_device *dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKChjubj)}(hhh]h)}(h DRM deviceh]h DRM device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKChjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKChjubj)}(h-``struct drm_client_dev *client`` DRM client h](j)}(h!``struct drm_client_dev *client``h]j)}(hjh]hstruct drm_client_dev *client}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKDhjubj)}(hhh]h)}(h DRM clienth]h DRM client}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKDhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKDhjubj)}(h!``const char *name`` Client name h](j)}(h``const char *name``h]j)}(hjh]hconst char *name}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKEhjubj)}(hhh]h)}(h Client nameh]h Client name}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj2hKEhj3ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj2hKEhjubj)}(hI``const struct drm_client_funcs *funcs`` DRM client functions (optional) h](j)}(h(``const struct drm_client_funcs *funcs``h]j)}(hjVh]h$const struct drm_client_funcs *funcs}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjTubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKFhjPubj)}(hhh]h)}(hDRM client functions (optional)h]hDRM client functions (optional)}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hhjkhKFhjlubah}(h]h ]h"]h$]h&]uh1jhjPubeh}(h]h ]h"]h$]h&]uh1jhjkhKFhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKHhjubh)}(hXThis initialises the client and opens a :c:type:`drm_file`. Use drm_client_register() to complete the process. The caller needs to hold a reference on **dev** before calling this function. The client is freed when the :c:type:`drm_device` is unregistered. See drm_client_release().h](h(This initialises the client and opens a }(hjhhhNhNubh)}(h:c:type:`drm_file`h]j)}(hjh]hdrm_file}(hjhhhNhNubah}(h]h ](jjmc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjmreftypetype refexplicitrefwarnjjjdrm_fileuh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKGhjubh]. Use drm_client_register() to complete the process. The caller needs to hold a reference on }(hjhhhNhNubj)}(h**dev**h]hdev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh< before calling this function. The client is freed when the }(hjhhhNhNubh)}(h:c:type:`drm_device`h]j)}(hjh]h drm_device}(hjhhhNhNubah}(h]h ](jjmc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjmreftypetype refexplicitrefwarnjjj drm_deviceuh1hhjhKGhjubh+ is unregistered. See drm_client_release().}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKGhjubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKLhjubh)}(h2Zero on success or negative error code on failure.h]h2Zero on success or negative error code on failure.}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h drm_client_register (C function)c.drm_client_registerhNtauh1hhhhhhNhNubh)}(hhh](h)}(h8void drm_client_register (struct drm_client_dev *client)h]h)}(h7void drm_client_register(struct drm_client_dev *client)h](jD )}(hvoidh]hvoid}(hjUhhhNhNubah}(h]h ]jP ah"]h$]h&]uh1jC hjQhhh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKoubj )}(h h]h }(hjdhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjQhhhjchKoubj)}(hdrm_client_registerh]j#)}(hdrm_client_registerh]hdrm_client_register}(hjvhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjrubah}(h]h ](j5j6eh"]h$]h&]j:j;uh1jhjQhhhjchKoubj| )}(h(struct drm_client_dev *client)h]j )}(hstruct drm_client_dev *clienth](h)}(hhh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubh)}(hhh]j#)}(hdrm_client_devh]hdrm_client_dev}(hjhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjubah}(h]h ]h"]h$]h&] refdomainjmreftypej reftargetjmodnameN classnameNjj)}j]j )}j jxsbc.drm_client_registerasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj )}(hj h]h*}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj#)}(hclienth]hclient}(hjhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjubeh}(h]h ]h"]h$]h&]noemphj:j;uh1j hjubah}(h]h ]h"]h$]h&]j:j;uh1j{ hjQhhhjchKoubeh}(h]h ]h"]h$]h&]j:j;jBuh1hjCjDhjMhhhjchKoubah}(h]jHah ](jHjIeh"]h$]h&]jMjN)jOhuh1hhjchKohjJhhubjQ)}(hhh]h)}(hRegister clienth]hRegister client}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKohjhhubah}(h]h ]h"]h$]h&]uh1jPhjJhhhjchKoubeh}(h]h ](jmfunctioneh"]h$]h&]jrjmjsj-jtj-jujvjwuh1hhhhhhNhNubjy)}(hXs**Parameters** ``struct drm_client_dev *client`` DRM client **Description** Add the client to the :c:type:`drm_device` client list to activate its callbacks. **client** must be initialized by a call to drm_client_init(). After drm_client_register() it is no longer permissible to call drm_client_release() directly (outside the unregister callback), instead cleanup will happen automatically on driver unload. Registering a client generates a hotplug event that allows the client to set up its display from pre-existing outputs. The client must have initialized its state to able to handle the hotplug event successfully.h](h)}(h**Parameters**h]j)}(hj7h]h Parameters}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKshj1ubj)}(hhh]j)}(h-``struct drm_client_dev *client`` DRM client h](j)}(h!``struct drm_client_dev *client``h]j)}(hjVh]hstruct drm_client_dev *client}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjTubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKphjPubj)}(hhh]h)}(h DRM clienth]h DRM client}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hhjkhKphjlubah}(h]h ]h"]h$]h&]uh1jhjPubeh}(h]h ]h"]h$]h&]uh1jhjkhKphjMubah}(h]h ]h"]h$]h&]uh1jhj1ubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKrhj1ubh)}(hXMAdd the client to the :c:type:`drm_device` client list to activate its callbacks. **client** must be initialized by a call to drm_client_init(). After drm_client_register() it is no longer permissible to call drm_client_release() directly (outside the unregister callback), instead cleanup will happen automatically on driver unload.h](hAdd the client to the }(hjhhhNhNubh)}(h:c:type:`drm_device`h]j)}(hjh]h drm_device}(hjhhhNhNubah}(h]h ](jjmc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjmreftypetype refexplicitrefwarnjjj drm_deviceuh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKqhjubh( client list to activate its callbacks. }(hjhhhNhNubj)}(h **client**h]hclient}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh must be initialized by a call to drm_client_init(). After drm_client_register() it is no longer permissible to call drm_client_release() directly (outside the unregister callback), instead cleanup will happen automatically on driver unload.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKqhj1ubh)}(hRegistering a client generates a hotplug event that allows the client to set up its display from pre-existing outputs. The client must have initialized its state to able to handle the hotplug event successfully.h]hRegistering a client generates a hotplug event that allows the client to set up its display from pre-existing outputs. The client must have initialized its state to able to handle the hotplug event successfully.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKwhj1ubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hdrm_client_release (C function)c.drm_client_releasehNtauh1hhhhhhNhNubh)}(hhh](h)}(h7void drm_client_release (struct drm_client_dev *client)h]h)}(h6void drm_client_release(struct drm_client_dev *client)h](jD )}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jP ah"]h$]h&]uh1jC hjhhh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKubj )}(h h]h }(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjhhhj(hKubj)}(hdrm_client_releaseh]j#)}(hdrm_client_releaseh]hdrm_client_release}(hj;hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj7ubah}(h]h ](j5j6eh"]h$]h&]j:j;uh1jhjhhhj(hKubj| )}(h(struct drm_client_dev *client)h]j )}(hstruct drm_client_dev *clienth](h)}(hhh]hstruct}(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1hhjSubj )}(h h]h }(hjdhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjSubh)}(hhh]j#)}(hdrm_client_devh]hdrm_client_dev}(hjuhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjrubah}(h]h ]h"]h$]h&] refdomainjmreftypej reftargetjwmodnameN classnameNjj)}j]j )}j j=sbc.drm_client_releaseasbuh1hhjSubj )}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjSubj )}(hj h]h*}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjSubj#)}(hclienth]hclient}(hjhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjSubeh}(h]h ]h"]h$]h&]noemphj:j;uh1j hjOubah}(h]h ]h"]h$]h&]j:j;uh1j{ hjhhhj(hKubeh}(h]h ]h"]h$]h&]j:j;jBuh1hjCjDhjhhhj(hKubah}(h]j ah ](jHjIeh"]h$]h&]jMjN)jOhuh1hhj(hKhjhhubjQ)}(hhh]h)}(hRelease DRM client resourcesh]hRelease DRM client resources}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKhjhhubah}(h]h ]h"]h$]h&]uh1jPhjhhhj(hKubeh}(h]h ](jmfunctioneh"]h$]h&]jrjmjsjjtjjujvjwuh1hhhhhhNhNubjy)}(hX^**Parameters** ``struct drm_client_dev *client`` DRM client **Description** Releases resources by closing the :c:type:`drm_file` that was opened by drm_client_init(). It is called automatically if the :c:type:`drm_client_funcs.unregister ` callback is _not_ set. This function should only be called from the unregister callback. An exception is fbdev which cannot free the buffer if userspace has open file descriptors. **Note** Clients cannot initiate a release by themselves. This is done to keep the code simple. The driver has to be unloaded before the client can be unloaded.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKhjubj)}(hhh]j)}(h-``struct drm_client_dev *client`` DRM client h](j)}(h!``struct drm_client_dev *client``h]j)}(hjh]hstruct drm_client_dev *client}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKhjubj)}(hhh]h)}(h DRM clienth]h DRM client}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj0hKhj1ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj0hKhjubah}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjVh]h Description}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjTubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKhjubh)}(hReleases resources by closing the :c:type:`drm_file` that was opened by drm_client_init(). It is called automatically if the :c:type:`drm_client_funcs.unregister ` callback is _not_ set.h](h"Releases resources by closing the }(hjlhhhNhNubh)}(h:c:type:`drm_file`h]j)}(hjvh]hdrm_file}(hjxhhhNhNubah}(h]h ](jjmc-typeeh"]h$]h&]uh1jhjtubah}(h]h ]h"]h$]h&]refdocj refdomainjmreftypetype refexplicitrefwarnjjjdrm_fileuh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKhjlubhI that was opened by drm_client_init(). It is called automatically if the }(hjlhhhNhNubh)}(h8:c:type:`drm_client_funcs.unregister `h]j)}(hjh]hdrm_client_funcs.unregister}(hjhhhNhNubah}(h]h ](jjmc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjmreftypetype refexplicitrefwarnjjjdrm_client_funcsuh1hhjhKhjlubh callback is _not_ set.}(hjlhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubh)}(hThis function should only be called from the unregister callback. An exception is fbdev which cannot free the buffer if userspace has open file descriptors.h]hThis function should only be called from the unregister callback. An exception is fbdev which cannot free the buffer if userspace has open file descriptors.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKhjubh)}(h**Note**h]j)}(hjh]hNote}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKhjubh)}(hClients cannot initiate a release by themselves. This is done to keep the code simple. The driver has to be unloaded before the client can be unloaded.h]hClients cannot initiate a release by themselves. This is done to keep the code simple. The driver has to be unloaded before the client can be unloaded.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h%drm_client_buffer_delete (C function)c.drm_client_buffer_deletehNtauh1hhhhhhNhNubh)}(hhh](h)}(h@void drm_client_buffer_delete (struct drm_client_buffer *buffer)h]h)}(h?void drm_client_buffer_delete(struct drm_client_buffer *buffer)h](jD )}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jP ah"]h$]h&]uh1jC hjhhh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKubj )}(h h]h }(hj&hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjhhhj%hKubj)}(hdrm_client_buffer_deleteh]j#)}(hdrm_client_buffer_deleteh]hdrm_client_buffer_delete}(hj8hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj4ubah}(h]h ](j5j6eh"]h$]h&]j:j;uh1jhjhhhj%hKubj| )}(h"(struct drm_client_buffer *buffer)h]j )}(h struct drm_client_buffer *bufferh](h)}(hhh]hstruct}(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1hhjPubj )}(h h]h }(hjahhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjPubh)}(hhh]j#)}(hdrm_client_bufferh]hdrm_client_buffer}(hjrhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjoubah}(h]h ]h"]h$]h&] refdomainjmreftypej reftargetjtmodnameN classnameNjj)}j]j )}j j:sbc.drm_client_buffer_deleteasbuh1hhjPubj )}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjPubj )}(hj h]h*}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjPubj#)}(hbufferh]hbuffer}(hjhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjPubeh}(h]h ]h"]h$]h&]noemphj:j;uh1j hjLubah}(h]h ]h"]h$]h&]j:j;uh1j{ hjhhhj%hKubeh}(h]h ]h"]h$]h&]j:j;jBuh1hjCjDhjhhhj%hKubah}(h]j ah ](jHjIeh"]h$]h&]jMjN)jOhuh1hhj%hKhj hhubjQ)}(hhh]h)}(hDelete a client bufferh]hDelete a client buffer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKhjhhubah}(h]h ]h"]h$]h&]uh1jPhj hhhj%hKubeh}(h]h ](jmfunctioneh"]h$]h&]jrjmjsjjtjjujvjwuh1hhhhhhNhNubjy)}(hH**Parameters** ``struct drm_client_buffer *buffer`` DRM client bufferh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKhjubj)}(hhh]j)}(h6``struct drm_client_buffer *buffer`` DRM client bufferh](j)}(h$``struct drm_client_buffer *buffer``h]j)}(hjh]h struct drm_client_buffer *buffer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKhjubj)}(hhh]h)}(hDRM client bufferh]hDRM client buffer}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKhj.ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj-hKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h)drm_client_buffer_vmap_local (C function)c.drm_client_buffer_vmap_localhNtauh1hhhhhhNhNubh)}(hhh](h)}(h_int drm_client_buffer_vmap_local (struct drm_client_buffer *buffer, struct iosys_map *map_copy)h]h)}(h^int drm_client_buffer_vmap_local(struct drm_client_buffer *buffer, struct iosys_map *map_copy)h](jD )}(hinth]hint}(hjrhhhNhNubah}(h]h ]jP ah"]h$]h&]uh1jC hjnhhh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMubj )}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjnhhhjhMubj)}(hdrm_client_buffer_vmap_localh]j#)}(hdrm_client_buffer_vmap_localh]hdrm_client_buffer_vmap_local}(hjhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjubah}(h]h ](j5j6eh"]h$]h&]j:j;uh1jhjnhhhjhMubj| )}(h>(struct drm_client_buffer *buffer, struct iosys_map *map_copy)h](j )}(h struct drm_client_buffer *bufferh](h)}(hhh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubh)}(hhh]j#)}(hdrm_client_bufferh]hdrm_client_buffer}(hjhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjubah}(h]h ]h"]h$]h&] refdomainjmreftypej reftargetjmodnameN classnameNjj)}j]j )}j jsbc.drm_client_buffer_vmap_localasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj )}(hj h]h*}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj#)}(hbufferh]hbuffer}(hjhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjubeh}(h]h ]h"]h$]h&]noemphj:j;uh1j hjubj )}(hstruct iosys_map *map_copyh](h)}(hhh]hstruct}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1hhjubj )}(h h]h }(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubh)}(hhh]j#)}(h iosys_maph]h iosys_map}(hj?hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj<ubah}(h]h ]h"]h$]h&] refdomainjmreftypej reftargetjAmodnameN classnameNjj)}j]jc.drm_client_buffer_vmap_localasbuh1hhjubj )}(h h]h }(hj]hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj )}(hj h]h*}(hjkhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj#)}(hmap_copyh]hmap_copy}(hjxhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjubeh}(h]h ]h"]h$]h&]noemphj:j;uh1j hjubeh}(h]h ]h"]h$]h&]j:j;uh1j{ hjnhhhjhMubeh}(h]h ]h"]h$]h&]j:j;jBuh1hjCjDhjjhhhjhMubah}(h]jeah ](jHjIeh"]h$]h&]jMjN)jOhuh1hhjhMhjghhubjQ)}(hhh]h)}(h(Map DRM client buffer into address spaceh]h(Map DRM client buffer into address space}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMhjhhubah}(h]h ]h"]h$]h&]uh1jPhjghhhjhMubeh}(h]h ](jmfunctioneh"]h$]h&]jrjmjsjjtjjujvjwuh1hhhhhhNhNubjy)}(hX**Parameters** ``struct drm_client_buffer *buffer`` DRM client buffer ``struct iosys_map *map_copy`` Returns the mapped memory's address **Description** This function maps a client buffer into kernel address space. If the buffer is already mapped, it returns the existing mapping's address. Client buffer mappings are not ref'counted. Each call to drm_client_buffer_vmap_local() should be closely followed by a call to drm_client_buffer_vunmap_local(). See drm_client_buffer_vmap() for long-term mappings. The returned address is a copy of the internal value. In contrast to other vmap interfaces, you don't need it for the client's vunmap function. So you can modify it at will during blit and draw operations. **Return** 0 on success, or a negative errno code otherwise.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMhjubj)}(hhh](j)}(h7``struct drm_client_buffer *buffer`` DRM client buffer h](j)}(h$``struct drm_client_buffer *buffer``h]j)}(hjh]h struct drm_client_buffer *buffer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMhjubj)}(hhh]h)}(hDRM client bufferh]hDRM client buffer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(hC``struct iosys_map *map_copy`` Returns the mapped memory's address h](j)}(h``struct iosys_map *map_copy``h]j)}(hjh]hstruct iosys_map *map_copy}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMhjubj)}(hhh]h)}(h#Returns the mapped memory's addressh]h%Returns the mapped memory’s address}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj1hMhj2ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj1hMhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjWh]h Description}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMhjubh)}(hThis function maps a client buffer into kernel address space. If the buffer is already mapped, it returns the existing mapping's address.h]hThis function maps a client buffer into kernel address space. If the buffer is already mapped, it returns the existing mapping’s address.}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMhjubh)}(hClient buffer mappings are not ref'counted. Each call to drm_client_buffer_vmap_local() should be closely followed by a call to drm_client_buffer_vunmap_local(). See drm_client_buffer_vmap() for long-term mappings.h]hClient buffer mappings are not ref’counted. Each call to drm_client_buffer_vmap_local() should be closely followed by a call to drm_client_buffer_vunmap_local(). See drm_client_buffer_vmap() for long-term mappings.}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMhjubh)}(hThe returned address is a copy of the internal value. In contrast to other vmap interfaces, you don't need it for the client's vunmap function. So you can modify it at will during blit and draw operations.h]hThe returned address is a copy of the internal value. In contrast to other vmap interfaces, you don’t need it for the client’s vunmap function. So you can modify it at will during blit and draw operations.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMhjubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMhjubh)}(h10 on success, or a negative errno code otherwise.h]h10 on success, or a negative errno code otherwise.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h+drm_client_buffer_vunmap_local (C function) c.drm_client_buffer_vunmap_localhNtauh1hhhhhhNhNubh)}(hhh](h)}(hFvoid drm_client_buffer_vunmap_local (struct drm_client_buffer *buffer)h]h)}(hEvoid drm_client_buffer_vunmap_local(struct drm_client_buffer *buffer)h](jD )}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jP ah"]h$]h&]uh1jC hjhhh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chM8ubj )}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjhhhjhM8ubj)}(hdrm_client_buffer_vunmap_localh]j#)}(hdrm_client_buffer_vunmap_localh]hdrm_client_buffer_vunmap_local}(hjhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjubah}(h]h ](j5j6eh"]h$]h&]j:j;uh1jhjhhhjhM8ubj| )}(h"(struct drm_client_buffer *buffer)h]j )}(h struct drm_client_buffer *bufferh](h)}(hhh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1hhjubj )}(h h]h }(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubh)}(hhh]j#)}(hdrm_client_bufferh]hdrm_client_buffer}(hj<hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj9ubah}(h]h ]h"]h$]h&] refdomainjmreftypej reftargetj>modnameN classnameNjj)}j]j )}j jsb c.drm_client_buffer_vunmap_localasbuh1hhjubj )}(h h]h }(hj\hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj )}(hj h]h*}(hjjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj#)}(hbufferh]hbuffer}(hjwhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjubeh}(h]h ]h"]h$]h&]noemphj:j;uh1j hjubah}(h]h ]h"]h$]h&]j:j;uh1j{ hjhhhjhM8ubeh}(h]h ]h"]h$]h&]j:j;jBuh1hjCjDhjhhhjhM8ubah}(h]jah ](jHjIeh"]h$]h&]jMjN)jOhuh1hhjhM8hjhhubjQ)}(hhh]h)}(hUnmap DRM client bufferh]hUnmap DRM client buffer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chM8hjhhubah}(h]h ]h"]h$]h&]uh1jPhjhhhjhM8ubeh}(h]h ](jmfunctioneh"]h$]h&]jrjmjsjjtjjujvjwuh1hhhhhhNhNubjy)}(hX'**Parameters** ``struct drm_client_buffer *buffer`` DRM client buffer **Description** This function removes a client buffer's memory mapping established with drm_client_buffer_vunmap_local(). Calling this function is only required by clients that manage their buffer mappings by themselves.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chM<hjubj)}(hhh]j)}(h7``struct drm_client_buffer *buffer`` DRM client buffer h](j)}(h$``struct drm_client_buffer *buffer``h]j)}(hjh]h struct drm_client_buffer *buffer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chM9hjubj)}(hhh]h)}(hDRM client bufferh]hDRM client buffer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM9hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM9hjubah}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chM;hjubh)}(hThis function removes a client buffer's memory mapping established with drm_client_buffer_vunmap_local(). Calling this function is only required by clients that manage their buffer mappings by themselves.h]hThis function removes a client buffer’s memory mapping established with drm_client_buffer_vunmap_local(). Calling this function is only required by clients that manage their buffer mappings by themselves.}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chM:hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h#drm_client_buffer_vmap (C function)c.drm_client_buffer_vmaphNtauh1hhhhhhNhNubh)}(hhh](h)}(hYint drm_client_buffer_vmap (struct drm_client_buffer *buffer, struct iosys_map *map_copy)h]h)}(hXint drm_client_buffer_vmap(struct drm_client_buffer *buffer, struct iosys_map *map_copy)h](jD )}(hinth]hint}(hjbhhhNhNubah}(h]h ]jP ah"]h$]h&]uh1jC hj^hhh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMJubj )}(h h]h }(hjqhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj^hhhjphMJubj)}(hdrm_client_buffer_vmaph]j#)}(hdrm_client_buffer_vmaph]hdrm_client_buffer_vmap}(hjhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjubah}(h]h ](j5j6eh"]h$]h&]j:j;uh1jhj^hhhjphMJubj| )}(h>(struct drm_client_buffer *buffer, struct iosys_map *map_copy)h](j )}(h struct drm_client_buffer *bufferh](h)}(hhh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubh)}(hhh]j#)}(hdrm_client_bufferh]hdrm_client_buffer}(hjhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjubah}(h]h ]h"]h$]h&] refdomainjmreftypej reftargetjmodnameN classnameNjj)}j]j )}j jsbc.drm_client_buffer_vmapasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj )}(hj h]h*}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj#)}(hbufferh]hbuffer}(hjhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjubeh}(h]h ]h"]h$]h&]noemphj:j;uh1j hjubj )}(hstruct iosys_map *map_copyh](h)}(hhh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1hhj ubj )}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj ubh)}(hhh]j#)}(h iosys_maph]h iosys_map}(hj/hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj,ubah}(h]h ]h"]h$]h&] refdomainjmreftypej reftargetj1modnameN classnameNjj)}j]jc.drm_client_buffer_vmapasbuh1hhj ubj )}(h h]h }(hjMhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj ubj )}(hj h]h*}(hj[hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ubj#)}(hmap_copyh]hmap_copy}(hjhhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj ubeh}(h]h ]h"]h$]h&]noemphj:j;uh1j hjubeh}(h]h ]h"]h$]h&]j:j;uh1j{ hj^hhhjphMJubeh}(h]h ]h"]h$]h&]j:j;jBuh1hjCjDhjZhhhjphMJubah}(h]jUah ](jHjIeh"]h$]h&]jMjN)jOhuh1hhjphMJhjWhhubjQ)}(hhh]h)}(h(Map DRM client buffer into address spaceh]h(Map DRM client buffer into address space}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMJhjhhubah}(h]h ]h"]h$]h&]uh1jPhjWhhhjphMJubeh}(h]h ](jmfunctioneh"]h$]h&]jrjmjsjjtjjujvjwuh1hhhhhhNhNubjy)}(hX**Parameters** ``struct drm_client_buffer *buffer`` DRM client buffer ``struct iosys_map *map_copy`` Returns the mapped memory's address **Description** This function maps a client buffer into kernel address space. If the buffer is already mapped, it returns the existing mapping's address. Client buffer mappings are not ref'counted. Each call to drm_client_buffer_vmap() should be followed by a call to drm_client_buffer_vunmap(); or the client buffer should be mapped throughout its lifetime. The returned address is a copy of the internal value. In contrast to other vmap interfaces, you don't need it for the client's vunmap function. So you can modify it at will during blit and draw operations. **Return** 0 on success, or a negative errno code otherwise.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMNhjubj)}(hhh](j)}(h7``struct drm_client_buffer *buffer`` DRM client buffer h](j)}(h$``struct drm_client_buffer *buffer``h]j)}(hjh]h struct drm_client_buffer *buffer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMKhjubj)}(hhh]h)}(hDRM client bufferh]hDRM client buffer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMKhjubj)}(hC``struct iosys_map *map_copy`` Returns the mapped memory's address h](j)}(h``struct iosys_map *map_copy``h]j)}(hj h]hstruct iosys_map *map_copy}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMLhjubj)}(hhh]h)}(h#Returns the mapped memory's addressh]h%Returns the mapped memory’s address}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj!hMLhj"ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj!hMLhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjGh]h Description}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMNhjubh)}(hThis function maps a client buffer into kernel address space. If the buffer is already mapped, it returns the existing mapping's address.h]hThis function maps a client buffer into kernel address space. If the buffer is already mapped, it returns the existing mapping’s address.}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMMhjubh)}(hClient buffer mappings are not ref'counted. Each call to drm_client_buffer_vmap() should be followed by a call to drm_client_buffer_vunmap(); or the client buffer should be mapped throughout its lifetime.h]hClient buffer mappings are not ref’counted. Each call to drm_client_buffer_vmap() should be followed by a call to drm_client_buffer_vunmap(); or the client buffer should be mapped throughout its lifetime.}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMPhjubh)}(hThe returned address is a copy of the internal value. In contrast to other vmap interfaces, you don't need it for the client's vunmap function. So you can modify it at will during blit and draw operations.h]hThe returned address is a copy of the internal value. In contrast to other vmap interfaces, you don’t need it for the client’s vunmap function. So you can modify it at will during blit and draw operations.}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMUhjubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMYhjubh)}(h10 on success, or a negative errno code otherwise.h]h10 on success, or a negative errno code otherwise.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMZhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h%drm_client_buffer_vunmap (C function)c.drm_client_buffer_vunmaphNtauh1hhhhhhNhNubh)}(hhh](h)}(h@void drm_client_buffer_vunmap (struct drm_client_buffer *buffer)h]h)}(h?void drm_client_buffer_vunmap(struct drm_client_buffer *buffer)h](jD )}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jP ah"]h$]h&]uh1jC hjhhh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMmubj )}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjhhhjhMmubj)}(hdrm_client_buffer_vunmaph]j#)}(hdrm_client_buffer_vunmaph]hdrm_client_buffer_vunmap}(hjhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjubah}(h]h ](j5j6eh"]h$]h&]j:j;uh1jhjhhhjhMmubj| )}(h"(struct drm_client_buffer *buffer)h]j )}(h struct drm_client_buffer *bufferh](h)}(hhh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1hhj ubj )}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj ubh)}(hhh]j#)}(hdrm_client_bufferh]hdrm_client_buffer}(hj,hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj)ubah}(h]h ]h"]h$]h&] refdomainjmreftypej reftargetj.modnameN classnameNjj)}j]j )}j jsbc.drm_client_buffer_vunmapasbuh1hhj ubj )}(h h]h }(hjLhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj ubj )}(hj h]h*}(hjZhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ubj#)}(hbufferh]hbuffer}(hjghhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj ubeh}(h]h ]h"]h$]h&]noemphj:j;uh1j hjubah}(h]h ]h"]h$]h&]j:j;uh1j{ hjhhhjhMmubeh}(h]h ]h"]h$]h&]j:j;jBuh1hjCjDhjhhhjhMmubah}(h]jah ](jHjIeh"]h$]h&]jMjN)jOhuh1hhjhMmhjhhubjQ)}(hhh]h)}(hUnmap DRM client bufferh]hUnmap DRM client buffer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMmhjhhubah}(h]h ]h"]h$]h&]uh1jPhjhhhjhMmubeh}(h]h ](jmfunctioneh"]h$]h&]jrjmjsjjtjjujvjwuh1hhhhhhNhNubjy)}(h**Parameters** ``struct drm_client_buffer *buffer`` DRM client buffer **Description** This function removes a client buffer's memory mapping. Calling this function is only required by clients that manage their buffer mappings by themselves.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMqhjubj)}(hhh]j)}(h7``struct drm_client_buffer *buffer`` DRM client buffer h](j)}(h$``struct drm_client_buffer *buffer``h]j)}(hjh]h struct drm_client_buffer *buffer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMnhjubj)}(hhh]h)}(hDRM client bufferh]hDRM client buffer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMnhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMnhjubah}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hj h]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMphjubh)}(hThis function removes a client buffer's memory mapping. Calling this function is only required by clients that manage their buffer mappings by themselves.h]hThis function removes a client buffer’s memory mapping. Calling this function is only required by clients that manage their buffer mappings by themselves.}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMohjubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h*drm_client_buffer_create_dumb (C function)c.drm_client_buffer_create_dumbhNtauh1hhhhhhNhNubh)}(hhh](h)}(h{struct drm_client_buffer * drm_client_buffer_create_dumb (struct drm_client_dev *client, u32 width, u32 height, u32 format)h]h)}(hystruct drm_client_buffer *drm_client_buffer_create_dumb(struct drm_client_dev *client, u32 width, u32 height, u32 format)h](h)}(hhh]hstruct}(hjRhhhNhNubah}(h]h ]jah"]h$]h&]uh1hhjNhhh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chM}ubj )}(h h]h }(hj`hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjNhhhj_hM}ubh)}(hhh]j#)}(hdrm_client_bufferh]hdrm_client_buffer}(hjqhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjnubah}(h]h ]h"]h$]h&] refdomainjmreftypej reftargetjsmodnameN classnameNjj)}j]j )}j drm_client_buffer_create_dumbsbc.drm_client_buffer_create_dumbasbuh1hhjNhhhj_hM}ubj )}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjNhhhj_hM}ubj )}(hj h]h*}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjNhhhj_hM}ubj)}(hdrm_client_buffer_create_dumbh]j#)}(hjh]hdrm_client_buffer_create_dumb}(hjhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjubah}(h]h ](j5j6eh"]h$]h&]j:j;uh1jhjNhhhj_hM}ubj| )}(hB(struct drm_client_dev *client, u32 width, u32 height, u32 format)h](j )}(hstruct drm_client_dev *clienth](h)}(hhh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubh)}(hhh]j#)}(hdrm_client_devh]hdrm_client_dev}(hjhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjubah}(h]h ]h"]h$]h&] refdomainjmreftypej reftargetjmodnameN classnameNjj)}j]jc.drm_client_buffer_create_dumbasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj )}(hj h]h*}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj#)}(hclienth]hclient}(hj#hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjubeh}(h]h ]h"]h$]h&]noemphj:j;uh1j hjubj )}(h u32 widthh](h)}(hhh]j#)}(hu32h]hu32}(hj?hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj<ubah}(h]h ]h"]h$]h&] refdomainjmreftypej reftargetjAmodnameN classnameNjj)}j]jc.drm_client_buffer_create_dumbasbuh1hhj8ubj )}(h h]h }(hj]hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj8ubj#)}(hwidthh]hwidth}(hjkhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj8ubeh}(h]h ]h"]h$]h&]noemphj:j;uh1j hjubj )}(h u32 heighth](h)}(hhh]j#)}(hu32h]hu32}(hjhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjubah}(h]h ]h"]h$]h&] refdomainjmreftypej reftargetjmodnameN classnameNjj)}j]jc.drm_client_buffer_create_dumbasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj#)}(hheighth]hheight}(hjhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjubeh}(h]h ]h"]h$]h&]noemphj:j;uh1j hjubj )}(h u32 formath](h)}(hhh]j#)}(hu32h]hu32}(hjhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjubah}(h]h ]h"]h$]h&] refdomainjmreftypej reftargetjmodnameN classnameNjj)}j]jc.drm_client_buffer_create_dumbasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj#)}(hformath]hformat}(hjhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjubeh}(h]h ]h"]h$]h&]noemphj:j;uh1j hjubeh}(h]h ]h"]h$]h&]j:j;uh1j{ hjNhhhj_hM}ubeh}(h]h ]h"]h$]h&]j:j;jBuh1hjCjDhjJhhhj_hM}ubah}(h]jEah ](jHjIeh"]h$]h&]jMjN)jOhuh1hhj_hM}hjGhhubjQ)}(hhh]h)}(h.Create a client buffer backed by a dumb bufferh]h.Create a client buffer backed by a dumb buffer}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chM}hj"hhubah}(h]h ]h"]h$]h&]uh1jPhjGhhhj_hM}ubeh}(h]h ](jmfunctioneh"]h$]h&]jrjmjsj=jtj=jujvjwuh1hhhhhhNhNubjy)}(hX**Parameters** ``struct drm_client_dev *client`` DRM client ``u32 width`` Framebuffer width ``u32 height`` Framebuffer height ``u32 format`` Buffer format **Description** This function creates a :c:type:`drm_client_buffer` which consists of a :c:type:`drm_framebuffer` backed by a dumb buffer. Call drm_client_buffer_delete() to free the buffer. **Return** Pointer to a client buffer or an error pointer on failure.h](h)}(h**Parameters**h]j)}(hjGh]h Parameters}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMhjAubj)}(hhh](j)}(h-``struct drm_client_dev *client`` DRM client h](j)}(h!``struct drm_client_dev *client``h]j)}(hjfh]hstruct drm_client_dev *client}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjdubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chM~hj`ubj)}(hhh]h)}(h DRM clienth]h DRM client}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj{hM~hj|ubah}(h]h ]h"]h$]h&]uh1jhj`ubeh}(h]h ]h"]h$]h&]uh1jhj{hM~hj]ubj)}(h ``u32 width`` Framebuffer width h](j)}(h ``u32 width``h]j)}(hjh]h u32 width}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMhjubj)}(hhh]h)}(hFramebuffer widthh]hFramebuffer width}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhj]ubj)}(h"``u32 height`` Framebuffer height h](j)}(h``u32 height``h]j)}(hjh]h u32 height}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMhjubj)}(hhh]h)}(hFramebuffer heighth]hFramebuffer height}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhj]ubj)}(h``u32 format`` Buffer format h](j)}(h``u32 format``h]j)}(hj h]h u32 format}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMhj ubj)}(hhh]h)}(h Buffer formath]h Buffer format}(hj* hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj& hMhj' ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj& hMhj]ubeh}(h]h ]h"]h$]h&]uh1jhjAubh)}(h**Description**h]j)}(hjL h]h Description}(hjN hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJ ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMhjAubh)}(hThis function creates a :c:type:`drm_client_buffer` which consists of a :c:type:`drm_framebuffer` backed by a dumb buffer. Call drm_client_buffer_delete() to free the buffer.h](hThis function creates a }(hjb hhhNhNubh)}(h:c:type:`drm_client_buffer`h]j)}(hjl h]hdrm_client_buffer}(hjn hhhNhNubah}(h]h ](jjmc-typeeh"]h$]h&]uh1jhjj ubah}(h]h ]h"]h$]h&]refdocj refdomainjmreftypetype refexplicitrefwarnjjjdrm_client_bufferuh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMhjb ubh which consists of a }(hjb hhhNhNubh)}(h:c:type:`drm_framebuffer`h]j)}(hj h]hdrm_framebuffer}(hj hhhNhNubah}(h]h ](jjmc-typeeh"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]refdocj refdomainjmreftypetype refexplicitrefwarnjjjdrm_framebufferuh1hhj hMhjb ubhM backed by a dumb buffer. Call drm_client_buffer_delete() to free the buffer.}(hjb hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj hMhjAubh)}(h **Return**h]j)}(hj h]hReturn}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMhjAubh)}(h:Pointer to a client buffer or an error pointer on failure.h]h:Pointer to a client buffer or an error pointer on failure.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMhjAubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h$drm_client_buffer_flush (C function)c.drm_client_buffer_flushhNtauh1hhhhhhNhNubh)}(hhh](h)}(hUint drm_client_buffer_flush (struct drm_client_buffer *buffer, struct drm_rect *rect)h]h)}(hTint drm_client_buffer_flush(struct drm_client_buffer *buffer, struct drm_rect *rect)h](jD )}(hinth]hint}(hj hhhNhNubah}(h]h ]jP ah"]h$]h&]uh1jC hj hhh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMubj )}(h h]h }(hj !hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj hhhj !hMubj)}(hdrm_client_buffer_flushh]j#)}(hdrm_client_buffer_flushh]hdrm_client_buffer_flush}(hj!hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj!ubah}(h]h ](j5j6eh"]h$]h&]j:j;uh1jhj hhhj !hMubj| )}(h9(struct drm_client_buffer *buffer, struct drm_rect *rect)h](j )}(h struct drm_client_buffer *bufferh](h)}(hhh]hstruct}(hj;!hhhNhNubah}(h]h ]jah"]h$]h&]uh1hhj7!ubj )}(h h]h }(hjH!hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj7!ubh)}(hhh]j#)}(hdrm_client_bufferh]hdrm_client_buffer}(hjY!hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjV!ubah}(h]h ]h"]h$]h&] refdomainjmreftypej reftargetj[!modnameN classnameNjj)}j]j )}j j!!sbc.drm_client_buffer_flushasbuh1hhj7!ubj )}(h h]h }(hjy!hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj7!ubj )}(hj h]h*}(hj!hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj7!ubj#)}(hbufferh]hbuffer}(hj!hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj7!ubeh}(h]h ]h"]h$]h&]noemphj:j;uh1j hj3!ubj )}(hstruct drm_rect *recth](h)}(hhh]hstruct}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1hhj!ubj )}(h h]h }(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj!ubh)}(hhh]j#)}(hdrm_recth]hdrm_rect}(hj!hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj!ubah}(h]h ]h"]h$]h&] refdomainjmreftypej reftargetj!modnameN classnameNjj)}j]ju!c.drm_client_buffer_flushasbuh1hhj!ubj )}(h h]h }(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj!ubj )}(hj h]h*}(hj!hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj!ubj#)}(hrecth]hrect}(hj"hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj!ubeh}(h]h ]h"]h$]h&]noemphj:j;uh1j hj3!ubeh}(h]h ]h"]h$]h&]j:j;uh1j{ hj hhhj !hMubeh}(h]h ]h"]h$]h&]j:j;jBuh1hjCjDhj hhhj !hMubah}(h]j ah ](jHjIeh"]h$]h&]jMjN)jOhuh1hhj !hMhj hhubjQ)}(hhh]h)}(hManually flush client bufferh]hManually flush client buffer}(hj."hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMhj+"hhubah}(h]h ]h"]h$]h&]uh1jPhj hhhj !hMubeh}(h]h ](jmfunctioneh"]h$]h&]jrjmjsjF"jtjF"jujvjwuh1hhhhhhNhNubjy)}(hXg**Parameters** ``struct drm_client_buffer *buffer`` DRM client buffer ``struct drm_rect *rect`` Damage rectangle (if NULL flushes all) **Description** This calls :c:type:`drm_framebuffer_funcs->dirty ` (if present) to flush buffer changes for drivers that need it. **Return** Zero on success or negative error code on failure.h](h)}(h**Parameters**h]j)}(hjP"h]h Parameters}(hjR"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjN"ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMhjJ"ubj)}(hhh](j)}(h7``struct drm_client_buffer *buffer`` DRM client buffer h](j)}(h$``struct drm_client_buffer *buffer``h]j)}(hjo"h]h struct drm_client_buffer *buffer}(hjq"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjm"ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMhji"ubj)}(hhh]h)}(hDRM client bufferh]hDRM client buffer}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj"hMhj"ubah}(h]h ]h"]h$]h&]uh1jhji"ubeh}(h]h ]h"]h$]h&]uh1jhj"hMhjf"ubj)}(hA``struct drm_rect *rect`` Damage rectangle (if NULL flushes all) h](j)}(h``struct drm_rect *rect``h]j)}(hj"h]hstruct drm_rect *rect}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMhj"ubj)}(hhh]h)}(h&Damage rectangle (if NULL flushes all)h]h&Damage rectangle (if NULL flushes all)}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj"hMhj"ubah}(h]h ]h"]h$]h&]uh1jhj"ubeh}(h]h ]h"]h$]h&]uh1jhj"hMhjf"ubeh}(h]h ]h"]h$]h&]uh1jhjJ"ubh)}(h**Description**h]j)}(hj"h]h Description}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMhjJ"ubh)}(hThis calls :c:type:`drm_framebuffer_funcs->dirty ` (if present) to flush buffer changes for drivers that need it.h](h This calls }(hj"hhhNhNubh)}(h>:c:type:`drm_framebuffer_funcs->dirty `h]j)}(hj#h]hdrm_framebuffer_funcs->dirty}(hj#hhhNhNubah}(h]h ](jjmc-typeeh"]h$]h&]uh1jhj#ubah}(h]h ]h"]h$]h&]refdocj refdomainjmreftypetype refexplicitrefwarnjjjdrm_framebuffer_funcsuh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMhj"ubh? (if present) to flush buffer changes for drivers that need it.}(hj"hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj #hMhjJ"ubh)}(h **Return**h]j)}(hj-#h]hReturn}(hj/#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj+#ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMhjJ"ubh)}(h2Zero on success or negative error code on failure.h]h2Zero on success or negative error code on failure.}(hjC#hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMhjJ"ubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h%drm_client_modeset_probe (C function)c.drm_client_modeset_probehNtauh1hhhhhhNhNubh)}(hhh](h)}(heint drm_client_modeset_probe (struct drm_client_dev *client, unsigned int width, unsigned int height)h]h)}(hdint drm_client_modeset_probe(struct drm_client_dev *client, unsigned int width, unsigned int height)h](jD )}(hinth]hint}(hjr#hhhNhNubah}(h]h ]jP ah"]h$]h&]uh1jC hjn#hhhc/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:14: ./drivers/gpu/drm/drm_client_modeset.chM&ubj )}(h h]h }(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjn#hhhj#hM&ubj)}(hdrm_client_modeset_probeh]j#)}(hdrm_client_modeset_probeh]hdrm_client_modeset_probe}(hj#hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj#ubah}(h]h ](j5j6eh"]h$]h&]j:j;uh1jhjn#hhhj#hM&ubj| )}(hH(struct drm_client_dev *client, unsigned int width, unsigned int height)h](j )}(hstruct drm_client_dev *clienth](h)}(hhh]hstruct}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1hhj#ubj )}(h h]h }(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj#ubh)}(hhh]j#)}(hdrm_client_devh]hdrm_client_dev}(hj#hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj#ubah}(h]h ]h"]h$]h&] refdomainjmreftypej reftargetj#modnameN classnameNjj)}j]j )}j j#sbc.drm_client_modeset_probeasbuh1hhj#ubj )}(h h]h }(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj#ubj )}(hj h]h*}(hj#hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj#ubj#)}(hclienth]hclient}(hj$hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj#ubeh}(h]h ]h"]h$]h&]noemphj:j;uh1j hj#ubj )}(hunsigned int widthh](jD )}(hunsignedh]hunsigned}(hj!$hhhNhNubah}(h]h ]jP ah"]h$]h&]uh1jC hj$ubj )}(h h]h }(hj/$hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj$ubjD )}(hinth]hint}(hj=$hhhNhNubah}(h]h ]jP ah"]h$]h&]uh1jC hj$ubj )}(h h]h }(hjK$hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj$ubj#)}(hwidthh]hwidth}(hjY$hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj$ubeh}(h]h ]h"]h$]h&]noemphj:j;uh1j hj#ubj )}(hunsigned int heighth](jD )}(hunsignedh]hunsigned}(hjr$hhhNhNubah}(h]h ]jP ah"]h$]h&]uh1jC hjn$ubj )}(h h]h }(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjn$ubjD )}(hinth]hint}(hj$hhhNhNubah}(h]h ]jP ah"]h$]h&]uh1jC hjn$ubj )}(h h]h }(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjn$ubj#)}(hheighth]hheight}(hj$hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjn$ubeh}(h]h ]h"]h$]h&]noemphj:j;uh1j hj#ubeh}(h]h ]h"]h$]h&]j:j;uh1j{ hjn#hhhj#hM&ubeh}(h]h ]h"]h$]h&]j:j;jBuh1hjCjDhjj#hhhj#hM&ubah}(h]je#ah ](jHjIeh"]h$]h&]jMjN)jOhuh1hhj#hM&hjg#hhubjQ)}(hhh]h)}(hProbe for displaysh]hProbe for displays}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:14: ./drivers/gpu/drm/drm_client_modeset.chM&hj$hhubah}(h]h ]h"]h$]h&]uh1jPhjg#hhhj#hM&ubeh}(h]h ](jmfunctioneh"]h$]h&]jrjmjsj$jtj$jujvjwuh1hhhhhhNhNubjy)}(hX**Parameters** ``struct drm_client_dev *client`` DRM client ``unsigned int width`` Maximum display mode width (optional) ``unsigned int height`` Maximum display mode height (optional) **Description** This function sets up display pipelines for enabled connectors and stores the config in the client's modeset array. **Return** Zero on success or negative error code on failure.h](h)}(h**Parameters**h]j)}(hj$h]h Parameters}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$ubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:14: ./drivers/gpu/drm/drm_client_modeset.chM*hj$ubj)}(hhh](j)}(h-``struct drm_client_dev *client`` DRM client h](j)}(h!``struct drm_client_dev *client``h]j)}(hj%h]hstruct drm_client_dev *client}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%ubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:14: ./drivers/gpu/drm/drm_client_modeset.chM'hj%ubj)}(hhh]h)}(h DRM clienth]h DRM client}(hj.%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*%hM'hj+%ubah}(h]h ]h"]h$]h&]uh1jhj%ubeh}(h]h ]h"]h$]h&]uh1jhj*%hM'hj %ubj)}(h=``unsigned int width`` Maximum display mode width (optional) h](j)}(h``unsigned int width``h]j)}(hjN%h]hunsigned int width}(hjP%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjL%ubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:14: ./drivers/gpu/drm/drm_client_modeset.chM(hjH%ubj)}(hhh]h)}(h%Maximum display mode width (optional)h]h%Maximum display mode width (optional)}(hjg%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjc%hM(hjd%ubah}(h]h ]h"]h$]h&]uh1jhjH%ubeh}(h]h ]h"]h$]h&]uh1jhjc%hM(hj %ubj)}(h?``unsigned int height`` Maximum display mode height (optional) h](j)}(h``unsigned int height``h]j)}(hj%h]hunsigned int height}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%ubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:14: ./drivers/gpu/drm/drm_client_modeset.chM)hj%ubj)}(hhh]h)}(h&Maximum display mode height (optional)h]h&Maximum display mode height (optional)}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj%hM)hj%ubah}(h]h ]h"]h$]h&]uh1jhj%ubeh}(h]h ]h"]h$]h&]uh1jhj%hM)hj %ubeh}(h]h ]h"]h$]h&]uh1jhj$ubh)}(h**Description**h]j)}(hj%h]h Description}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%ubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:14: ./drivers/gpu/drm/drm_client_modeset.chM+hj$ubh)}(hsThis function sets up display pipelines for enabled connectors and stores the config in the client's modeset array.h]huThis function sets up display pipelines for enabled connectors and stores the config in the client’s modeset array.}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:14: ./drivers/gpu/drm/drm_client_modeset.chM*hj$ubh)}(h **Return**h]j)}(hj%h]hReturn}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%ubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:14: ./drivers/gpu/drm/drm_client_modeset.chM-hj$ubh)}(h2Zero on success or negative error code on failure.h]h2Zero on success or negative error code on failure.}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:14: ./drivers/gpu/drm/drm_client_modeset.chM.hj$ubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h drm_client_rotation (C function)c.drm_client_rotationhNtauh1hhhhhhNhNubh)}(hhh](h)}(hObool drm_client_rotation (struct drm_mode_set *modeset, unsigned int *rotation)h]h)}(hNbool drm_client_rotation(struct drm_mode_set *modeset, unsigned int *rotation)h](jD )}(hboolh]hbool}(hj.&hhhNhNubah}(h]h ]jP ah"]h$]h&]uh1jC hj*&hhhc/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:14: ./drivers/gpu/drm/drm_client_modeset.chMubj )}(h h]h }(hj=&hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj*&hhhj<&hMubj)}(hdrm_client_rotationh]j#)}(hdrm_client_rotationh]hdrm_client_rotation}(hjO&hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjK&ubah}(h]h ](j5j6eh"]h$]h&]j:j;uh1jhj*&hhhj<&hMubj| )}(h6(struct drm_mode_set *modeset, unsigned int *rotation)h](j )}(hstruct drm_mode_set *modeseth](h)}(hhh]hstruct}(hjk&hhhNhNubah}(h]h ]jah"]h$]h&]uh1hhjg&ubj )}(h h]h }(hjx&hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjg&ubh)}(hhh]j#)}(h drm_mode_seth]h drm_mode_set}(hj&hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj&ubah}(h]h ]h"]h$]h&] refdomainjmreftypej reftargetj&modnameN classnameNjj)}j]j )}j jQ&sbc.drm_client_rotationasbuh1hhjg&ubj )}(h h]h }(hj&hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjg&ubj )}(hj h]h*}(hj&hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjg&ubj#)}(hmodeseth]hmodeset}(hj&hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjg&ubeh}(h]h ]h"]h$]h&]noemphj:j;uh1j hjc&ubj )}(hunsigned int *rotationh](jD )}(hunsignedh]hunsigned}(hj&hhhNhNubah}(h]h ]jP ah"]h$]h&]uh1jC hj&ubj )}(h h]h }(hj&hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj&ubjD )}(hinth]hint}(hj&hhhNhNubah}(h]h ]jP ah"]h$]h&]uh1jC hj&ubj )}(h h]h }(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj&ubj )}(hj h]h*}(hj'hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj&ubj#)}(hrotationh]hrotation}(hj"'hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj&ubeh}(h]h ]h"]h$]h&]noemphj:j;uh1j hjc&ubeh}(h]h ]h"]h$]h&]j:j;uh1j{ hj*&hhhj<&hMubeh}(h]h ]h"]h$]h&]j:j;jBuh1hjCjDhj&&hhhj<&hMubah}(h]j!&ah ](jHjIeh"]h$]h&]jMjN)jOhuh1hhj<&hMhj#&hhubjQ)}(hhh]h)}(h Check the initial rotation valueh]h Check the initial rotation value}(hjL'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:14: ./drivers/gpu/drm/drm_client_modeset.chMhjI'hhubah}(h]h ]h"]h$]h&]uh1jPhj#&hhhj<&hMubeh}(h]h ](jmfunctioneh"]h$]h&]jrjmjsjd'jtjd'jujvjwuh1hhhhhhNhNubjy)}(hX|**Parameters** ``struct drm_mode_set *modeset`` DRM modeset ``unsigned int *rotation`` Returned rotation value **Description** This function checks if the primary plane in **modeset** can hw rotate to match the rotation needed on its connector. **Note** Currently only 0 and 180 degrees are supported. **Return** True if the plane can do the rotation, false otherwise.h](h)}(h**Parameters**h]j)}(hjn'h]h Parameters}(hjp'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjl'ubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:14: ./drivers/gpu/drm/drm_client_modeset.chMhjh'ubj)}(hhh](j)}(h-``struct drm_mode_set *modeset`` DRM modeset h](j)}(h ``struct drm_mode_set *modeset``h]j)}(hj'h]hstruct drm_mode_set *modeset}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'ubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:14: ./drivers/gpu/drm/drm_client_modeset.chMhj'ubj)}(hhh]h)}(h DRM modeseth]h DRM modeset}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj'hMhj'ubah}(h]h ]h"]h$]h&]uh1jhj'ubeh}(h]h ]h"]h$]h&]uh1jhj'hMhj'ubj)}(h3``unsigned int *rotation`` Returned rotation value h](j)}(h``unsigned int *rotation``h]j)}(hj'h]hunsigned int *rotation}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'ubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:14: ./drivers/gpu/drm/drm_client_modeset.chMhj'ubj)}(hhh]h)}(hReturned rotation valueh]hReturned rotation value}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj'hMhj'ubah}(h]h ]h"]h$]h&]uh1jhj'ubeh}(h]h ]h"]h$]h&]uh1jhj'hMhj'ubeh}(h]h ]h"]h$]h&]uh1jhjh'ubh)}(h**Description**h]j)}(hj(h]h Description}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'ubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:14: ./drivers/gpu/drm/drm_client_modeset.chMhjh'ubh)}(huThis function checks if the primary plane in **modeset** can hw rotate to match the rotation needed on its connector.h](h-This function checks if the primary plane in }(hj(hhhNhNubj)}(h **modeset**h]hmodeset}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj(ubh= can hw rotate to match the rotation needed on its connector.}(hj(hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:14: ./drivers/gpu/drm/drm_client_modeset.chMhjh'ubh)}(h**Note**h]j)}(hj:(h]hNote}(hj<(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8(ubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:14: ./drivers/gpu/drm/drm_client_modeset.chMhjh'ubh)}(h/Currently only 0 and 180 degrees are supported.h]h/Currently only 0 and 180 degrees are supported.}(hjP(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:14: ./drivers/gpu/drm/drm_client_modeset.chMhjh'ubh)}(h **Return**h]j)}(hja(h]hReturn}(hjc(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj_(ubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:14: ./drivers/gpu/drm/drm_client_modeset.chMhjh'ubh)}(h7True if the plane can do the rotation, false otherwise.h]h7True if the plane can do the rotation, false otherwise.}(hjw(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:14: ./drivers/gpu/drm/drm_client_modeset.chMhjh'ubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h%drm_client_modeset_check (C function)c.drm_client_modeset_checkhNtauh1hhhhhhNhNubh)}(hhh](h)}(h` callback. The callback function is responsibe for releaseing all resources including the client itself. The helper drm_dev_unregister() calls this function. Drivers that use it don't need to call this function themselves.h](h)}(h**Parameters**h]j)}(hj2h]h Parameters}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:17: ./drivers/gpu/drm/drm_client_event.chKhj2ubj)}(hhh]j)}(h&``struct drm_device *dev`` DRM device h](j)}(h``struct drm_device *dev``h]j)}(hj2h]hstruct drm_device *dev}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:17: ./drivers/gpu/drm/drm_client_event.chKhj2ubj)}(hhh]h)}(h DRM deviceh]h DRM device}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj3hKhj3ubah}(h]h ]h"]h$]h&]uh1jhj2ubeh}(h]h ]h"]h$]h&]uh1jhj3hKhj2ubah}(h]h ]h"]h$]h&]uh1jhj2ubh)}(h**Description**h]j)}(hj43h]h Description}(hj63hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj23ubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:17: ./drivers/gpu/drm/drm_client_event.chKhj2ubh)}(hThis function releases all clients by calling each client's :c:type:`drm_client_funcs.unregister ` callback. The callback function is responsibe for releaseing all resources including the client itself.h](h>This function releases all clients by calling each client’s }(hjJ3hhhNhNubh)}(h8:c:type:`drm_client_funcs.unregister `h]j)}(hjT3h]hdrm_client_funcs.unregister}(hjV3hhhNhNubah}(h]h ](jjmc-typeeh"]h$]h&]uh1jhjR3ubah}(h]h ]h"]h$]h&]refdocj refdomainjmreftypetype refexplicitrefwarnjjjdrm_client_funcsuh1hha/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:17: ./drivers/gpu/drm/drm_client_event.chKhjJ3ubhh callback. The callback function is responsibe for releaseing all resources including the client itself.}(hjJ3hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjq3hKhj2ubh)}(huThe helper drm_dev_unregister() calls this function. Drivers that use it don't need to call this function themselves.h]hwThe helper drm_dev_unregister() calls this function. Drivers that use it don’t need to call this function themselves.}(hj|3hhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:17: ./drivers/gpu/drm/drm_client_event.chKhj2ubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h#drm_client_dev_hotplug (C function)c.drm_client_dev_hotplughNtauh1hhhhhhNhNubh)}(hhh](h)}(h4void drm_client_dev_hotplug (struct drm_device *dev)h]h)}(h3void drm_client_dev_hotplug(struct drm_device *dev)h](jD )}(hvoidh]hvoid}(hj3hhhNhNubah}(h]h ]jP ah"]h$]h&]uh1jC hj3hhha/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:17: ./drivers/gpu/drm/drm_client_event.chKNubj )}(h h]h }(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj3hhhj3hKNubj)}(hdrm_client_dev_hotplugh]j#)}(hdrm_client_dev_hotplugh]hdrm_client_dev_hotplug}(hj3hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj3ubah}(h]h ](j5j6eh"]h$]h&]j:j;uh1jhj3hhhj3hKNubj| )}(h(struct drm_device *dev)h]j )}(hstruct drm_device *devh](h)}(hhh]hstruct}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1hhj3ubj )}(h h]h }(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj3ubh)}(hhh]j#)}(h drm_deviceh]h drm_device}(hj4hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj4ubah}(h]h ]h"]h$]h&] refdomainjmreftypej reftargetj4modnameN classnameNjj)}j]j )}j j3sbc.drm_client_dev_hotplugasbuh1hhj3ubj )}(h h]h }(hj&4hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj3ubj )}(hj h]h*}(hj44hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj3ubj#)}(hdevh]hdev}(hjA4hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj3ubeh}(h]h ]h"]h$]h&]noemphj:j;uh1j hj3ubah}(h]h ]h"]h$]h&]j:j;uh1j{ hj3hhhj3hKNubeh}(h]h ]h"]h$]h&]j:j;jBuh1hjCjDhj3hhhj3hKNubah}(h]j3ah ](jHjIeh"]h$]h&]jMjN)jOhuh1hhj3hKNhj3hhubjQ)}(hhh]h)}(hSend hotplug event to clientsh]hSend hotplug event to clients}(hjk4hhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:17: ./drivers/gpu/drm/drm_client_event.chKNhjh4hhubah}(h]h ]h"]h$]h&]uh1jPhj3hhhj3hKNubeh}(h]h ](jmfunctioneh"]h$]h&]jrjmjsj4jtj4jujvjwuh1hhhhhhNhNubjy)}(hX2**Parameters** ``struct drm_device *dev`` DRM device **Description** This function calls the :c:type:`drm_client_funcs.hotplug ` callback on the attached clients. drm_kms_helper_hotplug_event() calls this function, so drivers that use it don't need to call this function themselves.h](h)}(h**Parameters**h]j)}(hj4h]h Parameters}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:17: ./drivers/gpu/drm/drm_client_event.chKRhj4ubj)}(hhh]j)}(h&``struct drm_device *dev`` DRM device h](j)}(h``struct drm_device *dev``h]j)}(hj4h]hstruct drm_device *dev}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:17: ./drivers/gpu/drm/drm_client_event.chKOhj4ubj)}(hhh]h)}(h DRM deviceh]h DRM device}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj4hKOhj4ubah}(h]h ]h"]h$]h&]uh1jhj4ubeh}(h]h ]h"]h$]h&]uh1jhj4hKOhj4ubah}(h]h ]h"]h$]h&]uh1jhj4ubh)}(h**Description**h]j)}(hj4h]h Description}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:17: ./drivers/gpu/drm/drm_client_event.chKQhj4ubh)}(hoThis function calls the :c:type:`drm_client_funcs.hotplug ` callback on the attached clients.h](hThis function calls the }(hj4hhhNhNubh)}(h5:c:type:`drm_client_funcs.hotplug `h]j)}(hj5h]hdrm_client_funcs.hotplug}(hj 5hhhNhNubah}(h]h ](jjmc-typeeh"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&]refdocj refdomainjmreftypetype refexplicitrefwarnjjjdrm_client_funcsuh1hha/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:17: ./drivers/gpu/drm/drm_client_event.chKPhj4ubh" callback on the attached clients.}(hj4hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj$5hKPhj4ubh)}(hwdrm_kms_helper_hotplug_event() calls this function, so drivers that use it don't need to call this function themselves.h]hydrm_kms_helper_hotplug_event() calls this function, so drivers that use it don’t need to call this function themselves.}(hj/5hhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:17: ./drivers/gpu/drm/drm_client_event.chKRhj4ubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhhhhhNhNubeh}(h]kernel-clientsah ]h"]kernel clientsah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjp5error_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}jJ5jG5s nametypes}jJ5sh}(jG5hhhjFjKjjjm jr j j j6 j; jHjMj jj jjejjjjjUjZjjjEjJj j je#jj#j!&j&&j(j(jA*jF*j+j+j-j-j/j/j1j1j3j3u footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages] transformerN include_log] decorationNhhub.