Lines Matching +full:can +full:- +full:disable
3 * Copyright © 2007-2008 Dave Airlie
4 * Copyright © 2007-2008 Intel Corporation
6 * Copyright © 2011-2013 Intel Corporation
56 * struct drm_crtc_helper_funcs - helper operations for CRTCs
70 * This callback is also used to disable a CRTC by calling it with
71 * DRM_MODE_DPMS_OFF if the @disable hook isn't used.
84 * in practice means the driver should disable the CRTC if it is
115 * restriction in the modes it can display. For example, a given crtc
116 * may be responsible to set a clock value. If the clock can not
118 * can be used to restrict the number of modes to only the ones that
119 * can be displayed.
132 * to look at anything else but the passed-in mode, and validate it
133 * against configuration-invariant hardward constraints. Any further
134 * limits which depend upon the configuration can only be checked in
161 * can be aborted for any reason (including on userspace's request to
176 * Also beware that userspace can request its own custom modes, neither
197 * since it can't update other planes it's incompatible with atomic
238 * optimized fast-path instead of a full mode set operation with all the
241 * the @mode_set callback. Since it can't update other planes it's
272 * @disable:
274 * This callback should be used to disable the CRTC. With the atomic
277 * &drm_encoder_helper_funcs.disable hook. If that sequence is too
278 * simple drivers can just add their own hooks and call it from this
284 * disable anything at the CRTC level. To ensure that runtime PM
286 * @disable must be the inverse of @atomic_enable for atomic drivers.
293 * @disable and other hooks (like @prepare or @dpms) used to shut down a
294 * CRTC: @disable is only called when also logically disabling the
298 * Therefore @disable must be the inverse of @mode_set plus @commit for
302 void (*disable)(struct drm_crtc *crtc); member
307 * Drivers should check plane-update related CRTC constraints in this
308 * hook. They can also check mode related limitations but need to be
321 * callback here. For more complicated dependencies the driver can call
326 * can add more state objects to the atomic commit if needed. Care must
338 * driver is not allowed to change anything outside of the free-standing
339 * state object passed-in.
341 * Also beware that userspace can request its own custom modes, neither
349 * 0 on success, -EINVAL if the state or the transition can't be
350 * supported, -ENOMEM on memory allocation failure and -EDEADLK if an
385 * Simple hardware or hardware with special requirements can commit and
408 * hook. If that sequence is too simple drivers can just add their own
427 * This callback should be used to disable the CRTC. With the atomic
430 * &drm_encoder_helper_funcs.disable hook. If that sequence is too
431 * simple drivers can just add their own hooks and call it from this
436 * need to implement it if there's no need to disable anything at the
461 * need to apply some workarounds for gpu-specific vblank irq
469 * scanout position query. Can be NULL to skip timestamp.
472 * scanout position query. Can be NULL to skip timestamp.
478 * of scanlines to go until end of vblank, e.g., -1 means "one scanline
493 * drm_crtc_helper_add - sets the helper vtable for a crtc
500 crtc->helper_private = funcs; in drm_crtc_helper_add()
504 * struct drm_encoder_helper_funcs - helper operations for encoders
518 * This callback is also used to disable an encoder by calling it with
519 * DRM_MODE_DPMS_OFF if the @disable hook isn't used.
524 * @enable and @disable should be used.
533 * of restriction in the modes it can display. For example, a given
534 * encoder may be responsible to set a clock value. If the clock can
536 * can be used to restrict the number of modes to only the ones that
537 * can be displayed.
550 * to look at anything else but the passed-in mode, and validate it
551 * against configuration-invariant hardward constraints. Any further
552 * limits which depend upon the configuration can only be checked in
569 * can be modified by this callback and does not need to match mode. See
578 * can be aborted for any reason (including on userspace's request to
591 * Also beware that userspace can request its own custom modes, neither
610 * which in practice means the driver should disable the encoder if it
616 * transitions to atomic, but it is deprecated. Instead @disable should
656 * @atomic_mode_set can be used instead.
688 * This callback can be used by drivers who want to do detection on the
691 * It is not used by any helper and therefore has purely driver-specific
706 * This callback should be used to disable the encoder. With the atomic
709 * sequence is too simple drivers can just add their own driver private
713 * This callback is a variant of @disable that provides the atomic state
714 * to the driver. If @atomic_disable is implemented, @disable is not
718 * to implement it if there's no need to disable anything at the encoder
732 * too simple drivers can just add their own driver private encoder
750 * @disable:
752 * This callback should be used to disable the encoder. With the atomic
754 * using their own &drm_crtc_helper_funcs.disable hook. If that
755 * sequence is too simple drivers can just add their own driver private
761 * disable anything at the encoder level. To ensure that runtime PM
763 * @disable must be the inverse of @enable for atomic drivers.
771 * @disable and other hooks (like @prepare or @dpms) used to shut down a
772 * encoder: @disable is only called when also logically disabling the
776 * Therefore @disable must be the inverse of @mode_set plus @commit for
780 void (*disable)(struct drm_encoder *encoder); member
788 * too simple drivers can just add their own driver private encoder
793 * @disable. Atomic drivers don't need to implement it if there's no
796 * works @enable must be the inverse of @disable for atomic drivers.
819 * driver is not allowed to change anything outside of the free-standing
820 * state objects passed-in or assembled in the overall &drm_atomic_state
823 * Also beware that userspace can request its own custom modes, neither
831 * 0 on success, -EINVAL if the state or the transition can't be
832 * supported, -ENOMEM on memory allocation failure and -EDEADLK if an
842 * drm_encoder_helper_add - sets the helper vtable for an encoder
849 encoder->helper_private = funcs; in drm_encoder_helper_add()
853 * struct drm_connector_helper_funcs - helper operations for connectors
867 * probe callback somewhere in the driver-private connector structure.
870 * fixed panel can also manually add specific modes using
883 * resolution can call drm_add_modes_noedid(), and mark the preferred
895 * held. Because of this it's safe to inspect &drm_connector->state.
908 * connector due to a user request. force can be used by the driver to
925 * or the error code returned by drm_modeset_lock(), -EDEADLK.
958 * held. Because of this it's safe to inspect &drm_connector->state.
989 * be influenced by the currently set display state - such constraints
1022 * anything outside of arguments passed-in. Atomic drivers which need to
1026 * You can leave this function to NULL if the connector is only
1044 * configuration and can't select it statically.
1077 * can add more state objects to the atomic commit if needed. Care must
1086 * driver is not allowed to change anything outside of the free-standing
1087 * state objects passed-in or assembled in the overall &drm_atomic_state
1092 * 0 on success, -EINVAL if the state or the transition can't be
1093 * supported, -ENOMEM on memory allocation failure and -EDEADLK if an
1119 * prepare and clean them up the same way they can prepare and
1149 * drm_connector_helper_add - sets the helper vtable for a connector
1156 connector->helper_private = funcs; in drm_connector_helper_add()
1160 * struct drm_plane_helper_funcs - helper operations for planes
1176 * way is to fill out the &drm_plane_state.fence of the passed-in
1184 * can call drm_gem_plane_helper_prepare_fb() from their @prepare_fb
1197 * this callback is the only one which can fail an atomic commit,
1222 * complicated dependencies the driver can call the provided check helpers
1227 * can add more state objects to the atomic commit if needed. Care must
1244 * 0 on success, -EINVAL if the state or the transition can't be
1245 * supported, -ENOMEM on memory allocation failure and -EDEADLK if an
1256 * hook is called in-between the &drm_crtc_helper_funcs.atomic_begin and
1272 * Drivers should use this function to unconditionally disable a plane.
1273 * This hook is called in-between the
1279 * This hook is also useful to disable planes in preparation of a modeset,
1281 * &drm_crtc_helper_funcs.disable hook.
1298 * atomic state can be updated in a async fashion. Here async means
1302 * given update can be committed asynchronously, that is, if it can
1308 * can not be applied in asynchronous manner.
1340 * - It only works for single plane updates
1341 * - Async Pageflips are not supported yet
1342 * - Some hw might still scan out the old buffer until the next
1352 * drm_plane_helper_add - sets the helper vtable for a plane
1359 plane->helper_private = funcs; in drm_plane_helper_add()
1363 * struct drm_mode_config_helper_funcs - global modeset helper operations
1382 * can add more waiting calls at the start of their implementation, e.g.
1383 * to wait for driver-internal request for implicit syncing, before
1395 * can't take care of this. And it also can't rely on the vblank event,
1396 * since that can be signalled already when the screen shows black,
1397 * which can happen much earlier than the last hardware access needed to