struct_drm_fb_helper(9) main structure to emulate fbdev on top of KMS

SYNOPSIS


struct drm_fb_helper {
struct drm_framebuffer * fb;
struct drm_device * dev;
int crtc_count;
struct drm_fb_helper_crtc * crtc_info;
int connector_count;
int connector_info_alloc_count;
struct drm_fb_helper_connector ** connector_info;
const struct drm_fb_helper_funcs * funcs;
struct fb_info * fbdev;
u32 pseudo_palette[17];
struct drm_clip_rect dirty_clip;
spinlock_t dirty_lock;
struct work_struct dirty_work;
struct list_head kernel_fb_list;
bool delayed_hotplug;
bool atomic;
};

MEMBERS

fb

Scanout framebuffer object

dev

DRM device

crtc_count

number of possible CRTCs

crtc_info

per-CRTC helper state (mode, x/y offset, etc)

connector_count

number of connected connectors

connector_info_alloc_count

size of connector_info

connector_info

array of per-connector information

funcs

driver callbacks for fb helper

fbdev

emulated fbdev device info struct

pseudo_palette[17]

fake palette of 16 colors

dirty_clip

clip rectangle used with deferred_io to accumulate damage to the screen buffer

dirty_lock

spinlock protecting dirty_clip

dirty_work

worker used to flush the framebuffer

kernel_fb_list

Entry on the global kernel_fb_helper_list, used for kgdb entry/exit.

delayed_hotplug

A hotplug was received while fbdev wasn't in control of the DRM device, i.e. another KMS master was active. The output configuration needs to be reprobe when fbdev is in control again.

atomic

Use atomic updates for restore_fbdev_mode, etc. This defaults to true if driver has DRIVER_ATOMIC feature flag, but drivers can override it to true after drm_fb_helper_init if they support atomic modeset but do not yet advertise DRIVER_ATOMIC (note that fb-helper does not require ASYNC commits).

DESCRIPTION

This is the main structure used by the fbdev helpers. Drivers supporting fbdev emulation should embedded this into their overall driver structure. Drivers must also fill out a struct drm_fb_helper_funcs with a few operations.

AUTHORS

Jesse Barnes <[email protected]>
Intel Corporation,         
        

Initial version

Laurent Pinchart <[email protected]>
Ideas on board SPRL,         
        

Driver internals

Daniel Vetter <[email protected]>
Intel Corporation,         
        

Contributions all over the place

Lukas Wunner <[email protected]>

vga_switcheroo documentation

COPYRIGHT