Lines Matching full:helper
6 * DRM framebuffer helper functions
85 * The fb helper functions are useful to provide an fbdev on top of a drm kernel
87 * helper functions used by many drivers to implement the kernel mode setting
97 * They should also notify the fb helper code from updates to the output
106 * All other functions exported by the fb helper library can be used to
111 * helper must be called first to initialize the minimum required to make
116 * encoders and connectors. To finish up the fbdev helper initialization, the
151 * @info: fbdev registered by the helper
155 struct drm_fb_helper *helper = info->par; in drm_fb_helper_debug_enter() local
159 list_for_each_entry(helper, &kernel_fb_helper_list, kernel_fb_list) { in drm_fb_helper_debug_enter()
160 mutex_lock(&helper->client.modeset_mutex); in drm_fb_helper_debug_enter()
161 drm_client_for_each_modeset(mode_set, &helper->client) { in drm_fb_helper_debug_enter()
178 mutex_unlock(&helper->client.modeset_mutex); in drm_fb_helper_debug_enter()
187 * @info: fbdev registered by the helper
191 struct drm_fb_helper *helper = info->par; in drm_fb_helper_debug_leave() local
192 struct drm_client_dev *client = &helper->client; in drm_fb_helper_debug_leave()
193 struct drm_device *dev = helper->dev; in drm_fb_helper_debug_leave()
267 * @fb_helper: driver-allocated fbdev helper, can be NULL
270 * when implementing an fbcon on top of kms using this helper. This ensures that
286 struct drm_fb_helper *helper; in drm_fb_helper_restore_work_fn() local
289 list_for_each_entry(helper, &kernel_fb_helper_list, kernel_fb_list) { in drm_fb_helper_restore_work_fn()
290 struct drm_device *dev = helper->dev; in drm_fb_helper_restore_work_fn()
295 mutex_lock(&helper->lock); in drm_fb_helper_restore_work_fn()
296 drm_client_modeset_commit_locked(&helper->client); in drm_fb_helper_restore_work_fn()
297 mutex_unlock(&helper->lock); in drm_fb_helper_restore_work_fn()
330 * @info: fbdev registered by the helper
365 struct drm_fb_helper *helper = container_of(work, struct drm_fb_helper, in drm_fb_helper_resume_worker() local
369 fb_set_suspend(helper->info, 0); in drm_fb_helper_resume_worker()
373 static void drm_fb_helper_fb_dirty(struct drm_fb_helper *helper) in drm_fb_helper_fb_dirty() argument
375 struct drm_device *dev = helper->dev; in drm_fb_helper_fb_dirty()
376 struct drm_clip_rect *clip = &helper->damage_clip; in drm_fb_helper_fb_dirty()
381 if (drm_WARN_ON_ONCE(dev, !helper->funcs->fb_dirty)) in drm_fb_helper_fb_dirty()
384 spin_lock_irqsave(&helper->damage_lock, flags); in drm_fb_helper_fb_dirty()
388 spin_unlock_irqrestore(&helper->damage_lock, flags); in drm_fb_helper_fb_dirty()
390 ret = helper->funcs->fb_dirty(helper, &clip_copy); in drm_fb_helper_fb_dirty()
401 spin_lock_irqsave(&helper->damage_lock, flags); in drm_fb_helper_fb_dirty()
406 spin_unlock_irqrestore(&helper->damage_lock, flags); in drm_fb_helper_fb_dirty()
411 struct drm_fb_helper *helper = container_of(work, struct drm_fb_helper, damage_work); in drm_fb_helper_damage_work() local
413 drm_fb_helper_fb_dirty(helper); in drm_fb_helper_damage_work()
419 * @helper: driver-allocated fbdev helper structure to set up
421 * @funcs: pointer to structure of functions associate with this helper
423 * Sets up the bare minimum to make the framebuffer helper usable. This is
426 void drm_fb_helper_prepare(struct drm_device *dev, struct drm_fb_helper *helper, in drm_fb_helper_prepare() argument
444 INIT_LIST_HEAD(&helper->kernel_fb_list); in drm_fb_helper_prepare()
445 spin_lock_init(&helper->damage_lock); in drm_fb_helper_prepare()
446 INIT_WORK(&helper->resume_work, drm_fb_helper_resume_worker); in drm_fb_helper_prepare()
447 INIT_WORK(&helper->damage_work, drm_fb_helper_damage_work); in drm_fb_helper_prepare()
448 helper->damage_clip.x1 = helper->damage_clip.y1 = ~0; in drm_fb_helper_prepare()
449 mutex_init(&helper->lock); in drm_fb_helper_prepare()
450 helper->funcs = funcs; in drm_fb_helper_prepare()
451 helper->dev = dev; in drm_fb_helper_prepare()
452 helper->preferred_bpp = preferred_bpp; in drm_fb_helper_prepare()
458 * @fb_helper: driver-allocated fbdev helper structure to set up
460 * Cleans up the framebuffer helper. Inverse of drm_fb_helper_prepare().
471 * @fb_helper: driver-allocated fbdev helper structure to initialize
473 * This allocates the structures for the fbdev helper with the given limits.
506 * @fb_helper: driver-allocated fbdev helper
508 * A helper to alloc fb_info and the member cmap. Called by the driver
544 * @fb_helper: driver-allocated fbdev helper
546 * A helper to release fb_info and the member cmap. Drivers do not
567 * @fb_helper: driver-allocated fbdev helper, can be NULL
582 * @fb_helper: driver-allocated fbdev helper, can be NULL
614 static void drm_fb_helper_add_damage_clip(struct drm_fb_helper *helper, u32 x, u32 y, in drm_fb_helper_add_damage_clip() argument
617 struct drm_clip_rect *clip = &helper->damage_clip; in drm_fb_helper_add_damage_clip()
620 spin_lock_irqsave(&helper->damage_lock, flags); in drm_fb_helper_add_damage_clip()
625 spin_unlock_irqrestore(&helper->damage_lock, flags); in drm_fb_helper_add_damage_clip()
628 static void drm_fb_helper_damage(struct drm_fb_helper *helper, u32 x, u32 y, in drm_fb_helper_damage() argument
631 drm_fb_helper_add_damage_clip(helper, x, y, width, height); in drm_fb_helper_damage()
633 schedule_work(&helper->damage_work); in drm_fb_helper_damage()
705 struct drm_fb_helper *helper = info->par; in drm_fb_helper_deferred_io() local
732 drm_fb_helper_damage(helper, damage_area.x1, damage_area.y1, in drm_fb_helper_deferred_io()
741 * @fb_helper: driver-allocated fbdev helper, can be NULL
758 * @fb_helper: driver-allocated fbdev helper, can be NULL
1007 * @info: fbdev registered by the helper
1044 * @info: fbdev registered by the helper
1048 * A helper to implement the standard fbdev ioctl. Only
1216 * @info: fbdev registered by the helper
1311 * @info: fbdev registered by the helper
1411 * @info: fbdev registered by the helper
1733 * @fb_helper: fb helper instance to use as template
1736 * Sets up the variable and fixed fbdev metainformation from the given fb helper
1902 * as a helper to setup simple default values for the fbdev info structure.
1945 * @fb_helper: driver-allocated fbdev helper, can be NULL
1997 * drm_fb_helper_lastclose - DRM driver lastclose helper for fbdev emulation
2011 * helper for fbdev emulation