struct drm_crtc_funcs — control CRTCs for a given device
struct drm_crtc_funcs { void (* save) (struct drm_crtc *crtc); void (* restore) (struct drm_crtc *crtc); void (* reset) (struct drm_crtc *crtc); int (* cursor_set) (struct drm_crtc *crtc, struct drm_file *file_priv,uint32_t handle, uint32_t width, uint32_t height); int (* cursor_set2) (struct drm_crtc *crtc, struct drm_file *file_priv,uint32_t handle, uint32_t width, uint32_t height,int32_t hot_x, int32_t hot_y); int (* cursor_move) (struct drm_crtc *crtc, int x, int y); void (* gamma_set) (struct drm_crtc *crtc, u16 *r, u16 *g, u16 *b,uint32_t start, uint32_t size); void (* destroy) (struct drm_crtc *crtc); int (* set_config) (struct drm_mode_set *set); int (* page_flip) (struct drm_crtc *crtc,struct drm_framebuffer *fb,struct drm_pending_vblank_event *event,uint32_t flags); int (* set_property) (struct drm_crtc *crtc,struct drm_property *property, uint64_t val); struct drm_crtc_state *(* atomic_duplicate_state) (struct drm_crtc *crtc); void (* atomic_destroy_state) (struct drm_crtc *crtc,struct drm_crtc_state *state); int (* atomic_set_property) (struct drm_crtc *crtc,struct drm_crtc_state *state,struct drm_property *property,uint64_t val); int (* atomic_get_property) (struct drm_crtc *crtc,const struct drm_crtc_state *state,struct drm_property *property,uint64_t *val); };
save CRTC state
restore CRTC state
reset CRTC after state has been invalidated (e.g. resume)
setup the cursor
setup the cursor with hotspot, superseeds cursor_set
if set
move the cursor
specify color ramp for CRTC
deinit and free object
apply a new CRTC configuration
initiate a page flip
called when a property is changed
duplicate the atomic state for this CRTC
destroy an atomic state for this CRTC
set a property on an atomic state for this CRTC
(do not call directly, use drm_atomic_crtc_set_property
)
get a property on an atomic state for this CRTC
(do not call directly, use drm_atomic_crtc_get_property
)
The drm_crtc_funcs structure is the central CRTC management structure in the DRM. Each CRTC controls one or more connectors (note that the name CRTC is simply historical, a CRTC may control LVDS, VGA, DVI, TV out, etc. connectors, not just CRTs).
Each driver is responsible for filling out this structure at startup time, in addition to providing other modesetting features, like i2c and DDC bus accessors.