sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget"/translations/zh_CN/gpu/drm-clientmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget"/translations/zh_TW/gpu/drm-clientmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget"/translations/it_IT/gpu/drm-clientmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget"/translations/ja_JP/gpu/drm-clientmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget"/translations/ko_KR/gpu/drm-clientmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget"/translations/sp_SP/gpu/drm-clientmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhsection)}(hhh](htitle)}(hKernel clientsh]hKernel clients}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhjubj)}(hhh](h)}(hkCalled on drm_kms_helper_hotplug_event(). This callback is not called after **unregister** has been called.h](hLCalled on drm_kms_helper_hotplug_event(). This callback is not called after }(hj hhhNhNubj)}(h**unregister**h]h unregister}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh has been called.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhK;hjubh)}(hThis callback is optional.h]hThis callback is optional.}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK>hjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK>hjubj)}(hX=``suspend`` Called when suspending the device. This callback is optional. FIXME: Some callers hold the console lock when invoking this function. This interferes with fbdev emulation, which also tries to acquire the lock. Push the console lock into the callback and remove 'holds_console_lock'. h](j)}(h ``suspend``h]j)}(hjKh]hsuspend}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKLhjEubj)}(hhh](h)}(h"Called when suspending the device.h]h"Called when suspending the device.}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKEhjaubh)}(hThis callback is optional.h]hThis callback is optional.}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKGhjaubj)}(hhh]j)}(hFIXME: Some callers hold the console lock when invoking this function. This interferes with fbdev emulation, which also tries to acquire the lock. Push the console lock into the callback and remove 'holds_console_lock'. h](j)}(h`. 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.hhKehjubj)}(hX6struct drm_client_dev { struct drm_device *dev; const char *name; struct list_head list; const struct drm_client_funcs *funcs; struct drm_file *file; struct mutex modeset_mutex; struct drm_mode_set *modesets; bool suspended; bool hotplug_pending; bool hotplug_failed; };h]hX6struct drm_client_dev { struct drm_device *dev; const char *name; struct list_head list; const struct drm_client_funcs *funcs; struct drm_file *file; struct mutex modeset_mutex; struct drm_mode_set *modesets; bool suspended; bool hotplug_pending; bool hotplug_failed; };}hjsbah}(h]h ]h"]h$]h&]j:j;uh1jhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKghjubh)}(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.hhKthjubj)}(hhh](j)}(h``dev`` DRM device h](j)}(h``dev``h]j)}(hjh]hdev}(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.hhKfhjubj)}(hhh]h)}(h DRM deviceh]h DRM device}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj3hKfhj4ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj3hKfhjubj)}(h``name`` Name of the client. h](j)}(h``name``h]j)}(hjWh]hname}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKkhjQubj)}(hhh]h)}(hName of the client.h]hName of the client.}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1hhjlhKkhjmubah}(h]h ]h"]h$]h&]uh1jhjQubeh}(h]h ]h"]h$]h&]uh1jhjlhKkhjubj)}(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.hhKqhjubj)}(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 ](jAjmc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocjM refdomainjmreftypetype refexplicitrefwarnjSjWj[ drm_deviceuh1hhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKphjubh. Protected by }(hjhhhNhNubh)}(h2:c:type:`drm_device.clientlist_mutex `h]j)}(hjh]hdrm_device.clientlist_mutex}(hjhhhNhNubah}(h]h ](jAjmc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocjM refdomainjmreftypetype refexplicitrefwarnjSjWj[ drm_deviceuh1hhjhKphjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKphjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKqhjubj)}(h*``funcs`` DRM client functions (optional) h](j)}(h ``funcs``h]j)}(hjh]hfuncs}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKxhj ubj)}(hhh]h)}(hDRM client functions (optional)h]hDRM client functions (optional)}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj%hKxhj&ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj%hKxhjubj)}(h``file`` DRM file h](j)}(h``file``h]j)}(hjIh]hfile}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjGubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhK}hjCubj)}(hhh]h)}(hDRM fileh]hDRM file}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj^hK}hj_ubah}(h]h ]h"]h$]h&]uh1jhjCubeh}(h]h ]h"]h$]h&]uh1jhj^hK}hjubj)}(h)``modeset_mutex`` Protects **modesets**. h](j)}(h``modeset_mutex``h]j)}(hjh]h modeset_mutex}(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.hhKhj|ubj)}(hhh]h)}(hProtects **modesets**.h](h Protects }(hjhhhNhNubj)}(h **modesets**h]hmodesets}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhj|ubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(h!``modesets`` CRTC configurations h](j)}(h ``modesets``h]j)}(hjh]hmodesets}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhjubj)}(hhh]h)}(hCRTC configurationsh]hCRTC configurations}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(h-``suspended`` The client has been suspended. h](j)}(h ``suspended``h]j)}(hjh]h suspended}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhjubj)}(hhh]h)}(hThe client has been suspended.h]hThe client has been suspended.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(hk``hotplug_pending`` A hotplug event has been received while the client was suspended. Try again on resume. h](j)}(h``hotplug_pending``h]j)}(hj?h]hhotplug_pending}(hjAhhhNhNubah}(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.hhKhj9ubj)}(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.}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhjUubah}(h]h ]h"]h$]h&]uh1jhj9ubeh}(h]h ]h"]h$]h&]uh1jhjThKhjubj)}(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)}(hjyh]hhotplug_failed}(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^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&]uh1jhjsubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hdrm_client_buffer (C struct)c.drm_client_bufferhNtauh1hhhhhhNhNubh)}(hhh](h)}(hdrm_client_bufferh]h)}(hstruct drm_client_bufferh](h)}(hhh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1hhjhhhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKubj )}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjhhhjhKubj)}(hdrm_client_bufferh]j#)}(hjh]hdrm_client_buffer}(hjhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjubah}(h]h ](j5j6eh"]h$]h&]j:j;uh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]j:j;jBuh1hjCjDhjhhhjhKubah}(h]jah ](jHjIeh"]h$]h&]jMjN)jOhuh1hhjhKhjhhubjQ)}(hhh]h)}(hDRM client bufferh]hDRM client buffer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhjhhubah}(h]h ]h"]h$]h&]uh1jPhjhhhjhKubeh}(h]h ](jmstructeh"]h$]h&]jrjmjsj,jtj,jujvjwuh1hhhhhhNhNubjy)}(hX**Definition**:: struct drm_client_buffer { struct drm_client_dev *client; u32 pitch; struct drm_gem_object *gem; struct iosys_map map; struct drm_framebuffer *fb; }; **Members** ``client`` DRM client ``pitch`` Buffer pitch ``gem`` GEM object backing this buffer FIXME: The dependency on GEM here isn't required, we could convert the driver handle to a dma-buf instead and use the backend-agnostic dma-buf vmap support instead. This would require that the handle2fd prime ioctl is reworked to pull the fd_install step out of the driver backend hooks, to make that final step optional for internal users. ``map`` Virtual address for the buffer ``fb`` DRM framebufferh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubh:}(hj4hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhj0ubj)}(hstruct drm_client_buffer { struct drm_client_dev *client; u32 pitch; struct drm_gem_object *gem; struct iosys_map map; struct drm_framebuffer *fb; };h]hstruct drm_client_buffer { struct drm_client_dev *client; u32 pitch; struct drm_gem_object *gem; struct iosys_map map; struct drm_framebuffer *fb; };}hjQsbah}(h]h ]h"]h$]h&]j:j;uh1jhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhj0ubh)}(h **Members**h]j)}(hjbh]hMembers}(hjdhhhNhNubah}(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.hhKhj0ubj)}(hhh](j)}(h``client`` DRM client h](j)}(h ``client``h]j)}(hjh]hclient}(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.hhKhj{ubj)}(hhh]h)}(h DRM clienth]h DRM client}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhj{ubeh}(h]h ]h"]h$]h&]uh1jhjhKhjxubj)}(h``pitch`` Buffer pitch h](j)}(h ``pitch``h]j)}(hjh]hpitch}(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)}(h Buffer pitchh]h Buffer pitch}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjxubj)}(hX}``gem`` GEM object backing this buffer FIXME: The dependency on GEM here isn't required, we could convert the driver handle to a dma-buf instead and use the backend-agnostic dma-buf vmap support instead. This would require that the handle2fd prime ioctl is reworked to pull the fd_install step out of the driver backend hooks, to make that final step optional for internal 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}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhj ubh)}(hXTFIXME: The dependency on GEM here isn't required, we could convert the driver handle to a dma-buf instead and use the backend-agnostic dma-buf vmap support instead. This would require that the handle2fd prime ioctl is reworked to pull the fd_install step out of the driver backend hooks, to make that final step optional for internal users.h]hXVFIXME: The dependency on GEM here isn’t required, we could convert the driver handle to a dma-buf instead and use the backend-agnostic dma-buf vmap support instead. This would require that the handle2fd prime ioctl is reworked to pull the fd_install step out of the driver backend hooks, to make that final step optional for internal users.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhj ubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj hKhjxubj)}(h'``map`` Virtual address for the buffer h](j)}(h``map``h]j)}(hj< h]hmap}(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.hhKhj6 ubj)}(hhh]h)}(hVirtual address for the bufferh]hVirtual address for the buffer}(hjU hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQ hKhjR ubah}(h]h ]h"]h$]h&]uh1jhj6 ubeh}(h]h ]h"]h$]h&]uh1jhjQ hKhjxubj)}(h``fb`` DRM framebufferh](j)}(h``fb``h]j)}(hju h]hfb}(hjw hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjs ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhjo ubj)}(hhh]h)}(hDRM framebufferh]hDRM framebuffer}(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&]uh1jhjo ubeh}(h]h ]h"]h$]h&]uh1jhj hKhjxubeh}(h]h ]h"]h$]h&]uh1jhj0ubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h%drm_client_for_each_modeset (C macro)c.drm_client_for_each_modesethNtauh1hhhhhhNhNubh)}(hhh](h)}(hdrm_client_for_each_modeseth]h)}(hdrm_client_for_each_modeseth]j)}(hdrm_client_for_each_modeseth]j#)}(hj h]hdrm_client_for_each_modeset}(hj hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj ubah}(h]h ](j5j6eh"]h$]h&]j:j;uh1jhj hhhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKubah}(h]h ]h"]h$]h&]j:j;jBuh1hjCjDhj hhhj hKubah}(h]j ah ](jHjIeh"]h$]h&]jMjN)jOhuh1hhj hKhj hhubjQ)}(hhh]h}(h]h ]h"]h$]h&]uh1jPhj hhhj hKubeh}(h]h ](jmmacroeh"]h$]h&]jrjmjsj jtj jujvjwuh1hhhhhhNhNubh)}(h1``drm_client_for_each_modeset (modeset, client)``h]j)}(hj h]h-drm_client_for_each_modeset (modeset, client)}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhhhhubh block_quote)}(hIterate over client modesets h]h)}(hIterate over client modesetsh]hIterate over client modesets}(hj! hhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhj ubah}(h]h ]h"]h$]h&]uh1j hj/ hKhhhhubjy)}(hY**Parameters** ``modeset`` :c:type:`drm_mode_set` loop cursor ``client`` DRM clienth](h)}(h**Parameters**h]j)}(hj< h]h Parameters}(hj> hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj: ubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhj6 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&]uh1jhjY ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhjU ubj)}(hhh]h)}(h":c:type:`drm_mode_set` loop cursorh](h)}(h:c:type:`drm_mode_set`h]j)}(hjz h]h drm_mode_set}(hj| hhhNhNubah}(h]h ](jAjmc-typeeh"]h$]h&]uh1jhjx ubah}(h]h ]h"]h$]h&]refdocjM refdomainjmreftypetype refexplicitrefwarnjSjWj[ drm_mode_setuh1hhjp hKhjt ubh loop cursor}(hjt hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjp hKhjq ubah}(h]h ]h"]h$]h&]uh1jhjU ubeh}(h]h ]h"]h$]h&]uh1jhjp hKhjR ubj)}(h``client`` DRM clienth](j)}(h ``client``h]j)}(hj h]hclient}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhj 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&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hKhjR ubeh}(h]h ]h"]h$]h&]uh1jhj6 ubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h,drm_client_for_each_connector_iter (C macro)$c.drm_client_for_each_connector_iterhNtauh1hhhhhhNhNubh)}(hhh](h)}(h"drm_client_for_each_connector_iterh]h)}(h"drm_client_for_each_connector_iterh]j)}(h"drm_client_for_each_connector_iterh]j#)}(hj h]h"drm_client_for_each_connector_iter}(hj hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj ubah}(h]h ](j5j6eh"]h$]h&]j:j;uh1jhj hhhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKubah}(h]h ]h"]h$]h&]j:j;jBuh1hjCjDhj hhhj$ hKubah}(h]j ah ](jHjIeh"]h$]h&]jMjN)jOhuh1hhj$ hKhj hhubjQ)}(hhh]h}(h]h ]h"]h$]h&]uh1jPhj hhhj$ hKubeh}(h]h ](jmmacroeh"]h$]h&]jrjmjsj= jtj= jujvjwuh1hhhhhhNhNubh)}(h8``drm_client_for_each_connector_iter (connector, iter)``h]j)}(hjC h]h4drm_client_for_each_connector_iter (connector, iter)}(hjE hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjA 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.hhKhjY ubah}(h]h ]h"]h$]h&]uh1j hjk hKhhhhubjy)}(hX\**Parameters** ``connector`` :c:type:`struct drm_connector ` pointer used as cursor ``iter`` :c:type:`struct drm_connector_list_iter ` **Description** This iterates the connectors that are useable for internal clients (excludes writeback connectors). For more info see drm_for_each_connector_iter().h](h)}(h**Parameters**h]j)}(hjx h]h Parameters}(hjz hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjv ubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhjr ubj)}(hhh](j)}(hT``connector`` :c:type:`struct drm_connector ` pointer used as cursor h](j)}(h ``connector``h]j)}(hj h]h connector}(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)}(hE:c:type:`struct drm_connector ` pointer used as cursorh](h)}(h.:c:type:`struct drm_connector `h]j)}(hj h]hstruct drm_connector}(hj hhhNhNubah}(h]h ](jAjmc-typeeh"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]refdocjM refdomainjmreftypetype refexplicitrefwarnjSjWj[ drm_connectoruh1hhj hKhj ubh pointer used as cursor}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hKhj ubj)}(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 ](jAjmc-typeeh"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]refdocjM refdomainjmreftypetype refexplicitrefwarnjSjWj[drm_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 hKhj ubeh}(h]h ]h"]h$]h&]uh1jhjr ubh)}(h**Description**h]j)}(hjD h]h Description}(hjF hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjB ubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhjr 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).}(hjZ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhjr ubh)}(h0For more info see drm_for_each_connector_iter().h]h0For more info see drm_for_each_connector_iter().}(hji hhhNhNubah}(h]h ]h"]h$]h&]uh1hhV/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:8: ./include/drm/drm_client.hhKhjr ubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hdrm_client_init (C function)c.drm_client_inithNtauh1hhhhhhNhNubh)}(hhh](h)}(hint drm_client_init (struct drm_device *dev, struct drm_client_dev *client, const char *name, const struct drm_client_funcs *funcs)h]h)}(hint drm_client_init(struct drm_device *dev, struct drm_client_dev *client, const char *name, const struct drm_client_funcs *funcs)h](hdesc_sig_keyword_type)}(hinth]hint}(hj hhhNhNubah}(h]h ]ktah"]h$]h&]uh1j hj hhh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKMubj )}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj hhhj hKMubj)}(hdrm_client_inith]j#)}(hdrm_client_inith]hdrm_client_init}(hj hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj ubah}(h]h ](j5j6eh"]h$]h&]j:j;uh1jhj hhhj hKMubhdesc_parameterlist)}(ho(struct drm_device *dev, struct drm_client_dev *client, const char *name, const struct drm_client_funcs *funcs)h](hdesc_parameter)}(hstruct drm_device *devh](h)}(hhh]hstruct}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1hhj ubj )}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj ubh)}(hhh]j#)}(h drm_deviceh]h drm_device}(hj hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj ubah}(h]h ]h"]h$]h&] refdomainjmreftype identifier reftargetj modnameN classnameNjSjV)}jY]jT ASTIdentifier)}j j sbc.drm_client_initasbuh1hhj ubj )}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj ubhdesc_sig_punctuation)}(h*h]h*}(hj- hhhNhNubah}(h]h ]pah"]h$]h&]uh1j+ hj ubj#)}(hdevh]hdev}(hj< hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj ubeh}(h]h ]h"]h$]h&]noemphj:j;uh1j hj ubj )}(hstruct drm_client_dev *clienth](h)}(hhh]hstruct}(hjU hhhNhNubah}(h]h ]jah"]h$]h&]uh1hhjQ ubj )}(h h]h }(hjb hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjQ ubh)}(hhh]j#)}(hdrm_client_devh]hdrm_client_dev}(hjs hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjp ubah}(h]h ]h"]h$]h&] refdomainjmreftypej reftargetju modnameN classnameNjSjV)}jY]j c.drm_client_initasbuh1hhjQ ubj )}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjQ ubj, )}(hj/ h]h*}(hj hhhNhNubah}(h]h ]j8 ah"]h$]h&]uh1j+ hjQ ubj#)}(hclienth]hclient}(hj hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjQ ubeh}(h]h ]h"]h$]h&]noemphj:j;uh1j hj ubj )}(hconst char *nameh](h)}(hconsth]hconst}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1hhj ubj )}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj ubj )}(hcharh]hchar}(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ubj )}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj ubj, )}(hj/ h]h*}(hj hhhNhNubah}(h]h ]j8 ah"]h$]h&]uh1j+ hj ubj#)}(hnameh]hname}(hj hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj ubeh}(h]h ]h"]h$]h&]noemphj:j;uh1j hj ubj )}(h$const struct drm_client_funcs *funcsh](h)}(hj h]hconst}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1hhjubj )}(h h]h }(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubh)}(hhh]hstruct}(hj>hhhNhNubah}(h]h ]jah"]h$]h&]uh1hhjubj )}(h h]h }(hjKhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubh)}(hhh]j#)}(hdrm_client_funcsh]hdrm_client_funcs}(hj\hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjYubah}(h]h ]h"]h$]h&] refdomainjmreftypej reftargetj^modnameN classnameNjSjV)}jY]j c.drm_client_initasbuh1hhjubj )}(h h]h }(hjzhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj, )}(hj/ h]h*}(hjhhhNhNubah}(h]h ]j8 ah"]h$]h&]uh1j+ hjubj#)}(hfuncsh]hfuncs}(hjhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjubeh}(h]h ]h"]h$]h&]noemphj:j;uh1j hj ubeh}(h]h ]h"]h$]h&]j:j;uh1j hj hhhj hKMubeh}(h]h ]h"]h$]h&]j:j;jBuh1hjCjDhj hhhj hKMubah}(h]j ah ](jHjIeh"]h$]h&]jMjN)jOhuh1hhj hKMhj hhubjQ)}(hhh]h)}(hInitialise a DRM clienth]hInitialise a DRM client}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chK?hjhhubah}(h]h ]h"]h$]h&]uh1jPhj hhhj hKMubeh}(h]h ](jmfunctioneh"]h$]h&]jrjmjsjjtjjujvjwuh1hhhhhhNhNubjy)}(hXC**Parameters** ``struct drm_device *dev`` DRM device ``struct drm_client_dev *client`` DRM client ``const char *name`` Client name ``const struct drm_client_funcs *funcs`` DRM client functions (optional) **Description** This initialises the client and opens a :c:type:`drm_file`. Use drm_client_register() to complete the process. The caller needs to hold a reference on **dev** before calling this function. The client is freed when the :c:type:`drm_device` is unregistered. See drm_client_release(). **Return** Zero on success or negative error code on failure.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKChjubj)}(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.chK@hjubj)}(hhh]h)}(h DRM deviceh]h DRM device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK@hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK@hjubj)}(h-``struct drm_client_dev *client`` DRM client h](j)}(h!``struct drm_client_dev *client``h]j)}(hj9h]hstruct drm_client_dev *client}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKAhj3ubj)}(hhh]h)}(h DRM clienth]h DRM client}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjNhKAhjOubah}(h]h ]h"]h$]h&]uh1jhj3ubeh}(h]h ]h"]h$]h&]uh1jhjNhKAhjubj)}(h!``const char *name`` Client name h](j)}(h``const char *name``h]j)}(hjrh]hconst char *name}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jhjpubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKBhjlubj)}(hhh]h)}(h Client nameh]h Client name}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKBhjubah}(h]h ]h"]h$]h&]uh1jhjlubeh}(h]h ]h"]h$]h&]uh1jhjhKBhjubj)}(hI``const struct drm_client_funcs *funcs`` DRM client functions (optional) h](j)}(h(``const struct drm_client_funcs *funcs``h]j)}(hjh]h$const struct drm_client_funcs *funcs}(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)}(hDRM client functions (optional)h]hDRM client functions (optional)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKChjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKChjubeh}(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.chKEhjubh)}(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 ](jAjmc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocjM refdomainjmreftypetype refexplicitrefwarnjSjWj[drm_fileuh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKEhjubh]. Use drm_client_register() to complete the process. The caller needs to hold a reference on }(hjhhhNhNubj)}(h**dev**h]hdev}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh< before calling this function. The client is freed when the }(hjhhhNhNubh)}(h:c:type:`drm_device`h]j)}(hj<h]h drm_device}(hj>hhhNhNubah}(h]h ](jAjmc-typeeh"]h$]h&]uh1jhj:ubah}(h]h ]h"]h$]h&]refdocjM refdomainjmreftypetype refexplicitrefwarnjSjWj[ drm_deviceuh1hhj#hKEhjubh+ is unregistered. See drm_client_release().}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj#hKEhjubh)}(h **Return**h]j)}(hjeh]hReturn}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jhjcubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKJhjubh)}(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.chKJhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h drm_client_register (C function)c.drm_client_registerhNtauh1hhhhhhNhNubh)}(hhh](h)}(h8void drm_client_register (struct drm_client_dev *client)h]h)}(h7void drm_client_register(struct drm_client_dev *client)h](j )}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKyubj )}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjhhhjhKyubj)}(hdrm_client_registerh]j#)}(hdrm_client_registerh]hdrm_client_register}(hjhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjubah}(h]h ](j5j6eh"]h$]h&]j:j;uh1jhjhhhjhKyubj )}(h(struct drm_client_dev *client)h]j )}(hstruct drm_client_dev *clienth](h)}(hhh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubh)}(hhh]j#)}(hdrm_client_devh]hdrm_client_dev}(hjhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjubah}(h]h ]h"]h$]h&] refdomainjmreftypej reftargetjmodnameN classnameNjSjV)}jY]j )}j jsbc.drm_client_registerasbuh1hhjubj )}(h h]h }(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj, )}(hj/ h]h*}(hj3hhhNhNubah}(h]h ]j8 ah"]h$]h&]uh1j+ hjubj#)}(hclienth]hclient}(hj@hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjubeh}(h]h ]h"]h$]h&]noemphj:j;uh1j hjubah}(h]h ]h"]h$]h&]j:j;uh1j hjhhhjhKyubeh}(h]h ]h"]h$]h&]j:j;jBuh1hjCjDhjhhhjhKyubah}(h]jah ](jHjIeh"]h$]h&]jMjN)jOhuh1hhjhKyhjhhubjQ)}(hhh]h)}(hRegister clienth]hRegister client}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKlhjghhubah}(h]h ]h"]h$]h&]uh1jPhjhhhjhKyubeh}(h]h ](jmfunctioneh"]h$]h&]jrjmjsjjtjjujvjwuh1hhhhhhNhNubjy)}(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)}(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.chKphjubj)}(hhh]j)}(h-``struct drm_client_dev *client`` DRM client h](j)}(h!``struct drm_client_dev *client``h]j)}(hjh]hstruct drm_client_dev *client}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKmhjubj)}(hhh]h)}(h DRM clienth]h DRM client}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKmhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKmhjubah}(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.chKohjubh)}(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 ](jAjmc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocjM refdomainjmreftypetype refexplicitrefwarnjSjWj[ drm_deviceuh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKohjubh( client list to activate its callbacks. }(hjhhhNhNubj)}(h **client**h]hclient}(hj(hhhNhNubah}(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&]uh1hhj#hKohjubh)}(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.}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKuhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hdrm_client_release (C function)c.drm_client_releasehNtauh1hhhhhhNhNubh)}(hhh](h)}(h7void drm_client_release (struct drm_client_dev *client)h]h)}(h6void drm_client_release(struct drm_client_dev *client)h](j )}(hvoidh]hvoid}(hjohhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjkhhh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKubj )}(h h]h }(hj~hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjkhhhj}hKubj)}(hdrm_client_releaseh]j#)}(hdrm_client_releaseh]hdrm_client_release}(hjhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjubah}(h]h ](j5j6eh"]h$]h&]j:j;uh1jhjkhhhj}hKubj )}(h(struct drm_client_dev *client)h]j )}(hstruct drm_client_dev *clienth](h)}(hhh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubh)}(hhh]j#)}(hdrm_client_devh]hdrm_client_dev}(hjhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjubah}(h]h ]h"]h$]h&] refdomainjmreftypej reftargetjmodnameN classnameNjSjV)}jY]j )}j jsbc.drm_client_releaseasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj, )}(hj/ h]h*}(hjhhhNhNubah}(h]h ]j8 ah"]h$]h&]uh1j+ hjubj#)}(hclienth]hclient}(hjhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjubeh}(h]h ]h"]h$]h&]noemphj:j;uh1j hjubah}(h]h ]h"]h$]h&]j:j;uh1j hjkhhhj}hKubeh}(h]h ]h"]h$]h&]j:j;jBuh1hjCjDhjghhhj}hKubah}(h]jbah ](jHjIeh"]h$]h&]jMjN)jOhuh1hhj}hKhjdhhubjQ)}(hhh]h)}(hRelease DRM client resourcesh]hRelease DRM client resources}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKhj,hhubah}(h]h ]h"]h$]h&]uh1jPhjdhhhj}hKubeh}(h]h ](jmfunctioneh"]h$]h&]jrjmjsjGjtjGjujvjwuh1hhhhhhNhNubjy)}(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)}(hjQh]h Parameters}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjOubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKhjKubj)}(hhh]j)}(h-``struct drm_client_dev *client`` DRM client h](j)}(h!``struct drm_client_dev *client``h]j)}(hjph]hstruct drm_client_dev *client}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjnubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKhjjubj)}(hhh]h)}(h DRM clienth]h DRM client}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjgubah}(h]h ]h"]h$]h&]uh1jhjKubh)}(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.chKhjKubh)}(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 ](jAjmc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocjM refdomainjmreftypetype refexplicitrefwarnjSjWj[drm_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 ](jAjmc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocjM refdomainjmreftypetype refexplicitrefwarnjSjWj[drm_client_funcsuh1hhjhKhjubh callback is _not_ set.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKhjKubh)}(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.chKhjKubh)}(h**Note**h]j)}(hj'h]hNote}(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.chKhjKubh)}(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.}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKhjKubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h)drm_client_buffer_vmap_local (C function)c.drm_client_buffer_vmap_localhNtauh1hhhhhhNhNubh)}(hhh](h)}(h_int drm_client_buffer_vmap_local (struct drm_client_buffer *buffer, struct iosys_map *map_copy)h]h)}(h^int drm_client_buffer_vmap_local(struct drm_client_buffer *buffer, struct iosys_map *map_copy)h](j )}(hinth]hint}(hjlhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKubj )}(h h]h }(hj{hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjhhhhjzhKubj)}(hdrm_client_buffer_vmap_localh]j#)}(hdrm_client_buffer_vmap_localh]hdrm_client_buffer_vmap_local}(hjhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjubah}(h]h ](j5j6eh"]h$]h&]j:j;uh1jhjhhhhjzhKubj )}(h>(struct drm_client_buffer *buffer, struct iosys_map *map_copy)h](j )}(h struct drm_client_buffer *bufferh](h)}(hhh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubh)}(hhh]j#)}(hdrm_client_bufferh]hdrm_client_buffer}(hjhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjubah}(h]h ]h"]h$]h&] refdomainjmreftypej reftargetjmodnameN classnameNjSjV)}jY]j )}j jsbc.drm_client_buffer_vmap_localasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj, )}(hj/ h]h*}(hjhhhNhNubah}(h]h ]j8 ah"]h$]h&]uh1j+ hjubj#)}(hbufferh]hbuffer}(hjhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjubeh}(h]h ]h"]h$]h&]noemphj:j;uh1j hjubj )}(hstruct iosys_map *map_copyh](h)}(hhh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1hhjubj )}(h h]h }(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubh)}(hhh]j#)}(h iosys_maph]h iosys_map}(hj9hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj6ubah}(h]h ]h"]h$]h&] refdomainjmreftypej reftargetj;modnameN classnameNjSjV)}jY]jc.drm_client_buffer_vmap_localasbuh1hhjubj )}(h h]h }(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj, )}(hj/ h]h*}(hjehhhNhNubah}(h]h ]j8 ah"]h$]h&]uh1j+ hjubj#)}(hmap_copyh]hmap_copy}(hjrhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjubeh}(h]h ]h"]h$]h&]noemphj:j;uh1j hjubeh}(h]h ]h"]h$]h&]j:j;uh1j hjhhhhjzhKubeh}(h]h ]h"]h$]h&]j:j;jBuh1hjCjDhjdhhhjzhKubah}(h]j_ah ](jHjIeh"]h$]h&]jMjN)jOhuh1hhjzhKhjahhubjQ)}(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.chKhjhhubah}(h]h ]h"]h$]h&]uh1jPhjahhhjzhKubeh}(h]h ](jmfunctioneh"]h$]h&]jrjmjsjjtjjujvjwuh1hhhhhhNhNubjy)}(hX**Parameters** ``struct drm_client_buffer *buffer`` DRM client buffer ``struct iosys_map *map_copy`` Returns the mapped memory's address **Description** This function maps a client buffer into kernel address space. If the buffer is already mapped, it returns the existing mapping's address. Client buffer mappings are not ref'counted. Each call to drm_client_buffer_vmap_local() should be closely followed by a call to drm_client_buffer_vunmap_local(). See drm_client_buffer_vmap() for long-term mappings. The returned address is a copy of the internal value. In contrast to other vmap interfaces, you don't need it for the client's vunmap function. So you can modify it at will during blit and draw operations. **Return** 0 on success, or a negative errno code otherwise.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKhjubj)}(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.chKhjubj)}(hhh]h)}(hDRM client bufferh]hDRM client buffer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(hC``struct iosys_map *map_copy`` Returns the mapped memory's address h](j)}(h``struct iosys_map *map_copy``h]j)}(hjh]hstruct iosys_map *map_copy}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKhjubj)}(hhh]h)}(h#Returns the mapped memory's addressh]h%Returns the mapped memory’s address}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+hKhj,ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj+hKhjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(h**Description**h]j)}(hjQh]h Description}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjOubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKhjubh)}(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.}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKhjubh)}(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.}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chKhjubh)}(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.chKhjubh)}(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.chKhjubj )}(h10 on success, or a negative errno code otherwise.h]h)}(hjh]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.chKhjubah}(h]h ]h"]h$]h&]uh1j hjhKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h+drm_client_buffer_vunmap_local (C function) c.drm_client_buffer_vunmap_localhNtauh1hhhhhhNhNubh)}(hhh](h)}(hFvoid drm_client_buffer_vunmap_local (struct drm_client_buffer *buffer)h]h)}(hEvoid drm_client_buffer_vunmap_local(struct drm_client_buffer *buffer)h](j )}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMubj )}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjhhhjhMubj)}(hdrm_client_buffer_vunmap_localh]j#)}(hdrm_client_buffer_vunmap_localh]hdrm_client_buffer_vunmap_local}(hjhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjubah}(h]h ](j5j6eh"]h$]h&]j:j;uh1jhjhhhjhMubj )}(h"(struct drm_client_buffer *buffer)h]j )}(h struct drm_client_buffer *bufferh](h)}(hhh]hstruct}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1hhjubj )}(h h]h }(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubh)}(hhh]j#)}(hdrm_client_bufferh]hdrm_client_buffer}(hj?hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj<ubah}(h]h ]h"]h$]h&] refdomainjmreftypej reftargetjAmodnameN classnameNjSjV)}jY]j )}j jsb c.drm_client_buffer_vunmap_localasbuh1hhjubj )}(h h]h }(hj_hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj, )}(hj/ h]h*}(hjmhhhNhNubah}(h]h ]j8 ah"]h$]h&]uh1j+ hjubj#)}(hbufferh]hbuffer}(hjzhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjubeh}(h]h ]h"]h$]h&]noemphj:j;uh1j hjubah}(h]h ]h"]h$]h&]j:j;uh1j hjhhhjhMubeh}(h]h ]h"]h$]h&]j:j;jBuh1hjCjDhjhhhjhMubah}(h]jah ](jHjIeh"]h$]h&]jMjN)jOhuh1hhjhMhjhhubjQ)}(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.chM hjhhubah}(h]h ]h"]h$]h&]uh1jPhjhhhjhMubeh}(h]h ](jmfunctioneh"]h$]h&]jrjmjsjjtjjujvjwuh1hhhhhhNhNubjy)}(hX'**Parameters** ``struct drm_client_buffer *buffer`` DRM client buffer **Description** This function removes a client buffer's memory mapping established with drm_client_buffer_vunmap_local(). Calling this function is only required by clients that manage their buffer mappings by themselves.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMhjubj)}(hhh]j)}(h7``struct drm_client_buffer *buffer`` DRM client buffer h](j)}(h$``struct drm_client_buffer *buffer``h]j)}(hjh]h struct drm_client_buffer *buffer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMhjubj)}(hhh]h)}(hDRM client bufferh]hDRM client buffer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(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.chMhjubh)}(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.}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h#drm_client_buffer_vmap (C function)c.drm_client_buffer_vmaphNtauh1hhhhhhNhNubh)}(hhh](h)}(hYint drm_client_buffer_vmap (struct drm_client_buffer *buffer, struct iosys_map *map_copy)h]h)}(hXint drm_client_buffer_vmap(struct drm_client_buffer *buffer, struct iosys_map *map_copy)h](j )}(hinth]hint}(hjehhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjahhh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chM2ubj )}(h h]h }(hjthhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjahhhjshM2ubj)}(hdrm_client_buffer_vmaph]j#)}(hdrm_client_buffer_vmaph]hdrm_client_buffer_vmap}(hjhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjubah}(h]h ](j5j6eh"]h$]h&]j:j;uh1jhjahhhjshM2ubj )}(h>(struct drm_client_buffer *buffer, struct iosys_map *map_copy)h](j )}(h struct drm_client_buffer *bufferh](h)}(hhh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubh)}(hhh]j#)}(hdrm_client_bufferh]hdrm_client_buffer}(hjhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjubah}(h]h ]h"]h$]h&] refdomainjmreftypej reftargetjmodnameN classnameNjSjV)}jY]j )}j jsbc.drm_client_buffer_vmapasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj, )}(hj/ h]h*}(hjhhhNhNubah}(h]h ]j8 ah"]h$]h&]uh1j+ hjubj#)}(hbufferh]hbuffer}(hjhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjubeh}(h]h ]h"]h$]h&]noemphj:j;uh1j hjubj )}(hstruct iosys_map *map_copyh](h)}(hhh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1hhjubj )}(h h]h }(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubh)}(hhh]j#)}(h iosys_maph]h iosys_map}(hj2hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj/ubah}(h]h ]h"]h$]h&] refdomainjmreftypej reftargetj4modnameN classnameNjSjV)}jY]jc.drm_client_buffer_vmapasbuh1hhjubj )}(h h]h }(hjPhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj, )}(hj/ h]h*}(hj^hhhNhNubah}(h]h ]j8 ah"]h$]h&]uh1j+ hjubj#)}(hmap_copyh]hmap_copy}(hjkhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjubeh}(h]h ]h"]h$]h&]noemphj:j;uh1j hjubeh}(h]h ]h"]h$]h&]j:j;uh1j hjahhhjshM2ubeh}(h]h ]h"]h$]h&]j:j;jBuh1hjCjDhj]hhhjshM2ubah}(h]jXah ](jHjIeh"]h$]h&]jMjN)jOhuh1hhjshM2hjZhhubjQ)}(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&]uh1jPhjZhhhjshM2ubeh}(h]h ](jmfunctioneh"]h$]h&]jrjmjsjjtjjujvjwuh1hhhhhhNhNubjy)}(hX **Parameters** ``struct drm_client_buffer *buffer`` DRM client buffer ``struct iosys_map *map_copy`` Returns the mapped memory's address **Description** This function maps a client buffer into kernel address space. If the buffer is already mapped, it returns the existing mapping's address. Client buffer mappings are not ref'counted. Each call to drm_client_buffer_vmap() should be followed by a call to drm_client_buffer_vunmap(); or the client buffer should be mapped throughout its lifetime. The returned address is a copy of the internal value. In contrast to other vmap interfaces, you don't need it for the client's vunmap function. So you can modify it at will during blit and draw operations. **Return** 0 on success, or a negative errno code otherwise.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.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&]uh1hhjhM hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhM hjubj)}(hC``struct iosys_map *map_copy`` Returns the mapped memory's address h](j)}(h``struct iosys_map *map_copy``h]j)}(hjh]hstruct iosys_map *map_copy}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chM!hj ubj)}(hhh]h)}(h#Returns the mapped memory's addressh]h%Returns the mapped memory’s address}(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!hjubeh}(h]h ]h"]h$]h&]uh1jhjubh)}(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.chM#hjubh)}(hThis function maps a client buffer into kernel address space. If the buffer is already mapped, it returns the existing mapping's address.h]hThis function maps a client buffer into kernel address space. If the buffer is already mapped, it returns the existing mapping’s address.}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chM#hjubh)}(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.}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chM&hjubh)}(hThe returned address is a copy of the internal value. In contrast to other vmap interfaces, you don't need it for the client's vunmap function. So you can modify it at will during blit and draw operations.h]hThe returned address is a copy of the internal value. In contrast to other vmap interfaces, you don’t need it for the client’s vunmap function. So you can modify it at will during blit and draw operations.}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chM+hjubh)}(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.chM/hjubj )}(h10 on success, or a negative errno code otherwise.h]h)}(hjh]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/hjubah}(h]h ]h"]h$]h&]uh1j hjhM/hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h%drm_client_buffer_vunmap (C function)c.drm_client_buffer_vunmaphNtauh1hhhhhhNhNubh)}(hhh](h)}(h@void drm_client_buffer_vunmap (struct drm_client_buffer *buffer)h]h)}(h?void drm_client_buffer_vunmap(struct drm_client_buffer *buffer)h](j )}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMYubj )}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjhhhjhMYubj)}(hdrm_client_buffer_vunmaph]j#)}(hdrm_client_buffer_vunmaph]hdrm_client_buffer_vunmap}(hjhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjubah}(h]h ](j5j6eh"]h$]h&]j:j;uh1jhjhhhjhMYubj )}(h"(struct drm_client_buffer *buffer)h]j )}(h struct drm_client_buffer *bufferh](h)}(hhh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1hhjubj )}(h h]h }(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubh)}(hhh]j#)}(hdrm_client_bufferh]hdrm_client_buffer}(hj8hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj5ubah}(h]h ]h"]h$]h&] refdomainjmreftypej reftargetj:modnameN classnameNjSjV)}jY]j )}j jsbc.drm_client_buffer_vunmapasbuh1hhjubj )}(h h]h }(hjXhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj, )}(hj/ h]h*}(hjfhhhNhNubah}(h]h ]j8 ah"]h$]h&]uh1j+ hjubj#)}(hbufferh]hbuffer}(hjshhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjubeh}(h]h ]h"]h$]h&]noemphj:j;uh1j hjubah}(h]h ]h"]h$]h&]j:j;uh1j hjhhhjhMYubeh}(h]h ]h"]h$]h&]j:j;jBuh1hjCjDhjhhhjhMYubah}(h]jah ](jHjIeh"]h$]h&]jMjN)jOhuh1hhjhMYhjhhubjQ)}(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.chMRhjhhubah}(h]h ]h"]h$]h&]uh1jPhjhhhjhMYubeh}(h]h ](jmfunctioneh"]h$]h&]jrjmjsjjtjjujvjwuh1hhhhhhNhNubjy)}(h**Parameters** ``struct drm_client_buffer *buffer`` DRM client buffer **Description** This function removes a client buffer's memory mapping. Calling this function is only required by clients that manage their buffer mappings by themselves.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMVhjubj)}(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.chMShjubj)}(hhh]h)}(hDRM client bufferh]hDRM client buffer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMShjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMShjubah}(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.chMUhjubh)}(hThis function removes a client buffer's memory mapping. Calling this function is only required by clients that manage their buffer mappings by themselves.h]hThis function removes a client buffer’s memory mapping. Calling this function is only required by clients that manage their buffer mappings by themselves.}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMUhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h*drm_client_framebuffer_create (C function)c.drm_client_framebuffer_createhNtauh1hhhhhhNhNubh)}(hhh](h)}(h{struct drm_client_buffer * drm_client_framebuffer_create (struct drm_client_dev *client, u32 width, u32 height, u32 format)h]h)}(hystruct drm_client_buffer *drm_client_framebuffer_create(struct drm_client_dev *client, u32 width, u32 height, u32 format)h](h)}(hhh]hstruct}(hj^hhhNhNubah}(h]h ]jah"]h$]h&]uh1hhjZhhh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMubj )}(h h]h }(hjlhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjZhhhjkhMubh)}(hhh]j#)}(hdrm_client_bufferh]hdrm_client_buffer}(hj}hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjzubah}(h]h ]h"]h$]h&] refdomainjmreftypej reftargetjmodnameN classnameNjSjV)}jY]j )}j drm_client_framebuffer_createsbc.drm_client_framebuffer_createasbuh1hhjZhhhjkhMubj )}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjZhhhjkhMubj, )}(hj/ h]h*}(hjhhhNhNubah}(h]h ]j8 ah"]h$]h&]uh1j+ hjZhhhjkhMubj)}(hdrm_client_framebuffer_createh]j#)}(hjh]hdrm_client_framebuffer_create}(hjhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjubah}(h]h ](j5j6eh"]h$]h&]j:j;uh1jhjZhhhjkhMubj )}(hB(struct drm_client_dev *client, u32 width, u32 height, u32 format)h](j )}(hstruct drm_client_dev *clienth](h)}(hhh]hstruct}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubh)}(hhh]j#)}(hdrm_client_devh]hdrm_client_dev}(hjhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjubah}(h]h ]h"]h$]h&] refdomainjmreftypej reftargetjmodnameN classnameNjSjV)}jY]jc.drm_client_framebuffer_createasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj, )}(hj/ h]h*}(hj"hhhNhNubah}(h]h ]j8 ah"]h$]h&]uh1j+ hjubj#)}(hclienth]hclient}(hj/hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjubeh}(h]h ]h"]h$]h&]noemphj:j;uh1j hjubj )}(h u32 widthh](h)}(hhh]j#)}(hu32h]hu32}(hjKhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjHubah}(h]h ]h"]h$]h&] refdomainjmreftypej reftargetjMmodnameN classnameNjSjV)}jY]jc.drm_client_framebuffer_createasbuh1hhjDubj )}(h h]h }(hjihhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjDubj#)}(hwidthh]hwidth}(hjwhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjDubeh}(h]h ]h"]h$]h&]noemphj:j;uh1j hjubj )}(h u32 heighth](h)}(hhh]j#)}(hu32h]hu32}(hjhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjubah}(h]h ]h"]h$]h&] refdomainjmreftypej reftargetjmodnameN classnameNjSjV)}jY]jc.drm_client_framebuffer_createasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj#)}(hheighth]hheight}(hjhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjubeh}(h]h ]h"]h$]h&]noemphj:j;uh1j hjubj )}(h u32 formath](h)}(hhh]j#)}(hu32h]hu32}(hjhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjubah}(h]h ]h"]h$]h&] refdomainjmreftypej reftargetjmodnameN classnameNjSjV)}jY]jc.drm_client_framebuffer_createasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjubj#)}(hformath]hformat}(hjhhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjubeh}(h]h ]h"]h$]h&]noemphj:j;uh1j hjubeh}(h]h ]h"]h$]h&]j:j;uh1j hjZhhhjkhMubeh}(h]h ]h"]h$]h&]j:j;jBuh1hjCjDhjVhhhjkhMubah}(h]jQah ](jHjIeh"]h$]h&]jMjN)jOhuh1hhjkhMhjShhubjQ)}(hhh]h)}(hCreate a client framebufferh]hCreate a client framebuffer}(hj1hhhNhNubah}(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&]uh1jPhjShhhjkhMubeh}(h]h ](jmfunctioneh"]h$]h&]jrjmjsjIjtjIjujvjwuh1hhhhhhNhNubjy)}(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_framebuffer_delete() to free the buffer. **Return** Pointer to a client buffer or an error pointer on failure.h](h)}(h**Parameters**h]j)}(hjSh]h Parameters}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjQubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMhjMubj)}(hhh](j)}(h-``struct drm_client_dev *client`` DRM client h](j)}(h!``struct drm_client_dev *client``h]j)}(hjrh]hstruct drm_client_dev *client}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jhjpubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMhjlubj)}(hhh]h)}(h DRM clienth]h DRM client}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjlubeh}(h]h ]h"]h$]h&]uh1jhjhMhjiubj)}(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&]uh1jhjhMhjiubj)}(h"``u32 height`` Framebuffer height h](j)}(h``u32 height``h]j)}(hjh]h u32 height}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMhjubj)}(hhh]h)}(hFramebuffer heighth]hFramebuffer height}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjiubj)}(h``u32 format`` Buffer format h](j)}(h``u32 format``h]j)}(hjh]h u32 format}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMhjubj)}(hhh]h)}(h Buffer formath]h Buffer format}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj2hMhj3ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj2hMhjiubeh}(h]h ]h"]h$]h&]uh1jhjMubh)}(h**Description**h]j)}(hjXh]h Description}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMhjMubh)}(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_framebuffer_delete() to free the buffer.h](hThis function creates a }(hjnhhhNhNubh)}(h:c:type:`drm_client_buffer`h]j)}(hjxh]hdrm_client_buffer}(hjzhhhNhNubah}(h]h ](jAjmc-typeeh"]h$]h&]uh1jhjvubah}(h]h ]h"]h$]h&]refdocjM refdomainjmreftypetype refexplicitrefwarnjSjWj[drm_client_bufferuh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMhjnubh which consists of a }(hjnhhhNhNubh)}(h:c:type:`drm_framebuffer`h]j)}(hjh]hdrm_framebuffer}(hjhhhNhNubah}(h]h ](jAjmc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocjM refdomainjmreftypetype refexplicitrefwarnjSjWj[drm_framebufferuh1hhjhMhjnubhR backed by a dumb buffer. Call drm_client_framebuffer_delete() to free the buffer.}(hjnhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMhjMubh)}(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.chMhjMubh)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMhjMubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h*drm_client_framebuffer_delete (C function)c.drm_client_framebuffer_deletehNtauh1hhhhhhNhNubh)}(hhh](h)}(hEvoid drm_client_framebuffer_delete (struct drm_client_buffer *buffer)h]h)}(hDvoid drm_client_framebuffer_delete(struct drm_client_buffer *buffer)h](j )}(hvoidh]hvoid}(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj hhh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMubj )}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj hhhj hMubj)}(hdrm_client_framebuffer_deleteh]j#)}(hdrm_client_framebuffer_deleteh]hdrm_client_framebuffer_delete}(hj+ hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj' ubah}(h]h ](j5j6eh"]h$]h&]j:j;uh1jhj hhhj hMubj )}(h"(struct drm_client_buffer *buffer)h]j )}(h struct drm_client_buffer *bufferh](h)}(hhh]hstruct}(hjG hhhNhNubah}(h]h ]jah"]h$]h&]uh1hhjC ubj )}(h h]h }(hjT hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjC ubh)}(hhh]j#)}(hdrm_client_bufferh]hdrm_client_buffer}(hje hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjb ubah}(h]h ]h"]h$]h&] refdomainjmreftypej reftargetjg modnameN classnameNjSjV)}jY]j )}j j- sbc.drm_client_framebuffer_deleteasbuh1hhjC ubj )}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjC ubj, )}(hj/ h]h*}(hj hhhNhNubah}(h]h ]j8 ah"]h$]h&]uh1j+ hjC ubj#)}(hbufferh]hbuffer}(hj hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjC ubeh}(h]h ]h"]h$]h&]noemphj:j;uh1j hj? ubah}(h]h ]h"]h$]h&]j:j;uh1j hj hhhj hMubeh}(h]h ]h"]h$]h&]j:j;jBuh1hjCjDhj hhhj hMubah}(h]jah ](jHjIeh"]h$]h&]jMjN)jOhuh1hhj hMhjhhubjQ)}(hhh]h)}(hDelete a client framebufferh]hDelete a client framebuffer}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMhj hhubah}(h]h ]h"]h$]h&]uh1jPhjhhhj hMubeh}(h]h ](jmfunctioneh"]h$]h&]jrjmjsj jtj jujvjwuh1hhhhhhNhNubjy)}(hV**Parameters** ``struct drm_client_buffer *buffer`` DRM client buffer (can be NULL)h](h)}(h**Parameters**h]j)}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMhj ubj)}(hhh]j)}(hD``struct drm_client_buffer *buffer`` DRM client buffer (can be NULL)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 buffer (can be NULL)h]hDRM client buffer (can be NULL)}(hj$!hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMhj!!ubah}(h]h ]h"]h$]h&]uh1jhj!ubeh}(h]h ]h"]h$]h&]uh1jhj !hMhj!ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h)drm_client_framebuffer_flush (C function)c.drm_client_framebuffer_flushhNtauh1hhhhhhNhNubh)}(hhh](h)}(hZint drm_client_framebuffer_flush (struct drm_client_buffer *buffer, struct drm_rect *rect)h]h)}(hYint drm_client_framebuffer_flush(struct drm_client_buffer *buffer, struct drm_rect *rect)h](j )}(hinth]hint}(hje!hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hja!hhh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMubj )}(h h]h }(hjt!hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hja!hhhjs!hMubj)}(hdrm_client_framebuffer_flushh]j#)}(hdrm_client_framebuffer_flushh]hdrm_client_framebuffer_flush}(hj!hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj!ubah}(h]h ](j5j6eh"]h$]h&]j:j;uh1jhja!hhhjs!hMubj )}(h9(struct drm_client_buffer *buffer, struct drm_rect *rect)h](j )}(h struct drm_client_buffer *bufferh](h)}(hhh]hstruct}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1hhj!ubj )}(h h]h }(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj!ubh)}(hhh]j#)}(hdrm_client_bufferh]hdrm_client_buffer}(hj!hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj!ubah}(h]h ]h"]h$]h&] refdomainjmreftypej reftargetj!modnameN classnameNjSjV)}jY]j )}j j!sbc.drm_client_framebuffer_flushasbuh1hhj!ubj )}(h h]h }(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj!ubj, )}(hj/ h]h*}(hj!hhhNhNubah}(h]h ]j8 ah"]h$]h&]uh1j+ hj!ubj#)}(hbufferh]hbuffer}(hj!hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj!ubeh}(h]h ]h"]h$]h&]noemphj:j;uh1j hj!ubj )}(hstruct drm_rect *recth](h)}(hhh]hstruct}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1hhj"ubj )}(h h]h }(hj!"hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj"ubh)}(hhh]j#)}(hdrm_recth]hdrm_rect}(hj2"hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj/"ubah}(h]h ]h"]h$]h&] refdomainjmreftypej reftargetj4"modnameN classnameNjSjV)}jY]j!c.drm_client_framebuffer_flushasbuh1hhj"ubj )}(h h]h }(hjP"hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj"ubj, )}(hj/ h]h*}(hj^"hhhNhNubah}(h]h ]j8 ah"]h$]h&]uh1j+ hj"ubj#)}(hrecth]hrect}(hjk"hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj"ubeh}(h]h ]h"]h$]h&]noemphj:j;uh1j hj!ubeh}(h]h ]h"]h$]h&]j:j;uh1j hja!hhhjs!hMubeh}(h]h ]h"]h$]h&]j:j;jBuh1hjCjDhj]!hhhjs!hMubah}(h]jX!ah ](jHjIeh"]h$]h&]jMjN)jOhuh1hhjs!hMhjZ!hhubjQ)}(hhh]h)}(h!Manually flush client framebufferh]h!Manually flush client framebuffer}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMhj"hhubah}(h]h ]h"]h$]h&]uh1jPhjZ!hhhjs!hMubeh}(h]h ](jmfunctioneh"]h$]h&]jrjmjsj"jtj"jujvjwuh1hhhhhhNhNubjy)}(hXu**Parameters** ``struct drm_client_buffer *buffer`` DRM client buffer (can be NULL) ``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)}(hj"h]h Parameters}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMhj"ubj)}(hhh](j)}(hE``struct drm_client_buffer *buffer`` DRM client buffer (can be NULL) 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 buffer (can be NULL)h]hDRM client buffer (can be NULL)}(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)}(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$#hMhj"ubeh}(h]h ]h"]h$]h&]uh1jhj"ubh)}(h**Description**h]j)}(hjJ#h]h Description}(hjL#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjH#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)}(hjj#h]hdrm_framebuffer_funcs->dirty}(hjl#hhhNhNubah}(h]h ](jAjmc-typeeh"]h$]h&]uh1jhjh#ubah}(h]h ]h"]h$]h&]refdocjM refdomainjmreftypetype refexplicitrefwarnjSjWj[drm_framebuffer_funcsuh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMhj`#ubh? (if present) to flush buffer changes for drivers that need it.}(hj`#hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj#hMhj"ubh)}(h **Return**h]j)}(hj#h]hReturn}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj#ubah}(h]h ]h"]h$]h&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.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&]uh1hh[/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:11: ./drivers/gpu/drm/drm_client.chMhj"ubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h%drm_client_modeset_probe (C function)c.drm_client_modeset_probehNtauh1hhhhhhNhNubh)}(hhh](h)}(heint drm_client_modeset_probe (struct drm_client_dev *client, unsigned int width, unsigned int height)h]h)}(hdint drm_client_modeset_probe(struct drm_client_dev *client, unsigned int width, unsigned int height)h](j )}(hinth]hint}(hj#hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj#hhhc/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:14: ./drivers/gpu/drm/drm_client_modeset.chMubj )}(h h]h }(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj#hhhj#hMubj)}(hdrm_client_modeset_probeh]j#)}(hdrm_client_modeset_probeh]hdrm_client_modeset_probe}(hj#hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj#ubah}(h]h ](j5j6eh"]h$]h&]j:j;uh1jhj#hhhj#hMubj )}(hH(struct drm_client_dev *client, unsigned int width, unsigned int height)h](j )}(hstruct drm_client_dev *clienth](h)}(hhh]hstruct}(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1hhj$ubj )}(h h]h }(hj#$hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj$ubh)}(hhh]j#)}(hdrm_client_devh]hdrm_client_dev}(hj4$hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj1$ubah}(h]h ]h"]h$]h&] refdomainjmreftypej reftargetj6$modnameN classnameNjSjV)}jY]j )}j j#sbc.drm_client_modeset_probeasbuh1hhj$ubj )}(h h]h }(hjT$hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj$ubj, )}(hj/ h]h*}(hjb$hhhNhNubah}(h]h ]j8 ah"]h$]h&]uh1j+ hj$ubj#)}(hclienth]hclient}(hjo$hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj$ubeh}(h]h ]h"]h$]h&]noemphj:j;uh1j hj$ubj )}(hunsigned int widthh](j )}(hunsignedh]hunsigned}(hj$hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj$ubj )}(h h]h }(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj$ubj )}(hinth]hint}(hj$hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj$ubj )}(h h]h }(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj$ubj#)}(hwidthh]hwidth}(hj$hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj$ubeh}(h]h ]h"]h$]h&]noemphj:j;uh1j hj$ubj )}(hunsigned int heighth](j )}(hunsignedh]hunsigned}(hj$hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj$ubj )}(h h]h }(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj$ubj )}(hinth]hint}(hj$hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj$ubj )}(h h]h }(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj$ubj#)}(hheighth]hheight}(hj%hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj$ubeh}(h]h ]h"]h$]h&]noemphj:j;uh1j hj$ubeh}(h]h ]h"]h$]h&]j:j;uh1j hj#hhhj#hMubeh}(h]h ]h"]h$]h&]j:j;jBuh1hjCjDhj#hhhj#hMubah}(h]j#ah ](jHjIeh"]h$]h&]jMjN)jOhuh1hhj#hMhj#hhubjQ)}(hhh]h)}(hProbe for displaysh]hProbe for displays}(hj;%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:14: ./drivers/gpu/drm/drm_client_modeset.chMhj8%hhubah}(h]h ]h"]h$]h&]uh1jPhj#hhhj#hMubeh}(h]h ](jmfunctioneh"]h$]h&]jrjmjsjS%jtjS%jujvjwuh1hhhhhhNhNubjy)}(hX**Parameters** ``struct drm_client_dev *client`` DRM client ``unsigned int width`` Maximum display mode width (optional) ``unsigned int height`` Maximum display mode height (optional) **Description** This function sets up display pipelines for enabled connectors and stores the config in the client's modeset array. **Return** Zero on success or negative error code on failure.h](h)}(h**Parameters**h]j)}(hj]%h]h Parameters}(hj_%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[%ubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:14: ./drivers/gpu/drm/drm_client_modeset.chMhjW%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&]uh1jhjz%ubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:14: ./drivers/gpu/drm/drm_client_modeset.chMhjv%ubj)}(hhh]h)}(h DRM clienth]h DRM client}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj%hMhj%ubah}(h]h ]h"]h$]h&]uh1jhjv%ubeh}(h]h ]h"]h$]h&]uh1jhj%hMhjs%ubj)}(h=``unsigned int width`` Maximum display mode width (optional) h](j)}(h``unsigned int width``h]j)}(hj%h]hunsigned int width}(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%Maximum display mode width (optional)h]h%Maximum display mode width (optional)}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj%hMhj%ubah}(h]h ]h"]h$]h&]uh1jhj%ubeh}(h]h ]h"]h$]h&]uh1jhj%hMhjs%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.chMhj%ubj)}(hhh]h)}(h&Maximum display mode height (optional)h]h&Maximum display mode height (optional)}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj&hMhj&ubah}(h]h ]h"]h$]h&]uh1jhj%ubeh}(h]h ]h"]h$]h&]uh1jhj&hMhjs%ubeh}(h]h ]h"]h$]h&]uh1jhjW%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.chMhjW%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.chMhjW%ubh)}(h **Return**h]j)}(hjP&h]hReturn}(hjR&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjN&ubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:14: ./drivers/gpu/drm/drm_client_modeset.chMhjW%ubh)}(h2Zero on success or negative error code on failure.h]h2Zero on success or negative error code on failure.}(hjf&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:14: ./drivers/gpu/drm/drm_client_modeset.chMhjW%ubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h drm_client_rotation (C function)c.drm_client_rotationhNtauh1hhhhhhNhNubh)}(hhh](h)}(hObool drm_client_rotation (struct drm_mode_set *modeset, unsigned int *rotation)h]h)}(hNbool drm_client_rotation(struct drm_mode_set *modeset, unsigned int *rotation)h](j )}(hboolh]hbool}(hj&hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj&hhhc/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:14: ./drivers/gpu/drm/drm_client_modeset.chMubj )}(h h]h }(hj&hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj&hhhj&hMubj)}(hdrm_client_rotationh]j#)}(hdrm_client_rotationh]hdrm_client_rotation}(hj&hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj&ubah}(h]h ](j5j6eh"]h$]h&]j:j;uh1jhj&hhhj&hMubj )}(h6(struct drm_mode_set *modeset, unsigned int *rotation)h](j )}(hstruct drm_mode_set *modeseth](h)}(hhh]hstruct}(hj&hhhNhNubah}(h]h ]jah"]h$]h&]uh1hhj&ubj )}(h h]h }(hj&hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj&ubh)}(hhh]j#)}(h drm_mode_seth]h drm_mode_set}(hj&hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj&ubah}(h]h ]h"]h$]h&] refdomainjmreftypej reftargetj&modnameN classnameNjSjV)}jY]j )}j j&sbc.drm_client_rotationasbuh1hhj&ubj )}(h h]h }(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj&ubj, )}(hj/ h]h*}(hj'hhhNhNubah}(h]h ]j8 ah"]h$]h&]uh1j+ hj&ubj#)}(hmodeseth]hmodeset}(hj+'hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj&ubeh}(h]h ]h"]h$]h&]noemphj:j;uh1j hj&ubj )}(hunsigned int *rotationh](j )}(hunsignedh]hunsigned}(hjD'hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj@'ubj )}(h h]h }(hjR'hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj@'ubj )}(hinth]hint}(hj`'hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj@'ubj )}(h h]h }(hjn'hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj@'ubj, )}(hj/ h]h*}(hj|'hhhNhNubah}(h]h ]j8 ah"]h$]h&]uh1j+ hj@'ubj#)}(hrotationh]hrotation}(hj'hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj@'ubeh}(h]h ]h"]h$]h&]noemphj:j;uh1j hj&ubeh}(h]h ]h"]h$]h&]j:j;uh1j hj&hhhj&hMubeh}(h]h ]h"]h$]h&]j:j;jBuh1hjCjDhj&hhhj&hMubah}(h]j&ah ](jHjIeh"]h$]h&]jMjN)jOhuh1hhj&hMhj&hhubjQ)}(hhh]h)}(h Check the initial rotation valueh]h Check the initial rotation value}(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&]uh1jPhj&hhhj&hMubeh}(h]h ](jmfunctioneh"]h$]h&]jrjmjsj'jtj'jujvjwuh1hhhhhhNhNubjy)}(hX|**Parameters** ``struct drm_mode_set *modeset`` DRM modeset ``unsigned int *rotation`` Returned rotation value **Description** This function checks if the primary plane in **modeset** can hw rotate to match the rotation needed on its connector. **Note** Currently only 0 and 180 degrees are supported. **Return** True if the plane can do the rotation, false otherwise.h](h)}(h**Parameters**h]j)}(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}(hjF(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjB(hMhjC(ubah}(h]h ]h"]h$]h&]uh1jhj'(ubeh}(h]h ]h"]h$]h&]uh1jhjB(hMhj'ubeh}(h]h ]h"]h$]h&]uh1jhj'ubh)}(h**Description**h]j)}(hjh(h]h Description}(hjj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjf(ubah}(h]h ]h"]h$]h&]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}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj~(ubh= can hw rotate to match the rotation needed on its connector.}(hj~(hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:14: ./drivers/gpu/drm/drm_client_modeset.chMhj'ubh)}(h**Note**h]j)}(hj(h]hNote}(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)}(h/Currently only 0 and 180 degrees are supported.h]h/Currently only 0 and 180 degrees are supported.}(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)}(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&]uh1jxhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h%drm_client_modeset_check (C function)c.drm_client_modeset_checkhNtauh1hhhhhhNhNubh)}(hhh](h)}(h+hhhNhNubah}(h]h ]j8 ah"]h$]h&]uh1j+ hj*ubj#)}(hclienth]hclient}(hjK+hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj*ubeh}(h]h ]h"]h$]h&]noemphj:j;uh1j hj*ubah}(h]h ]h"]h$]h&]j:j;uh1j hj*hhhj*hMubeh}(h]h ]h"]h$]h&]j:j;jBuh1hjCjDhj*hhhj*hMubah}(h]j*ah ](jHjIeh"]h$]h&]jMjN)jOhuh1hhj*hMhj*hhubjQ)}(hhh]h)}(hForce commit CRTC configurationh]hForce commit CRTC configuration}(hju+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhc/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:14: ./drivers/gpu/drm/drm_client_modeset.chMhjr+hhubah}(h]h ]h"]h$]h&]uh1jPhj*hhhj*hMubeh}(h]h ](jmfunctioneh"]h$]h&]jrjmjsj+jtj+jujvjwuh1hhhhhhNhNubjy)}(hX_**Parameters** ``struct drm_client_dev *client`` DRM client **Description** Commit 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(). **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.chMhj+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.chMhj+ubj)}(hhh]h)}(h DRM clienth]h DRM client}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+hMhj+ubah}(h]h ]h"]h$]h&]uh1jhj+ubeh}(h]h ]h"]h$]h&]uh1jhj+hMhj+ubah}(h]h ]h"]h$]h&]uh1jhj+ubh)}(h**Description**h]j)}(hj+h]h Description}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj+ubah}(h]h ]h"]h$]h&]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&]uh1jxhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h&drm_client_modeset_commit (C function)c.drm_client_modeset_commithNtauh1hhhhhhNhNubh)}(hhh](h)}(h=int drm_client_modeset_commit (struct drm_client_dev *client)h]h)}(h.ubj )}(h h]h }(hjO.hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj>.ubh)}(hhh]j#)}(hdrm_client_devh]hdrm_client_dev}(hj`.hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj].ubah}(h]h ]h"]h$]h&] refdomainjmreftypej reftargetjb.modnameN classnameNjSjV)}jY]j )}j j(.sbc.drm_client_modeset_dpmsasbuh1hhj>.ubj )}(h h]h }(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj>.ubj, )}(hj/ h]h*}(hj.hhhNhNubah}(h]h ]j8 ah"]h$]h&]uh1j+ hj>.ubj#)}(hclienth]hclient}(hj.hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj>.ubeh}(h]h ]h"]h$]h&]noemphj:j;uh1j hj:.ubj )}(hint modeh](j )}(hinth]hint}(hj.hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj.ubj )}(h h]h }(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj.ubj#)}(hmodeh]hmode}(hj.hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj.ubeh}(h]h ]h"]h$]h&]noemphj:j;uh1j hj:.ubeh}(h]h ]h"]h$]h&]j:j;uh1j hj.hhhj.hMubeh}(h]h ]h"]h$]h&]j:j;jBuh1hjCjDhj-hhhj.hMubah}(h]j-ah ](jHjIeh"]h$]h&]jMjN)jOhuh1hhj.hMhj-hhubjQ)}(hhh]h)}(h Set DPMS modeh]h Set DPMS mode}(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&]uh1jPhj-hhhj.hMubeh}(h]h ](jmfunctioneh"]h$]h&]jrjmjsj/jtj/jujvjwuh1hhhhhhNhNubjy)}(h**Parameters** ``struct drm_client_dev *client`` DRM client ``int mode`` DPMS mode **Note** For atomic drivers **mode** is reduced to on/off. **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.chMhj/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&]uh1jhj9/ubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:14: ./drivers/gpu/drm/drm_client_modeset.chMhj5/ubj)}(hhh]h)}(h DRM clienth]h DRM client}(hjT/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjP/hMhjQ/ubah}(h]h ]h"]h$]h&]uh1jhj5/ubeh}(h]h ]h"]h$]h&]uh1jhjP/hMhj2/ubj)}(h``int mode`` DPMS mode h](j)}(h ``int mode``h]j)}(hjt/h]hint mode}(hjv/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjr/ubah}(h]h ]h"]h$]h&]uh1jhc/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:14: ./drivers/gpu/drm/drm_client_modeset.chMhjn/ubj)}(hhh]h)}(h DPMS modeh]h DPMS mode}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj/hMhj/ubah}(h]h ]h"]h$]h&]uh1jhjn/ubeh}(h]h ]h"]h$]h&]uh1jhj/hMhj2/ubeh}(h]h ]h"]h$]h&]uh1jhj/ubh)}(h**Note**h]j)}(hj/h]hNote}(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)}(h1For atomic drivers **mode** is reduced to on/off.h](hFor atomic drivers }(hj/hhhNhNubj)}(h**mode**h]hmode}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/ubh is reduced to on/off.}(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 **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&]uh1jxhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h&drm_client_dev_unregister (C function)c.drm_client_dev_unregisterhNtauh1hhhhhhNhNubh)}(hhh](h)}(h7void drm_client_dev_unregister (struct drm_device *dev)h]h)}(h6void drm_client_dev_unregister(struct drm_device *dev)h](j )}(hvoidh]hvoid}(hj-0hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj)0hhha/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:17: ./drivers/gpu/drm/drm_client_event.chKubj )}(h h]h }(hj<0hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj)0hhhj;0hKubj)}(hdrm_client_dev_unregisterh]j#)}(hdrm_client_dev_unregisterh]hdrm_client_dev_unregister}(hjN0hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjJ0ubah}(h]h ](j5j6eh"]h$]h&]j:j;uh1jhj)0hhhj;0hKubj )}(h(struct drm_device *dev)h]j )}(hstruct drm_device *devh](h)}(hhh]hstruct}(hjj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1hhjf0ubj )}(h h]h }(hjw0hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjf0ubh)}(hhh]j#)}(h drm_deviceh]h drm_device}(hj0hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj0ubah}(h]h ]h"]h$]h&] refdomainjmreftypej reftargetj0modnameN classnameNjSjV)}jY]j )}j jP0sbc.drm_client_dev_unregisterasbuh1hhjf0ubj )}(h h]h }(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hjf0ubj, )}(hj/ h]h*}(hj0hhhNhNubah}(h]h ]j8 ah"]h$]h&]uh1j+ hjf0ubj#)}(hdevh]hdev}(hj0hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hjf0ubeh}(h]h ]h"]h$]h&]noemphj:j;uh1j hjb0ubah}(h]h ]h"]h$]h&]j:j;uh1j hj)0hhhj;0hKubeh}(h]h ]h"]h$]h&]j:j;jBuh1hjCjDhj%0hhhj;0hKubah}(h]j 0ah ](jHjIeh"]h$]h&]jMjN)jOhuh1hhj;0hKhj"0hhubjQ)}(hhh]h)}(hUnregister clientsh]hUnregister clients}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:17: ./drivers/gpu/drm/drm_client_event.chKhj0hhubah}(h]h ]h"]h$]h&]uh1jPhj"0hhhj;0hKubeh}(h]h ](jmfunctioneh"]h$]h&]jrjmjsj1jtj1jujvjwuh1hhhhhhNhNubjy)}(hX**Parameters** ``struct drm_device *dev`` DRM device **Description** This 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. 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)}(hj1h]h Parameters}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj 1ubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:17: ./drivers/gpu/drm/drm_client_event.chKhj 1ubj)}(hhh]j)}(h&``struct drm_device *dev`` DRM device h](j)}(h``struct drm_device *dev``h]j)}(hj.1h]hstruct drm_device *dev}(hj01hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj,1ubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:17: ./drivers/gpu/drm/drm_client_event.chKhj(1ubj)}(hhh]h)}(h DRM deviceh]h DRM device}(hjG1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjC1hKhjD1ubah}(h]h ]h"]h$]h&]uh1jhj(1ubeh}(h]h ]h"]h$]h&]uh1jhjC1hKhj%1ubah}(h]h ]h"]h$]h&]uh1jhj 1ubh)}(h**Description**h]j)}(hji1h]h Description}(hjk1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjg1ubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:17: ./drivers/gpu/drm/drm_client_event.chKhj 1ubh)}(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 }(hj1hhhNhNubh)}(h8:c:type:`drm_client_funcs.unregister `h]j)}(hj1h]hdrm_client_funcs.unregister}(hj1hhhNhNubah}(h]h ](jAjmc-typeeh"]h$]h&]uh1jhj1ubah}(h]h ]h"]h$]h&]refdocjM refdomainjmreftypetype refexplicitrefwarnjSjWj[drm_client_funcsuh1hha/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:17: ./drivers/gpu/drm/drm_client_event.chKhj1ubhh callback. The callback function is responsibe for releaseing all resources including the client itself.}(hj1hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj1hKhj 1ubh)}(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.}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:17: ./drivers/gpu/drm/drm_client_event.chKhj 1ubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h#drm_client_dev_hotplug (C function)c.drm_client_dev_hotplughNtauh1hhhhhhNhNubh)}(hhh](h)}(h4void drm_client_dev_hotplug (struct drm_device *dev)h]h)}(h3void drm_client_dev_hotplug(struct drm_device *dev)h](j )}(hvoidh]hvoid}(hj1hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj1hhha/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:17: ./drivers/gpu/drm/drm_client_event.chKTubj )}(h h]h }(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj1hhhj1hKTubj)}(hdrm_client_dev_hotplugh]j#)}(hdrm_client_dev_hotplugh]hdrm_client_dev_hotplug}(hj2hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj1ubah}(h]h ](j5j6eh"]h$]h&]j:j;uh1jhj1hhhj1hKTubj )}(h(struct drm_device *dev)h]j )}(hstruct drm_device *devh](h)}(hhh]hstruct}(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1hhj2ubj )}(h h]h }(hj*2hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj2ubh)}(hhh]j#)}(h drm_deviceh]h drm_device}(hj;2hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj82ubah}(h]h ]h"]h$]h&] refdomainjmreftypej reftargetj=2modnameN classnameNjSjV)}jY]j )}j j2sbc.drm_client_dev_hotplugasbuh1hhj2ubj )}(h h]h }(hj[2hhhNhNubah}(h]h ]jah"]h$]h&]uh1j hj2ubj, )}(hj/ h]h*}(hji2hhhNhNubah}(h]h ]j8 ah"]h$]h&]uh1j+ hj2ubj#)}(hdevh]hdev}(hjv2hhhNhNubah}(h]h ]j.ah"]h$]h&]uh1j"hj2ubeh}(h]h ]h"]h$]h&]noemphj:j;uh1j hj2ubah}(h]h ]h"]h$]h&]j:j;uh1j hj1hhhj1hKTubeh}(h]h ]h"]h$]h&]j:j;jBuh1hjCjDhj1hhhj1hKTubah}(h]j1ah ](jHjIeh"]h$]h&]jMjN)jOhuh1hhj1hKThj1hhubjQ)}(hhh]h)}(hSend hotplug event to clientsh]hSend hotplug event to clients}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:17: ./drivers/gpu/drm/drm_client_event.chKLhj2hhubah}(h]h ]h"]h$]h&]uh1jPhj1hhhj1hKTubeh}(h]h ](jmfunctioneh"]h$]h&]jrjmjsj2jtj2jujvjwuh1hhhhhhNhNubjy)}(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)}(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.chKPhj2ubj)}(hhh]j)}(h&``struct drm_device *dev`` DRM device h](j)}(h``struct drm_device *dev``h]j)}(hj2h]hstruct drm_device *dev}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&]uh1jha/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:17: ./drivers/gpu/drm/drm_client_event.chKMhj2ubj)}(hhh]h)}(h DRM deviceh]h DRM device}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj2hKMhj2ubah}(h]h ]h"]h$]h&]uh1jhj2ubeh}(h]h ]h"]h$]h&]uh1jhj2hKMhj2ubah}(h]h ]h"]h$]h&]uh1jhj2ubh)}(h**Description**h]j)}(hj3h]h Description}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj3ubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:17: ./drivers/gpu/drm/drm_client_event.chKOhj2ubh)}(hoThis function calls the :c:type:`drm_client_funcs.hotplug ` callback on the attached clients.h](hThis function calls the }(hj23hhhNhNubh)}(h5:c:type:`drm_client_funcs.hotplug `h]j)}(hj<3h]hdrm_client_funcs.hotplug}(hj>3hhhNhNubah}(h]h ](jAjmc-typeeh"]h$]h&]uh1jhj:3ubah}(h]h ]h"]h$]h&]refdocjM refdomainjmreftypetype refexplicitrefwarnjSjWj[drm_client_funcsuh1hha/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:17: ./drivers/gpu/drm/drm_client_event.chKOhj23ubh" callback on the attached clients.}(hj23hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjY3hKOhj2ubh)}(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.}(hjd3hhhNhNubah}(h]h ]h"]h$]h&]uh1hha/var/lib/git/docbuild/linux/Documentation/gpu/drm-client:17: ./drivers/gpu/drm/drm_client_event.chKQhj2ubeh}(h]h ] kernelindentah"]h$]h&]uh1jxhhhhhNhNubeh}(h]kernel-clientsah ]h"]kernel clientsah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerj3error_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}j3j|3s nametypes}j3sh}(j|3hhhjbjgjjj j j j j j jjjbjgj_jdjjjXj]jjjQjVjj jX!j]!j#j#j&j&j)j)j*j*jP,jU,j-j-j 0j%0j1j1u 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.