Lines Matching +full:has +full:- +full:legacy +full:- +full:mode
3 * Copyright © 2007-2008 Dave Airlie
4 * Copyright © 2007-2008 Intel Corporation
6 * Copyright © 2011-2013 Intel Corporation
38 * The DRM mode setting helper functions are common code for drivers to use if
61 * struct drm_crtc_helper_funcs - helper operations for CRTCs
63 * These hooks are used by the legacy CRTC helpers and the new atomic
70 * Callback to control power levels on the CRTC. If the mode passed in
72 * This is used by the legacy CRTC helpers to implement DPMS
78 * This callback is used by the legacy CRTC helpers. Atomic helpers
83 void (*dpms)(struct drm_crtc *crtc, int mode);
93 * This callback is used by the legacy CRTC helpers. Atomic helpers
103 * This callback should commit the new mode on the CRTC after a modeset,
108 * This callback is used by the legacy CRTC helpers. Atomic helpers
118 * This callback is used to check if a specific mode is valid in this
119 * crtc. This should be implemented if the crtc has some sort of
126 * This hook is used by the probe helpers to filter the mode list in
136 * commit, and the mode validation in the probe paths it is not allowed
137 * to look at anything else but the passed-in mode, and validate it
138 * against configuration-invariant hardware constraints. Any further
147 const struct drm_display_mode *mode);
152 * This callback is used to validate a mode. The parameter mode is the
153 * display mode that userspace requested, adjusted_mode is the mode the
156 * vfunc. If the CRTC cannot support the requested conversion from mode
160 * This function is used by both legacy CRTC helpers and atomic helpers.
171 * This is in contrast to the legacy CRTC helpers where this was
193 const struct drm_display_mode *mode,
199 * This callback is used by the legacy CRTC helpers to set a new mode,
201 * mode change it is incompatible with universal plane support. And
211 int (*mode_set)(struct drm_crtc *crtc, struct drm_display_mode *mode,
218 * This callback is used to update the display mode of a CRTC without
224 * program the new display mode (e.g. because they implement runtime PM)
226 * this hook only once per mode change and not every time the display
239 * This callback is used by the legacy CRTC helpers to set a new
241 * optimized fast-path instead of a full mode set operation with all the
285 * This hook is used both by legacy CRTC helpers and atomic helpers.
295 * With legacy CRTC helpers there's a big semantic difference between
302 * drivers still using legacy CRTC helpers, which is different from the
310 * Drivers should check plane-update related CRTC constraints in this
311 * hook. They can also check mode related limitations but need to be
314 * check output routing and the display mode is done in
316 * check output routing and display mode constraints in this callback
317 * must ensure that drm_atomic_helper_check_modeset() has been called
326 * has a final configuration and everything has been checked.
341 * driver is not allowed to change anything outside of the free-standing
342 * state object passed-in.
352 * 0 on success, -EINVAL if the state or the transition can't be
353 * supported, -ENOMEM on memory allocation failure and -EDEADLK if an
372 * has picked. See drm_atomic_helper_commit_planes() for a discussion of
396 * has picked. See drm_atomic_helper_commit_planes() for a discussion of
464 * need to apply some workarounds for gpu-specific vblank irq
476 * mode:
481 * of scanlines to go until end of vblank, e.g., -1 means "one scanline
492 const struct drm_display_mode *mode);
496 * drm_crtc_helper_add - sets the helper vtable for a crtc
503 crtc->helper_private = funcs; in drm_crtc_helper_add()
507 * struct drm_encoder_helper_funcs - helper operations for encoders
509 * These hooks are used by the legacy CRTC helpers and the new atomic
516 * Callback to control power levels on the encoder. If the mode passed in
518 * This is used by the legacy encoder helpers to implement DPMS
524 * This callback is used by the legacy CRTC helpers. Atomic helpers
529 void (*dpms)(struct drm_encoder *encoder, int mode);
534 * This callback is used to check if a specific mode is valid in this
535 * encoder. This should be implemented if the encoder has some sort
542 * This hook is used by the probe helpers to filter the mode list in
552 * commit, and the mode validation in the probe paths it is not allowed
553 * to look at anything else but the passed-in mode, and validate it
554 * against configuration-invariant hardware constraints. Any further
563 const struct drm_display_mode *mode);
568 * This callback is used to validate and adjust a mode. The parameter
569 * mode is the display mode that should be fed to the next element in
571 * The parameter adjusted_mode is the input mode the encoder requires. It
572 * can be modified by this callback and does not need to match mode. See
575 * This function is used by both legacy CRTC helpers and atomic helpers.
586 * This is in contrast to the legacy CRTC helpers where this was
606 const struct drm_display_mode *mode,
617 * This callback is used by the legacy CRTC helpers. Atomic helpers
627 * This callback should commit the new mode on the encoder after a modeset,
632 * This callback is used by the legacy CRTC helpers. Atomic helpers
642 * This callback is used to update the display mode of an encoder.
646 * the new display mode (because they implement runtime PM) should not
652 * This callback is used both by the legacy CRTC helpers and the atomic
658 * the connector state or connector display info during mode setting,
662 struct drm_display_mode *mode,
668 * This callback is used to update the display mode of an encoder.
672 * the new display mode (because they implement runtime PM) should not
694 * It is not used by any helper and therefore has purely driver-specific
710 * drivers it is called before this encoder's CRTC has been shut off
733 * after this encoder's CRTC has been enabled using their own
756 * drivers it is called before this encoder's CRTC has been shut off
762 * This hook is used both by legacy CRTC helpers and atomic helpers.
773 * With legacy CRTC helpers there's a big semantic difference between
780 * drivers still using legacy CRTC helpers, which is different from the
789 * drivers it is called after this encoder's CRTC has been enabled using
822 * driver is not allowed to change anything outside of the free-standing
823 * state objects passed-in or assembled in the overall &drm_atomic_state
834 * 0 on success, -EINVAL if the state or the transition can't be
835 * supported, -ENOMEM on memory allocation failure and -EDEADLK if an
845 * drm_encoder_helper_add - sets the helper vtable for an encoder
852 encoder->helper_private = funcs; in drm_encoder_helper_add()
856 * struct drm_connector_helper_funcs - helper operations for connectors
858 * These functions are used by the atomic and legacy modeset helpers and by the
870 * probe callback somewhere in the driver-private connector structure.
881 * no mode and if the connector status is connector_status_connected or
885 * Virtual drivers that just want some standard VESA mode with a given
889 * This function is only called after the @detect hook has indicated
898 * held. Because of this it's safe to inspect &drm_connector->state.
929 * or the error code returned by drm_modeset_lock(), -EDEADLK.
938 * Callback to validate a mode for a connector, irrespective of the
941 * This callback is used by the probe helpers to filter the mode list
949 * This only filters the mode list supplied to userspace in the
962 * held. Because of this it's safe to inspect &drm_connector->state.
970 struct drm_display_mode *mode);
975 * Callback to validate a mode for a connector, irrespective of the
978 * This callback is used by the probe helpers to filter the mode list
993 * be influenced by the currently set display state - such constraints
996 * would be ok to validate the minimum bandwidth requirement of a mode
1009 struct drm_display_mode *mode,
1019 * drm_atomic_helper_check_modeset() function) and in the legacy CRTC
1026 * anything outside of arguments passed-in. Atomic drivers which need to
1090 * driver is not allowed to change anything outside of the free-standing
1091 * state objects passed-in or assembled in the overall &drm_atomic_state
1096 * 0 on success, -EINVAL if the state or the transition can't be
1097 * supported, -ENOMEM on memory allocation failure and -EDEADLK if an
1154 * Enable hot-plug detection for the connector.
1170 * Disable hot-plug detection for the connector.
1185 * drm_connector_helper_add - sets the helper vtable for a connector
1192 connector->helper_private = funcs; in drm_connector_helper_add()
1196 * struct drm_plane_helper_funcs - helper operations for planes
1211 * way is to fill out the &drm_plane_state.fence of the passed-in
1227 * shadow-plane helpers belongs into @begin_fb_access, so that atomic
1234 * optional. See @begin_fb_access for preparing per-commit resources.
1264 * For example, with shadow-plane helpers, the GEM buffer's vmap
1296 * multiple times until the computed state has a final configuration and
1297 * everything has been checked.
1317 * 0 on success, -EINVAL if the state or the transition can't be
1318 * supported, -ENOMEM on memory allocation failure and -EDEADLK if an
1329 * hook is called in-between the &drm_crtc_helper_funcs.atomic_begin and
1334 * has picked. See drm_atomic_helper_commit_planes() for a discussion of
1346 * This hook is called in-between the &drm_crtc_helper_funcs.atomic_begin
1356 * has picked. See drm_atomic_helper_commit_planes() for a discussion of
1371 * This hook is called in-between the
1383 * has picked. See drm_atomic_helper_commit_planes() for a discussion of
1421 * An async update will happen on legacy cursor updates. An async
1438 * - It only works for single plane updates
1439 * - Async Pageflips are not supported yet
1440 * - Some hw might still scan out the old buffer until the next
1454 * buffers are supported. Non-linear buffer support is on the TODO list.
1458 * Please look the documentation at drm_panic_trylock() for an in-depth
1460 * It's a best effort mode, so it's expected that in some complex cases
1481 * Please look the documentation at drm_panic_trylock() for an in-depth
1488 * drm_plane_helper_add - sets the helper vtable for a plane
1495 plane->helper_private = funcs; in drm_plane_helper_add()
1499 * struct drm_mode_config_helper_funcs - global modeset helper operations
1513 * This function is called when the new atomic state has already been
1519 * to wait for driver-internal request for implicit syncing, before
1550 * drm_atomic_helper_setup_commit(), so once the commit has been
1555 * Note that the documentation of &drm_private_obj has more details on