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]hPortuguese (Brazilian)}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget"/translations/pt_BR/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&]jNjOuh1jhV/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}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+hKhhj,ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj+hKhhj ubj)}(h``name`` Name of the client. h](j)}(h``name``h]j)}(hjOh]hname}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKmhjIubj)}(hhh]h)}(hName of the client.h]hName of the client.}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjdhKmhjeubah}(h]h ]h"]h$]h&]uh1jhjIubeh}(h]h ]h"]h$]h&]uh1jhjdhKmhj ubj)}(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)}(hjh]hlist}(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.hhKshjubj)}(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 ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype 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 ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj drm_deviceuh1hhjhKrhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKrhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKshj ubj)}(h*``funcs`` DRM client functions (optional) h](j)}(h ``funcs``h]j)}(hjh]hfuncs}(hj hhhNhNubah}(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&]uh1hhjhKzhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKzhj ubj)}(h``file`` DRM file h](j)}(h``file``h]j)}(hjAh]hfile}(hjChhhNhNubah}(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}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjVhKhjWubah}(h]h ]h"]h$]h&]uh1jhj;ubeh}(h]h ]h"]h$]h&]uh1jhjVhKhj ubj)}(h)``modeset_mutex`` Protects **modesets**. h](j)}(h``modeset_mutex``h]j)}(hjzh]h modeset_mutex}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjxubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhjtubj)}(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&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjtubeh}(h]h ]h"]h$]h&]uh1jhjhKhj ubj)}(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&]uh1jhjhKhj ubj)}(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&]uh1jhjhKhj ubj)}(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)}(hj7h]hhotplug_pending}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhj1ubj)}(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.}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhjMubah}(h]h ]h"]h$]h&]uh1jhj1ubeh}(h]h ]h"]h$]h&]uh1jhjLhKhj ubj)}(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)}(hjqh]hhotplug_failed}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jhjoubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhjkubj)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjkubeh}(h]h ]h"]h$]h&]uh1jhjhKhj ubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hdrm_client_buffer (C struct)c.drm_client_bufferhNtauh1hhhhhhNhNubh)}(hhh](j)}(hdrm_client_bufferh]j)}(hstruct drm_client_bufferh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjhhhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKubj )}(h h]h }(hjhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhjhhhjhKubj1)}(hdrm_client_bufferh]j7)}(hjh]hdrm_client_buffer}(hjhhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hjubah}(h]h ](jIjJeh"]h$]h&]jNjOuh1j0hjhhhjhKubeh}(h]h ]h"]h$]h&]jNjOjVuh1jjWjXhjhhhjhKubah}(h]jah ](j\j]eh"]h$]h&]jajb)jchuh1jhjhKhjhhubje)}(hhh]h)}(hDRM client bufferh]hDRM client buffer}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhj hhubah}(h]h ]h"]h$]h&]uh1jdhjhhhjhKubeh}(h]h ](jstructeh"]h$]h&]jjjj$jj$jjjuh1hhhhhhNhNubj)}(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}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj,ubh:}(hj,hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhj(ubj)}(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; };}hjIsbah}(h]h ]h"]h$]h&]jNjOuh1jhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhj(ubh)}(h **Members**h]j)}(hjZh]hMembers}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXubah}(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``client`` DRM client h](j)}(h ``client``h]j)}(hjyh]hclient}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjwubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhjsubj)}(hhh]h)}(h DRM clienth]h DRM client}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjsubeh}(h]h ]h"]h$]h&]uh1jhjhKhjpubj)}(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&]uh1jhjhKhjpubj)}(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&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj hKhjpubj)}(h``fb`` DRM framebufferh](j)}(h``fb``h]j)}(hj4 h]hfb}(hj6 hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2 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}(hjM hhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhjJ ubah}(h]h ]h"]h$]h&]uh1jhj. ubeh}(h]h ]h"]h$]h&]uh1jhjI hKhjpubeh}(h]h ]h"]h$]h&]uh1jhj(ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h%drm_client_for_each_modeset (C macro)c.drm_client_for_each_modesethNtauh1hhhhhhNhNubh)}(hhh](j)}(hdrm_client_for_each_modeseth]j)}(hdrm_client_for_each_modeseth]j1)}(hdrm_client_for_each_modeseth]j7)}(hj h]hdrm_client_for_each_modeset}(hj hhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hj ubah}(h]h ](jIjJeh"]h$]h&]jNjOuh1j0hj hhhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKubah}(h]h ]h"]h$]h&]jNjOjVuh1jjWjXhj hhhj hKubah}(h]j ah ](j\j]eh"]h$]h&]jajb)jchuh1jhj hKhj hhubje)}(hhh]h}(h]h ]h"]h$]h&]uh1jdhj hhhj hKubeh}(h]h ](jmacroeh"]h$]h&]jjjj jj jjjuh1hhhhhhNhNubh)}(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 hKhhhhubj)}(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)}(hj9 h]h drm_mode_set}(hj; hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj7 ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj drm_mode_setuh1hhj/ hKhj3 ubh loop cursor}(hj3 hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj/ hKhj0 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)}(hjr h]hclient}(hjt hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjp ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhjl ubj)}(hhh]h)}(h DRM clienth]h DRM client}(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&]uh1jhjl ubeh}(h]h ]h"]h$]h&]uh1jhj hKhj ubeh}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(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](j)}(h"drm_client_for_each_connector_iterh]j)}(h"drm_client_for_each_connector_iterh]j1)}(h"drm_client_for_each_connector_iterh]j7)}(hj h]h"drm_client_for_each_connector_iter}(hj hhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hj ubah}(h]h ](jIjJeh"]h$]h&]jNjOuh1j0hj hhhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKubah}(h]h ]h"]h$]h&]jNjOjVuh1jjWjXhj hhhj hKubah}(h]j ah ](j\j]eh"]h$]h&]jajb)jchuh1jhj hKhj hhubje)}(hhh]h}(h]h ]h"]h$]h&]uh1jdhj hhhj hKubeh}(h]h ](jmacroeh"]h$]h&]jjjj jj jjjuh1hhhhhhNhNubh)}(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* hKhhhhubj)}(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)}(hj7 h]h Parameters}(hj9 hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5 ubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhj1 ubj)}(hhh](j)}(hT``connector`` :c:type:`struct drm_connector ` pointer used as cursor h](j)}(h ``connector``h]j)}(hjV h]h connector}(hjX hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjT ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhjP ubj)}(hhh]h)}(hE:c:type:`struct drm_connector ` pointer used as cursorh](h)}(h.:c:type:`struct drm_connector `h]j)}(hju h]hstruct drm_connector}(hjw hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjs ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj drm_connectoruh1hhjk hKhjo ubh pointer used as cursor}(hjo hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjk hKhjl ubah}(h]h ]h"]h$]h&]uh1jhjP ubeh}(h]h ]h"]h$]h&]uh1jhjk hKhjM 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 ](jjc-typeeh"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype 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 hKhjM ubeh}(h]h ]h"]h$]h&]uh1jhj1 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.hhKhj1 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.hhKhj1 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.hhKhj1 ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hdrm_client_init (C function)c.drm_client_inithNtauh1hhhhhhNhNubh)}(hhh](j)}(hint drm_client_init (struct drm_device *dev, struct drm_client_dev *client, const char *name, const struct drm_client_funcs *funcs)h]j)}(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}(hjY hhhNhNubah}(h]h ]ktah"]h$]h&]uh1jW hjS hhh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKBubj )}(h h]h }(hji hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhjS hhhjh hKBubj1)}(hdrm_client_inith]j7)}(hdrm_client_inith]hdrm_client_init}(hj{ hhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hjw ubah}(h]h ](jIjJeh"]h$]h&]jNjOuh1j0hjS hhhjh 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](j)}(hjh]hstruct}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj ubj )}(h h]h }(hj hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhj ubh)}(hhh]j7)}(h drm_deviceh]h drm_device}(hj hhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hj ubah}(h]h ]h"]h$]h&] refdomainjreftype identifier reftargetj modnameN classnameNjj)}j]j ASTIdentifier)}j j} sbc.drm_client_initasbuh1hhj ubj )}(h h]h }(hj hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhj ubhdesc_sig_punctuation)}(h*h]h*}(hj hhhNhNubah}(h]h ]pah"]h$]h&]uh1j hj ubj7)}(hdevh]hdev}(hj hhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hj ubeh}(h]h ]h"]h$]h&]noemphjNjOuh1j hj ubj )}(hstruct drm_client_dev *clienth](j)}(hjh]hstruct}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj ubj )}(h h]h }(hj! hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhj ubh)}(hhh]j7)}(hdrm_client_devh]hdrm_client_dev}(hj2 hhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hj/ ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj4 modnameN classnameNjj)}j]j c.drm_client_initasbuh1hhj ubj )}(h h]h }(hjP hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhj ubj )}(hj h]h*}(hj^ hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ubj7)}(hclienth]hclient}(hjk hhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hj ubeh}(h]h ]h"]h$]h&]noemphjNjOuh1j hj ubj )}(hconst char *nameh](j)}(hconsth]hconst}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj ubj )}(h h]h }(hj hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhj ubjX )}(hcharh]hchar}(hj hhhNhNubah}(h]h ]jd ah"]h$]h&]uh1jW hj ubj )}(h h]h }(hj hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhj ubj )}(hj h]h*}(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ubj7)}(hnameh]hname}(hj hhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hj ubeh}(h]h ]h"]h$]h&]noemphjNjOuh1j hj ubj )}(h$const struct drm_client_funcs *funcsh](j)}(hj h]hconst}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj ubj )}(h h]h }(hj hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhj ubj)}(hjh]hstruct}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj ubj )}(h h]h }(hj hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhj ubh)}(hhh]j7)}(hdrm_client_funcsh]hdrm_client_funcs}(hjhhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j c.drm_client_initasbuh1hhj ubj )}(h h]h }(hj9hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhj ubj )}(hj h]h*}(hjGhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ubj7)}(hfuncsh]hfuncs}(hjThhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hj ubeh}(h]h ]h"]h$]h&]noemphjNjOuh1j hj ubeh}(h]h ]h"]h$]h&]jNjOuh1j hjS hhhjh hKBubeh}(h]h ]h"]h$]h&]jNjOjVuh1jjWjXhjO hhhjh hKBubah}(h]jJ ah ](j\j]eh"]h$]h&]jajb)jchuh1jhjh hKBhjL hhubje)}(hhh]h)}(hInitialise a DRM clienth]hInitialise a DRM client}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKBhj{hhubah}(h]h ]h"]h$]h&]uh1jdhjL hhhjh hKBubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1hhhhhhNhNubj)}(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&]uh1hhj hKDhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj hKDhjubj)}(h!``const char *name`` Client name h](j)}(h``const char *name``h]j)}(hj1h]hconst char *name}(hj3hhhNhNubah}(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.chKEhj+ubj)}(hhh]h)}(h Client nameh]h Client name}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjFhKEhjGubah}(h]h ]h"]h$]h&]uh1jhj+ubeh}(h]h ]h"]h$]h&]uh1jhjFhKEhjubj)}(hI``const struct drm_client_funcs *funcs`` DRM client functions (optional) h](j)}(h(``const struct drm_client_funcs *funcs``h]j)}(hjjh]h$const struct drm_client_funcs *funcs}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKFhjdubj)}(hhh]h)}(hDRM client functions (optional)h]hDRM client functions (optional)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKFhjubah}(h]h ]h"]h$]h&]uh1jhjdubeh}(h]h ]h"]h$]h&]uh1jhjhKFhjubeh}(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 ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype 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 ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj drm_deviceuh1hhjhKGhjubh+ is unregistered. See drm_client_release().}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKGhjubh)}(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.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&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h drm_client_register (C function)c.drm_client_registerhNtauh1hhhhhhNhNubh)}(hhh](j)}(h8void drm_client_register (struct drm_client_dev *client)h]j)}(h7void drm_client_register(struct drm_client_dev *client)h](jX )}(hvoidh]hvoid}(hjihhhNhNubah}(h]h ]jd ah"]h$]h&]uh1jW hjehhh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKoubj )}(h h]h }(hjxhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhjehhhjwhKoubj1)}(hdrm_client_registerh]j7)}(hdrm_client_registerh]hdrm_client_register}(hjhhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hjubah}(h]h ](jIjJeh"]h$]h&]jNjOuh1j0hjehhhjwhKoubj )}(h(struct drm_client_dev *client)h]j )}(hstruct drm_client_dev *clienth](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhjubh)}(hhh]j7)}(hdrm_client_devh]hdrm_client_dev}(hjhhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j )}j jsbc.drm_client_registerasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhjubj )}(hj h]h*}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj7)}(hclienth]hclient}(hjhhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hjubeh}(h]h ]h"]h$]h&]noemphjNjOuh1j hjubah}(h]h ]h"]h$]h&]jNjOuh1j hjehhhjwhKoubeh}(h]h ]h"]h$]h&]jNjOjVuh1jjWjXhjahhhjwhKoubah}(h]j\ah ](j\j]eh"]h$]h&]jajb)jchuh1jhjwhKohj^hhubje)}(hhh]h)}(hRegister clienth]hRegister client}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKohj&hhubah}(h]h ]h"]h$]h&]uh1jdhj^hhhjwhKoubeh}(h]h ](jfunctioneh"]h$]h&]jjjjAjjAjjjuh1hhhhhhNhNubj)}(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)}(hjKh]h Parameters}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKshjEubj)}(hhh]j)}(h-``struct drm_client_dev *client`` DRM client h](j)}(h!``struct drm_client_dev *client``h]j)}(hjjh]hstruct drm_client_dev *client}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKphjdubj)}(hhh]h)}(h DRM clienth]h DRM client}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKphjubah}(h]h ]h"]h$]h&]uh1jhjdubeh}(h]h ]h"]h$]h&]uh1jhjhKphjaubah}(h]h ]h"]h$]h&]uh1jhjEubh)}(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.chKrhjEubh)}(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 ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype 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&]uh1hhjhKqhjEubh)}(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.chKwhjEubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hdrm_client_release (C function)c.drm_client_releasehNtauh1hhhhhhNhNubh)}(hhh](j)}(h7void drm_client_release (struct drm_client_dev *client)h]j)}(h6void drm_client_release(struct drm_client_dev *client)h](jX )}(hvoidh]hvoid}(hj.hhhNhNubah}(h]h ]jd ah"]h$]h&]uh1jW hj*hhh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKubj )}(h h]h }(hj=hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhj*hhhj<hKubj1)}(hdrm_client_releaseh]j7)}(hdrm_client_releaseh]hdrm_client_release}(hjOhhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hjKubah}(h]h ](jIjJeh"]h$]h&]jNjOuh1j0hj*hhhj<hKubj )}(h(struct drm_client_dev *client)h]j )}(hstruct drm_client_dev *clienth](j)}(hjh]hstruct}(hjkhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjgubj )}(h h]h }(hjxhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhjgubh)}(hhh]j7)}(hdrm_client_devh]hdrm_client_dev}(hjhhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j )}j jQsbc.drm_client_releaseasbuh1hhjgubj )}(h h]h }(hjhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhjgubj )}(hj h]h*}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjgubj7)}(hclienth]hclient}(hjhhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hjgubeh}(h]h ]h"]h$]h&]noemphjNjOuh1j hjcubah}(h]h ]h"]h$]h&]jNjOuh1j hj*hhhj<hKubeh}(h]h ]h"]h$]h&]jNjOjVuh1jjWjXhj&hhhj<hKubah}(h]j!ah ](j\j]eh"]h$]h&]jajb)jchuh1jhj<hKhj#hhubje)}(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&]uh1jdhj#hhhj<hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1hhhhhhNhNubj)}(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.chKhj 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}(hj1hhhNhNubah}(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.chKhj)ubj)}(hhh]h)}(h DRM clienth]h DRM client}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjDhKhjEubah}(h]h ]h"]h$]h&]uh1jhj)ubeh}(h]h ]h"]h$]h&]uh1jhjDhKhj&ubah}(h]h ]h"]h$]h&]uh1jhj ubh)}(h**Description**h]j)}(hjjh]h Description}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKhj ubh)}(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 }(hjhhhNhNubh)}(h:c:type:`drm_file`h]j)}(hjh]hdrm_file}(hjhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjjdrm_fileuh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKhjubhI that was opened by drm_client_init(). It is called automatically if the }(hjhhhNhNubh)}(h8:c:type:`drm_client_funcs.unregister `h]j)}(hjh]hdrm_client_funcs.unregister}(hjhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjjdrm_client_funcsuh1hhjhKhjubh callback is _not_ set.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKhj ubh)}(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.chKhj ubh)}(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.chKhj ubh)}(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.chKhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h%drm_client_buffer_delete (C function)c.drm_client_buffer_deletehNtauh1hhhhhhNhNubh)}(hhh](j)}(h@void drm_client_buffer_delete (struct drm_client_buffer *buffer)h]j)}(h?void drm_client_buffer_delete(struct drm_client_buffer *buffer)h](jX )}(hvoidh]hvoid}(hj+hhhNhNubah}(h]h ]jd ah"]h$]h&]uh1jW hj'hhh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKubj )}(h h]h }(hj:hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhj'hhhj9hKubj1)}(hdrm_client_buffer_deleteh]j7)}(hdrm_client_buffer_deleteh]hdrm_client_buffer_delete}(hjLhhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hjHubah}(h]h ](jIjJeh"]h$]h&]jNjOuh1j0hj'hhhj9hKubj )}(h"(struct drm_client_buffer *buffer)h]j )}(h struct drm_client_buffer *bufferh](j)}(hjh]hstruct}(hjhhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjdubj )}(h h]h }(hjuhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhjdubh)}(hhh]j7)}(hdrm_client_bufferh]hdrm_client_buffer}(hjhhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j )}j jNsbc.drm_client_buffer_deleteasbuh1hhjdubj )}(h h]h }(hjhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhjdubj )}(hj h]h*}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjdubj7)}(hbufferh]hbuffer}(hjhhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hjdubeh}(h]h ]h"]h$]h&]noemphjNjOuh1j hj`ubah}(h]h ]h"]h$]h&]jNjOuh1j hj'hhhj9hKubeh}(h]h ]h"]h$]h&]jNjOjVuh1jjWjXhj#hhhj9hKubah}(h]jah ](j\j]eh"]h$]h&]jajb)jchuh1jhj9hKhj hhubje)}(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&]uh1jdhj hhhj9hKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1hhhhhhNhNubj)}(hH**Parameters** ``struct drm_client_buffer *buffer`` DRM client bufferh](h)}(h**Parameters**h]j)}(hj h]h Parameters}(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.chKhjubj)}(hhh]j)}(h6``struct drm_client_buffer *buffer`` DRM client bufferh](j)}(h$``struct drm_client_buffer *buffer``h]j)}(hj,h]h struct drm_client_buffer *buffer}(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.chKhj&ubj)}(hhh]h)}(hDRM client bufferh]hDRM client buffer}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKhjBubah}(h]h ]h"]h$]h&]uh1jhj&ubeh}(h]h ]h"]h$]h&]uh1jhjAhKhj#ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h)drm_client_buffer_vmap_local (C function)c.drm_client_buffer_vmap_localhNtauh1hhhhhhNhNubh)}(hhh](j)}(h_int drm_client_buffer_vmap_local (struct drm_client_buffer *buffer, struct iosys_map *map_copy)h]j)}(h^int drm_client_buffer_vmap_local(struct drm_client_buffer *buffer, struct iosys_map *map_copy)h](jX )}(hinth]hint}(hjhhhNhNubah}(h]h ]jd ah"]h$]h&]uh1jW hjhhh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMubj )}(h h]h }(hjhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhjhhhjhMubj1)}(hdrm_client_buffer_vmap_localh]j7)}(hdrm_client_buffer_vmap_localh]hdrm_client_buffer_vmap_local}(hjhhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hjubah}(h]h ](jIjJeh"]h$]h&]jNjOuh1j0hjhhhjhMubj )}(h>(struct drm_client_buffer *buffer, struct iosys_map *map_copy)h](j )}(h struct drm_client_buffer *bufferh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhjubh)}(hhh]j7)}(hdrm_client_bufferh]hdrm_client_buffer}(hjhhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j )}j jsbc.drm_client_buffer_vmap_localasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhjubj )}(hj h]h*}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj7)}(hbufferh]hbuffer}(hjhhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hjubeh}(h]h ]h"]h$]h&]noemphjNjOuh1j hjubj )}(hstruct iosys_map *map_copyh](j)}(hjh]hstruct}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj1ubj )}(h h]h }(hjBhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhj1ubh)}(hhh]j7)}(h iosys_maph]h iosys_map}(hjShhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hjPubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjUmodnameN classnameNjj)}j]jc.drm_client_buffer_vmap_localasbuh1hhj1ubj )}(h h]h }(hjqhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhj1ubj )}(hj h]h*}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj1ubj7)}(hmap_copyh]hmap_copy}(hjhhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hj1ubeh}(h]h ]h"]h$]h&]noemphjNjOuh1j hjubeh}(h]h ]h"]h$]h&]jNjOuh1j hjhhhjhMubeh}(h]h ]h"]h$]h&]jNjOjVuh1jjWjXhj~hhhjhMubah}(h]jyah ](j\j]eh"]h$]h&]jajb)jchuh1jhjhMhj{hhubje)}(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&]uh1jdhj{hhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1hhhhhhNhNubj)}(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&]uh1hhj hMhj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj hMhjubj)}(hC``struct iosys_map *map_copy`` Returns the mapped memory's address h](j)}(h``struct iosys_map *map_copy``h]j)}(hj0h]hstruct iosys_map *map_copy}(hj2hhhNhNubah}(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#Returns the mapped memory's addressh]h%Returns the mapped memory’s address}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjEhMhjFubah}(h]h ]h"]h$]h&]uh1jhj*ubeh}(h]h ]h"]h$]h&]uh1jhjEhMhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjkh]h Description}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjiubah}(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.}(hjhhhNhNubah}(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.}(hjhhhNhNubah}(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&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h+drm_client_buffer_vunmap_local (C function) c.drm_client_buffer_vunmap_localhNtauh1hhhhhhNhNubh)}(hhh](j)}(hFvoid drm_client_buffer_vunmap_local (struct drm_client_buffer *buffer)h]j)}(hEvoid drm_client_buffer_vunmap_local(struct drm_client_buffer *buffer)h](jX )}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jd ah"]h$]h&]uh1jW hjhhh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chM9ubj )}(h h]h }(hjhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhjhhhjhM9ubj1)}(hdrm_client_buffer_vunmap_localh]j7)}(hdrm_client_buffer_vunmap_localh]hdrm_client_buffer_vunmap_local}(hjhhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hjubah}(h]h ](jIjJeh"]h$]h&]jNjOuh1j0hjhhhjhM9ubj )}(h"(struct drm_client_buffer *buffer)h]j )}(h struct drm_client_buffer *bufferh](j)}(hjh]hstruct}(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj.ubj )}(h h]h }(hj?hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhj.ubh)}(hhh]j7)}(hdrm_client_bufferh]hdrm_client_buffer}(hjPhhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hjMubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjRmodnameN classnameNjj)}j]j )}j jsb c.drm_client_buffer_vunmap_localasbuh1hhj.ubj )}(h h]h }(hjphhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhj.ubj )}(hj h]h*}(hj~hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj.ubj7)}(hbufferh]hbuffer}(hjhhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hj.ubeh}(h]h ]h"]h$]h&]noemphjNjOuh1j hj*ubah}(h]h ]h"]h$]h&]jNjOuh1j hjhhhjhM9ubeh}(h]h ]h"]h$]h&]jNjOjVuh1jjWjXhjhhhjhM9ubah}(h]jah ](j\j]eh"]h$]h&]jajb)jchuh1jhjhM9hjhhubje)}(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.chM9hjhhubah}(h]h ]h"]h$]h&]uh1jdhjhhhjhM9ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1hhhhhhNhNubj)}(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.chM:hjubj)}(hhh]h)}(hDRM client bufferh]hDRM client buffer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hM:hj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj hM:hjubah}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hj1h]h Description}(hj3hhhNhNubah}(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.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.}(hjGhhhNhNubah}(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&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h#drm_client_buffer_vmap (C function)c.drm_client_buffer_vmaphNtauh1hhhhhhNhNubh)}(hhh](j)}(hYint drm_client_buffer_vmap (struct drm_client_buffer *buffer, struct iosys_map *map_copy)h]j)}(hXint drm_client_buffer_vmap(struct drm_client_buffer *buffer, struct iosys_map *map_copy)h](jX )}(hinth]hint}(hjvhhhNhNubah}(h]h ]jd ah"]h$]h&]uh1jW hjrhhh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMKubj )}(h h]h }(hjhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhjrhhhjhMKubj1)}(hdrm_client_buffer_vmaph]j7)}(hdrm_client_buffer_vmaph]hdrm_client_buffer_vmap}(hjhhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hjubah}(h]h ](jIjJeh"]h$]h&]jNjOuh1j0hjrhhhjhMKubj )}(h>(struct drm_client_buffer *buffer, struct iosys_map *map_copy)h](j )}(h struct drm_client_buffer *bufferh](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhjubh)}(hhh]j7)}(hdrm_client_bufferh]hdrm_client_buffer}(hjhhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j )}j jsbc.drm_client_buffer_vmapasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhjubj )}(hj h]h*}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj7)}(hbufferh]hbuffer}(hj hhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hjubeh}(h]h ]h"]h$]h&]noemphjNjOuh1j hjubj )}(hstruct iosys_map *map_copyh](j)}(hjh]hstruct}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj!ubj )}(h h]h }(hj2hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhj!ubh)}(hhh]j7)}(h iosys_maph]h iosys_map}(hjChhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hj@ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjEmodnameN classnameNjj)}j]jc.drm_client_buffer_vmapasbuh1hhj!ubj )}(h h]h }(hjahhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhj!ubj )}(hj h]h*}(hjohhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj!ubj7)}(hmap_copyh]hmap_copy}(hj|hhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hj!ubeh}(h]h ]h"]h$]h&]noemphjNjOuh1j hjubeh}(h]h ]h"]h$]h&]jNjOuh1j hjrhhhjhMKubeh}(h]h ]h"]h$]h&]jNjOjVuh1jjWjXhjnhhhjhMKubah}(h]jiah ](j\j]eh"]h$]h&]jajb)jchuh1jhjhMKhjkhhubje)}(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.chMKhjhhubah}(h]h ]h"]h$]h&]uh1jdhjkhhhjhMKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1hhhhhhNhNubj)}(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.chMOhjubj)}(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.chMLhjubj)}(hhh]h)}(hDRM client bufferh]hDRM client buffer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMLhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMLhjubj)}(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}(hj"hhhNhNubah}(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.chMMhjubj)}(hhh]h)}(h#Returns the mapped memory's addressh]h%Returns the mapped memory’s address}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj5hMMhj6ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj5hMMhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hj[h]h Description}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjYubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMOhjubh)}(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.}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMNhjubh)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMQhjubh)}(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.chMVhjubh)}(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.chMZhjubh)}(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.chM[hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h%drm_client_buffer_vunmap (C function)c.drm_client_buffer_vunmaphNtauh1hhhhhhNhNubh)}(hhh](j)}(h@void drm_client_buffer_vunmap (struct drm_client_buffer *buffer)h]j)}(h?void drm_client_buffer_vunmap(struct drm_client_buffer *buffer)h](jX )}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jd ah"]h$]h&]uh1jW hjhhh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMnubj )}(h h]h }(hjhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhjhhhjhMnubj1)}(hdrm_client_buffer_vunmaph]j7)}(hdrm_client_buffer_vunmaph]hdrm_client_buffer_vunmap}(hjhhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hjubah}(h]h ](jIjJeh"]h$]h&]jNjOuh1j0hjhhhjhMnubj )}(h"(struct drm_client_buffer *buffer)h]j )}(h struct drm_client_buffer *bufferh](j)}(hjh]hstruct}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj )}(h h]h }(hj/hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhjubh)}(hhh]j7)}(hdrm_client_bufferh]hdrm_client_buffer}(hj@hhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hj=ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjBmodnameN classnameNjj)}j]j )}j jsbc.drm_client_buffer_vunmapasbuh1hhjubj )}(h h]h }(hj`hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhjubj )}(hj h]h*}(hjnhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj7)}(hbufferh]hbuffer}(hj{hhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hjubeh}(h]h ]h"]h$]h&]noemphjNjOuh1j hjubah}(h]h ]h"]h$]h&]jNjOuh1j hjhhhjhMnubeh}(h]h ]h"]h$]h&]jNjOjVuh1jjWjXhjhhhjhMnubah}(h]jah ](j\j]eh"]h$]h&]jajb)jchuh1jhjhMnhjhhubje)}(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.chMnhjhhubah}(h]h ]h"]h$]h&]uh1jdhjhhhjhMnubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1hhhhhhNhNubj)}(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.chMrhjubj)}(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.chMohjubj)}(hhh]h)}(hDRM client bufferh]hDRM client buffer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMohjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMohjubah}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hj!h]h Description}(hj#hhhNhNubah}(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.chMqhjubh)}(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.}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMphjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h*drm_client_buffer_create_dumb (C function)c.drm_client_buffer_create_dumbhNtauh1hhhhhhNhNubh)}(hhh](j)}(h{struct drm_client_buffer * drm_client_buffer_create_dumb (struct drm_client_dev *client, u32 width, u32 height, u32 format)h]j)}(hystruct drm_client_buffer *drm_client_buffer_create_dumb(struct drm_client_dev *client, u32 width, u32 height, u32 format)h](j)}(hjh]hstruct}(hjfhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjbhhh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chM~ubj )}(h h]h }(hjthhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhjbhhhjshM~ubh)}(hhh]j7)}(hdrm_client_bufferh]hdrm_client_buffer}(hjhhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j )}j drm_client_buffer_create_dumbsbc.drm_client_buffer_create_dumbasbuh1hhjbhhhjshM~ubj )}(h h]h }(hjhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhjbhhhjshM~ubj )}(hj h]h*}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjbhhhjshM~ubj1)}(hdrm_client_buffer_create_dumbh]j7)}(hjh]hdrm_client_buffer_create_dumb}(hjhhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hjubah}(h]h ](jIjJeh"]h$]h&]jNjOuh1j0hjbhhhjshM~ubj )}(hB(struct drm_client_dev *client, u32 width, u32 height, u32 format)h](j )}(hstruct drm_client_dev *clienth](j)}(hjh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhjubh)}(hhh]j7)}(hdrm_client_devh]hdrm_client_dev}(hjhhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.drm_client_buffer_create_dumbasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhjubj )}(hj h]h*}(hj*hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj7)}(hclienth]hclient}(hj7hhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hjubeh}(h]h ]h"]h$]h&]noemphjNjOuh1j hjubj )}(h u32 widthh](h)}(hhh]j7)}(hu32h]hu32}(hjShhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hjPubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjUmodnameN classnameNjj)}j]jc.drm_client_buffer_create_dumbasbuh1hhjLubj )}(h h]h }(hjqhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhjLubj7)}(hwidthh]hwidth}(hjhhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hjLubeh}(h]h ]h"]h$]h&]noemphjNjOuh1j hjubj )}(h u32 heighth](h)}(hhh]j7)}(hu32h]hu32}(hjhhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.drm_client_buffer_create_dumbasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhjubj7)}(hheighth]hheight}(hjhhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hjubeh}(h]h ]h"]h$]h&]noemphjNjOuh1j hjubj )}(h u32 formath](h)}(hhh]j7)}(hu32h]hu32}(hjhhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.drm_client_buffer_create_dumbasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhjubj7)}(hformath]hformat}(hjhhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hjubeh}(h]h ]h"]h$]h&]noemphjNjOuh1j hjubeh}(h]h ]h"]h$]h&]jNjOuh1j hjbhhhjshM~ubeh}(h]h ]h"]h$]h&]jNjOjVuh1jjWjXhj^hhhjshM~ubah}(h]jYah ](j\j]eh"]h$]h&]jajb)jchuh1jhjshM~hj[hhubje)}(hhh]h)}(h.Create a client buffer backed by a dumb bufferh]h.Create a client buffer backed by a dumb buffer}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chM~hj6hhubah}(h]h ]h"]h$]h&]uh1jdhj[hhhjshM~ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjQjjQjjjuh1hhhhhhNhNubj)}(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)}(hj[h]h Parameters}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjYubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMhjUubj)}(hhh](j)}(h-``struct drm_client_dev *client`` DRM client h](j)}(h!``struct drm_client_dev *client``h]j)}(hjzh]hstruct drm_client_dev *client}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjxubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMhjtubj)}(hhh]h)}(h DRM clienth]h DRM client}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjtubeh}(h]h ]h"]h$]h&]uh1jhjhMhjqubj)}(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&]uh1jhjhMhjqubj)}(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}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hMhj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj hMhjqubj)}(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: hMhjqubeh}(h]h ]h"]h$]h&]uh1jhjUubh)}(h**Description**h]j)}(hj` h]h Description}(hjb 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.chMhjUubh)}(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 }(hjv hhhNhNubh)}(h:c:type:`drm_client_buffer`h]j)}(hj h]hdrm_client_buffer}(hj hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj~ ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjjdrm_client_bufferuh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMhjv ubh which consists of a }(hjv hhhNhNubh)}(h:c:type:`drm_framebuffer`h]j)}(hj h]hdrm_framebuffer}(hj hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjjdrm_framebufferuh1hhj hMhjv ubhM backed by a dumb buffer. Call drm_client_buffer_delete() to free the buffer.}(hjv hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj hMhjUubh)}(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.chMhjUubh)}(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.chMhjUubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h$drm_client_buffer_flush (C function)c.drm_client_buffer_flushhNtauh1hhhhhhNhNubh)}(hhh](j)}(hUint drm_client_buffer_flush (struct drm_client_buffer *buffer, struct drm_rect *rect)h]j)}(hTint drm_client_buffer_flush(struct drm_client_buffer *buffer, struct drm_rect *rect)h](jX )}(hinth]hint}(hj!hhhNhNubah}(h]h ]jd ah"]h$]h&]uh1jW 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 ]j,ah"]h$]h&]uh1jhj!hhhj !hMubj1)}(hdrm_client_buffer_flushh]j7)}(hdrm_client_buffer_flushh]hdrm_client_buffer_flush}(hj3!hhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hj/!ubah}(h]h ](jIjJeh"]h$]h&]jNjOuh1j0hj!hhhj !hMubj )}(h9(struct drm_client_buffer *buffer, struct drm_rect *rect)h](j )}(h struct drm_client_buffer *bufferh](j)}(hjh]hstruct}(hjO!hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjK!ubj )}(h h]h }(hj\!hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhjK!ubh)}(hhh]j7)}(hdrm_client_bufferh]hdrm_client_buffer}(hjm!hhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hjj!ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjo!modnameN classnameNjj)}j]j )}j j5!sbc.drm_client_buffer_flushasbuh1hhjK!ubj )}(h h]h }(hj!hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhjK!ubj )}(hj h]h*}(hj!hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjK!ubj7)}(hbufferh]hbuffer}(hj!hhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hjK!ubeh}(h]h ]h"]h$]h&]noemphjNjOuh1j hjG!ubj )}(hstruct drm_rect *recth](j)}(hjh]hstruct}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj!ubj )}(h h]h }(hj!hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhj!ubh)}(hhh]j7)}(hdrm_recth]hdrm_rect}(hj!hhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hj!ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj!modnameN classnameNjj)}j]j!c.drm_client_buffer_flushasbuh1hhj!ubj )}(h h]h }(hj!hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhj!ubj )}(hj h]h*}(hj "hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj!ubj7)}(hrecth]hrect}(hj"hhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hj!ubeh}(h]h ]h"]h$]h&]noemphjNjOuh1j hjG!ubeh}(h]h ]h"]h$]h&]jNjOuh1j hj!hhhj !hMubeh}(h]h ]h"]h$]h&]jNjOjVuh1jjWjXhj !hhhj !hMubah}(h]j!ah ](j\j]eh"]h$]h&]jajb)jchuh1jhj !hMhj!hhubje)}(hhh]h)}(hManually flush client bufferh]hManually flush client buffer}(hjB"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&]uh1jdhj!hhhj !hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjZ"jjZ"jjjuh1hhhhhhNhNubj)}(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)}(hjd"h]h Parameters}(hjf"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjb"ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMhj^"ubj)}(hhh](j)}(h7``struct drm_client_buffer *buffer`` DRM client buffer h](j)}(h$``struct drm_client_buffer *buffer``h]j)}(hj"h]h struct drm_client_buffer *buffer}(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)}(hDRM client bufferh]hDRM client buffer}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj"hMhj"ubah}(h]h ]h"]h$]h&]uh1jhj}"ubeh}(h]h ]h"]h$]h&]uh1jhj"hMhjz"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"hMhjz"ubeh}(h]h ]h"]h$]h&]uh1jhj^"ubh)}(h**Description**h]j)}(hj"h]h Description}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMhj^"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 ](jjc-typeeh"]h$]h&]uh1jhj#ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype 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&]uh1hhj4#hMhj^"ubh)}(h **Return**h]j)}(hjA#h]hReturn}(hjC#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.chMhj^"ubh)}(h2Zero on success or negative error code on failure.h]h2Zero on success or negative error code on failure.}(hjW#hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMhj^"ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h%drm_client_modeset_probe (C function)c.drm_client_modeset_probehNtauh1hhhhhhNhNubh)}(hhh](j)}(heint drm_client_modeset_probe (struct drm_client_dev *client, unsigned int width, unsigned int height)h]j)}(hdint drm_client_modeset_probe(struct drm_client_dev *client, unsigned int width, unsigned int height)h](jX )}(hinth]hint}(hj#hhhNhNubah}(h]h ]jd ah"]h$]h&]uh1jW hj#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 ]j,ah"]h$]h&]uh1jhj#hhhj#hM&ubj1)}(hdrm_client_modeset_probeh]j7)}(hdrm_client_modeset_probeh]hdrm_client_modeset_probe}(hj#hhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hj#ubah}(h]h ](jIjJeh"]h$]h&]jNjOuh1j0hj#hhhj#hM&ubj )}(hH(struct drm_client_dev *client, unsigned int width, unsigned int height)h](j )}(hstruct drm_client_dev *clienth](j)}(hjh]hstruct}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj#ubj )}(h h]h }(hj#hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhj#ubh)}(hhh]j7)}(hdrm_client_devh]hdrm_client_dev}(hj#hhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hj#ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj#modnameN classnameNjj)}j]j )}j j#sbc.drm_client_modeset_probeasbuh1hhj#ubj )}(h h]h }(hj$hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhj#ubj )}(hj h]h*}(hj$hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj#ubj7)}(hclienth]hclient}(hj$hhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hj#ubeh}(h]h ]h"]h$]h&]noemphjNjOuh1j hj#ubj )}(hunsigned int widthh](jX )}(hunsignedh]hunsigned}(hj5$hhhNhNubah}(h]h ]jd ah"]h$]h&]uh1jW hj1$ubj )}(h h]h }(hjC$hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhj1$ubjX )}(hinth]hint}(hjQ$hhhNhNubah}(h]h ]jd ah"]h$]h&]uh1jW hj1$ubj )}(h h]h }(hj_$hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhj1$ubj7)}(hwidthh]hwidth}(hjm$hhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hj1$ubeh}(h]h ]h"]h$]h&]noemphjNjOuh1j hj#ubj )}(hunsigned int heighth](jX )}(hunsignedh]hunsigned}(hj$hhhNhNubah}(h]h ]jd ah"]h$]h&]uh1jW hj$ubj )}(h h]h }(hj$hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhj$ubjX )}(hinth]hint}(hj$hhhNhNubah}(h]h ]jd ah"]h$]h&]uh1jW hj$ubj )}(h h]h }(hj$hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhj$ubj7)}(hheighth]hheight}(hj$hhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hj$ubeh}(h]h ]h"]h$]h&]noemphjNjOuh1j hj#ubeh}(h]h ]h"]h$]h&]jNjOuh1j hj#hhhj#hM&ubeh}(h]h ]h"]h$]h&]jNjOjVuh1jjWjXhj~#hhhj#hM&ubah}(h]jy#ah ](j\j]eh"]h$]h&]jajb)jchuh1jhj#hM&hj{#hhubje)}(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&]uh1jdhj{#hhhj#hM&ubeh}(h]h ](jfunctioneh"]h$]h&]jjjj%jj%jjjuh1hhhhhhNhNubj)}(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}(hjB%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)}(hjb%h]hunsigned int width}(hjd%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 width (optional)h]h%Maximum display mode width (optional)}(hj{%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjw%hM(hjx%ubah}(h]h ]h"]h$]h&]uh1jhj\%ubeh}(h]h ]h"]h$]h&]uh1jhjw%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&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h drm_client_rotation (C function)c.drm_client_rotationhNtauh1hhhhhhNhNubh)}(hhh](j)}(hObool drm_client_rotation (struct drm_mode_set *modeset, unsigned int *rotation)h]j)}(hNbool drm_client_rotation(struct drm_mode_set *modeset, unsigned int *rotation)h](jX )}(hboolh]hbool}(hjB&hhhNhNubah}(h]h ]jd ah"]h$]h&]uh1jW hj>&hhhc/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:14: ./drivers/gpu/drm/drm_client_modeset.chMubj )}(h h]h }(hjQ&hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhj>&hhhjP&hMubj1)}(hdrm_client_rotationh]j7)}(hdrm_client_rotationh]hdrm_client_rotation}(hjc&hhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hj_&ubah}(h]h ](jIjJeh"]h$]h&]jNjOuh1j0hj>&hhhjP&hMubj )}(h6(struct drm_mode_set *modeset, unsigned int *rotation)h](j )}(hstruct drm_mode_set *modeseth](j)}(hjh]hstruct}(hj&hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj{&ubj )}(h h]h }(hj&hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhj{&ubh)}(hhh]j7)}(h drm_mode_seth]h drm_mode_set}(hj&hhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hj&ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj&modnameN classnameNjj)}j]j )}j je&sbc.drm_client_rotationasbuh1hhj{&ubj )}(h h]h }(hj&hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhj{&ubj )}(hj h]h*}(hj&hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj{&ubj7)}(hmodeseth]hmodeset}(hj&hhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hj{&ubeh}(h]h ]h"]h$]h&]noemphjNjOuh1j hjw&ubj )}(hunsigned int *rotationh](jX )}(hunsignedh]hunsigned}(hj&hhhNhNubah}(h]h ]jd ah"]h$]h&]uh1jW hj&ubj )}(h h]h }(hj&hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhj&ubjX )}(hinth]hint}(hj 'hhhNhNubah}(h]h ]jd ah"]h$]h&]uh1jW hj&ubj )}(h h]h }(hj'hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhj&ubj )}(hj h]h*}(hj)'hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj&ubj7)}(hrotationh]hrotation}(hj6'hhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hj&ubeh}(h]h ]h"]h$]h&]noemphjNjOuh1j hjw&ubeh}(h]h ]h"]h$]h&]jNjOuh1j hj>&hhhjP&hMubeh}(h]h ]h"]h$]h&]jNjOjVuh1jjWjXhj:&hhhjP&hMubah}(h]j5&ah ](j\j]eh"]h$]h&]jajb)jchuh1jhjP&hMhj7&hhubje)}(hhh]h)}(h Check the initial rotation valueh]h Check the initial rotation value}(hj`'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:14: ./drivers/gpu/drm/drm_client_modeset.chMhj]'hhubah}(h]h ]h"]h$]h&]uh1jdhj7&hhhjP&hMubeh}(h]h ](jfunctioneh"]h$]h&]jjjjx'jjx'jjjuh1hhhhhhNhNubj)}(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)}(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.chMhj|'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&]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.chMhj|'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}(hj3(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.chMhj|'ubh)}(h**Note**h]j)}(hjN(h]hNote}(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.chMhj|'ubh)}(h/Currently only 0 and 180 degrees are supported.h]h/Currently only 0 and 180 degrees are supported.}(hjd(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:14: ./drivers/gpu/drm/drm_client_modeset.chMhj|'ubh)}(h **Return**h]j)}(hju(h]hReturn}(hjw(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjs(ubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:14: ./drivers/gpu/drm/drm_client_modeset.chMhj|'ubh)}(h7True if the plane can do the rotation, false otherwise.h]h7True if the plane can do the rotation, false otherwise.}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:14: ./drivers/gpu/drm/drm_client_modeset.chMhj|'ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h%drm_client_modeset_check (C function)c.drm_client_modeset_checkhNtauh1hhhhhhNhNubh)}(hhh](j)}(h+ubj)}(hhh]j)}(h-``struct drm_client_dev *client`` DRM client h](j)}(h!``struct drm_client_dev *client``h]j)}(hjc+h]hstruct drm_client_dev *client}(hje+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhja+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 clienth]h DRM client}(hj|+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjx+hMhjy+ubah}(h]h ]h"]h$]h&]uh1jhj]+ubeh}(h]h ]h"]h$]h&]uh1jhjx+hMhjZ+ubah}(h]h ]h"]h$]h&]uh1jhj>+ubh)}(h**Description**h]j)}(hj+h]h Description}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj+ubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:14: ./drivers/gpu/drm/drm_client_modeset.chMhj>+ubh)}(hCommit modeset configuration to crtcs without checking if there is a DRM master. The assumption is that the caller already holds an internal DRM master reference acquired with drm_master_internal_acquire().h]hCommit modeset configuration to crtcs without checking if there is a DRM master. The assumption is that the caller already holds an internal DRM master reference acquired with drm_master_internal_acquire().}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:14: ./drivers/gpu/drm/drm_client_modeset.chMhj>+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.chMhj>+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.chMhj>+ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h&drm_client_modeset_commit (C function)c.drm_client_modeset_commithNtauh1hhhhhhNhNubh)}(hhh](j)}(h=int drm_client_modeset_commit (struct drm_client_dev *client)h]j)}(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)}(hj 3h]hstruct drm_device *dev}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj 3ubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:17: ./drivers/gpu/drm/drm_client_event.chKhj3ubj)}(hhh]h)}(h DRM deviceh]h DRM device}(hj&3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj"3hKhj#3ubah}(h]h ]h"]h$]h&]uh1jhj3ubeh}(h]h ]h"]h$]h&]uh1jhj"3hKhj3ubah}(h]h ]h"]h$]h&]uh1jhj2ubh)}(h**Description**h]j)}(hjH3h]h Description}(hjJ3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjF3ubah}(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 }(hj^3hhhNhNubh)}(h8:c:type:`drm_client_funcs.unregister `h]j)}(hjh3h]hdrm_client_funcs.unregister}(hjj3hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjf3ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjjdrm_client_funcsuh1hha/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:17: ./drivers/gpu/drm/drm_client_event.chKhj^3ubhh callback. The callback function is responsibe for releaseing all resources including the client itself.}(hj^3hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj3hKhj2ubh)}(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.}(hj3hhhNhNubah}(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&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h#drm_client_dev_hotplug (C function)c.drm_client_dev_hotplughNtauh1hhhhhhNhNubh)}(hhh](j)}(h4void drm_client_dev_hotplug (struct drm_device *dev)h]j)}(h3void drm_client_dev_hotplug(struct drm_device *dev)h](jX )}(hvoidh]hvoid}(hj3hhhNhNubah}(h]h ]jd ah"]h$]h&]uh1jW hj3hhha/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:17: ./drivers/gpu/drm/drm_client_event.chKNubj )}(h h]h }(hj3hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhj3hhhj3hKNubj1)}(hdrm_client_dev_hotplugh]j7)}(hdrm_client_dev_hotplugh]hdrm_client_dev_hotplug}(hj3hhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hj3ubah}(h]h ](jIjJeh"]h$]h&]jNjOuh1j0hj3hhhj3hKNubj )}(h(struct drm_device *dev)h]j )}(hstruct drm_device *devh](j)}(hjh]hstruct}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj3ubj )}(h h]h }(hj 4hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhj3ubh)}(hhh]j7)}(h drm_deviceh]h drm_device}(hj4hhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hj4ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj4modnameN classnameNjj)}j]j )}j j3sbc.drm_client_dev_hotplugasbuh1hhj3ubj )}(h h]h }(hj:4hhhNhNubah}(h]h ]j,ah"]h$]h&]uh1jhj3ubj )}(hj h]h*}(hjH4hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj3ubj7)}(hdevh]hdev}(hjU4hhhNhNubah}(h]h ]jBah"]h$]h&]uh1j6hj3ubeh}(h]h ]h"]h$]h&]noemphjNjOuh1j hj3ubah}(h]h ]h"]h$]h&]jNjOuh1j hj3hhhj3hKNubeh}(h]h ]h"]h$]h&]jNjOjVuh1jjWjXhj3hhhj3hKNubah}(h]j3ah ](j\j]eh"]h$]h&]jajb)jchuh1jhj3hKNhj3hhubje)}(hhh]h)}(hSend hotplug event to clientsh]hSend hotplug event to clients}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:17: ./drivers/gpu/drm/drm_client_event.chKNhj|4hhubah}(h]h ]h"]h$]h&]uh1jdhj3hhhj3hKNubeh}(h]h ](jfunctioneh"]h$]h&]jjjj4jj4jjjuh1hhhhhhNhNubj)}(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 }(hj5hhhNhNubh)}(h5:c:type:`drm_client_funcs.hotplug `h]j)}(hj5h]hdrm_client_funcs.hotplug}(hj5hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjjdrm_client_funcsuh1hha/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:17: ./drivers/gpu/drm/drm_client_event.chKPhj5ubh" callback on the attached clients.}(hj5hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj85hKPhj4ubh)}(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.}(hjC5hhhNhNubah}(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&]uh1jhhhhhNhNubeh}(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_handlerj5error_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}j^5j[5s nametypes}j^5sh}(j[5hhjjZj_jjj j j j jJ jO j\jaj!j&jj#jyj~jjjijnjjjYj^j!j !jy#j~#j5&j:&j(j(jU*jZ*j+j,j-j-j/j/j1j2j3j3u 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.