Lines Matching full:helper
6 * DRM framebuffer helper functions
89 * The fb helper functions are useful to provide an fbdev on top of a drm kernel
91 * helper functions used by many drivers to implement the kernel mode setting
101 * They should also notify the fb helper code from updates to the output
108 * All other functions exported by the fb helper library can be used to
113 * helper must be called first to initialize the minimum required to make
118 * encoders and connectors. To finish up the fbdev helper initialization, the
153 * @info: fbdev registered by the helper
157 struct drm_fb_helper *helper = info->par; in drm_fb_helper_debug_enter() local
161 list_for_each_entry(helper, &kernel_fb_helper_list, kernel_fb_list) { in drm_fb_helper_debug_enter()
162 mutex_lock(&helper->client.modeset_mutex); in drm_fb_helper_debug_enter()
163 drm_client_for_each_modeset(mode_set, &helper->client) { in drm_fb_helper_debug_enter()
180 mutex_unlock(&helper->client.modeset_mutex); in drm_fb_helper_debug_enter()
189 * @info: fbdev registered by the helper
193 struct drm_fb_helper *helper = info->par; in drm_fb_helper_debug_leave() local
194 struct drm_client_dev *client = &helper->client; in drm_fb_helper_debug_leave()
195 struct drm_device *dev = helper->dev; in drm_fb_helper_debug_leave()
269 * @fb_helper: driver-allocated fbdev helper, can be NULL
272 * when implementing an fbcon on top of kms using this helper. This ensures that
288 struct drm_fb_helper *helper; in drm_fb_helper_restore_work_fn() local
291 list_for_each_entry(helper, &kernel_fb_helper_list, kernel_fb_list) { in drm_fb_helper_restore_work_fn()
292 struct drm_device *dev = helper->dev; in drm_fb_helper_restore_work_fn()
297 mutex_lock(&helper->lock); in drm_fb_helper_restore_work_fn()
298 drm_client_modeset_commit_locked(&helper->client); in drm_fb_helper_restore_work_fn()
299 mutex_unlock(&helper->lock); in drm_fb_helper_restore_work_fn()
332 * @info: fbdev registered by the helper
367 struct drm_fb_helper *helper = container_of(work, struct drm_fb_helper, in drm_fb_helper_resume_worker() local
371 fb_set_suspend(helper->fbdev, 0); in drm_fb_helper_resume_worker()
451 struct drm_fb_helper *helper = container_of(work, struct drm_fb_helper, in drm_fb_helper_damage_work() local
453 struct drm_device *dev = helper->dev; in drm_fb_helper_damage_work()
454 struct drm_clip_rect *clip = &helper->damage_clip; in drm_fb_helper_damage_work()
459 spin_lock_irqsave(&helper->damage_lock, flags); in drm_fb_helper_damage_work()
463 spin_unlock_irqrestore(&helper->damage_lock, flags); in drm_fb_helper_damage_work()
469 if (helper->buffer) { in drm_fb_helper_damage_work()
470 ret = drm_fb_helper_damage_blit(helper, &clip_copy); in drm_fb_helper_damage_work()
475 if (helper->fb->funcs->dirty) { in drm_fb_helper_damage_work()
476 ret = helper->fb->funcs->dirty(helper->fb, NULL, 0, 0, &clip_copy, 1); in drm_fb_helper_damage_work()
477 if (drm_WARN_ONCE(dev, ret, "Dirty helper failed: ret=%d\n", ret)) in drm_fb_helper_damage_work()
488 spin_lock_irqsave(&helper->damage_lock, flags); in drm_fb_helper_damage_work()
493 spin_unlock_irqrestore(&helper->damage_lock, flags); in drm_fb_helper_damage_work()
499 * @helper: driver-allocated fbdev helper structure to set up
500 * @funcs: pointer to structure of functions associate with this helper
502 * Sets up the bare minimum to make the framebuffer helper usable. This is
505 void drm_fb_helper_prepare(struct drm_device *dev, struct drm_fb_helper *helper, in drm_fb_helper_prepare() argument
508 INIT_LIST_HEAD(&helper->kernel_fb_list); in drm_fb_helper_prepare()
509 spin_lock_init(&helper->damage_lock); in drm_fb_helper_prepare()
510 INIT_WORK(&helper->resume_work, drm_fb_helper_resume_worker); in drm_fb_helper_prepare()
511 INIT_WORK(&helper->damage_work, drm_fb_helper_damage_work); in drm_fb_helper_prepare()
512 helper->damage_clip.x1 = helper->damage_clip.y1 = ~0; in drm_fb_helper_prepare()
513 mutex_init(&helper->lock); in drm_fb_helper_prepare()
514 helper->funcs = funcs; in drm_fb_helper_prepare()
515 helper->dev = dev; in drm_fb_helper_prepare()
522 * @fb_helper: driver-allocated fbdev helper structure to initialize
524 * This allocates the structures for the fbdev helper with the given limits.
562 * @fb_helper: driver-allocated fbdev helper
564 * A helper to alloc fb_info and the members cmap and apertures. Called
589 * for each IORESOURCE_MEM resource helper->dev->dev has and also in drm_fb_helper_alloc_fbi()
616 * @fb_helper: driver-allocated fbdev helper, can be NULL
631 * @fb_helper: driver-allocated fbdev helper, can be NULL
686 struct drm_fb_helper *helper = info->par; in drm_fb_helper_damage() local
687 struct drm_clip_rect *clip = &helper->damage_clip; in drm_fb_helper_damage()
690 if (!drm_fbdev_use_shadow_fb(helper)) in drm_fb_helper_damage()
693 spin_lock_irqsave(&helper->damage_lock, flags); in drm_fb_helper_damage()
698 spin_unlock_irqrestore(&helper->damage_lock, flags); in drm_fb_helper_damage()
700 schedule_work(&helper->damage_work); in drm_fb_helper_damage()
818 * @info: fbdev registered by the helper
833 * @info: fbdev registered by the helper
848 * @info: fbdev registered by the helper
863 * @info: fbdev registered by the helper
878 * @info: fbdev registered by the helper
893 * @info: fbdev registered by the helper
908 * @fb_helper: driver-allocated fbdev helper, can be NULL
925 * @fb_helper: driver-allocated fbdev helper, can be NULL
1174 * @info: fbdev registered by the helper
1211 * @info: fbdev registered by the helper
1215 * A helper to implement the standard fbdev ioctl. Only
1360 * @info: fbdev registered by the helper
1443 * @info: fbdev registered by the helper
1548 * @info: fbdev registered by the helper
1816 * @fb_helper: fb helper instance to use as template
1819 * Sets up the variable and fixed fbdev metainformation from the given fb helper
1991 * as a helper to setup simple default values for the fbdev info structure.
2034 * @fb_helper: driver-allocated fbdev helper, can be NULL
2087 * drm_fb_helper_lastclose - DRM driver lastclose helper for fbdev emulation
2101 * helper for fbdev emulation