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 objects passed-in or assembled in the overall &drm_atomic_state
342 * Also beware that userspace can request its own custom modes, neither
350 * 0 on success, -EINVAL if the state or the transition can't be
351 * supported, -ENOMEM on memory allocation failure and -EDEADLK if an
386 * Simple hardware or hardware with special requirements can commit and
409 * hook. If that sequence is too simple drivers can just add their own
420 * Drivers can use the @old_crtc_state input parameter if the operations
432 * This callback should be used to disable the CRTC. With the atomic
435 * &drm_encoder_helper_funcs.disable hook. If that sequence is too
436 * simple drivers can just add their own hooks and call it from this
441 * need to implement it if there's no need to disable anything at the
444 * Comparing to @disable, this one provides the additional input
447 * of @disable.
471 * need to apply some workarounds for gpu-specific vblank irq
479 * scanout position query. Can be NULL to skip timestamp.
482 * scanout position query. Can be NULL to skip timestamp.
488 * of scanlines to go until end of vblank, e.g., -1 means "one scanline
503 * drm_crtc_helper_add - sets the helper vtable for a crtc
510 crtc->helper_private = funcs; in drm_crtc_helper_add()
514 * struct drm_encoder_helper_funcs - helper operations for encoders
528 * This callback is also used to disable an encoder by calling it with
529 * DRM_MODE_DPMS_OFF if the @disable hook isn't used.
534 * @enable and @disable should be used.
543 * of restriction in the modes it can display. For example, a given
544 * encoder may be responsible to set a clock value. If the clock can
546 * can be used to restrict the number of modes to only the ones that
547 * can be displayed.
560 * to look at anything else but the passed-in mode, and validate it
561 * against configuration-invariant hardward constraints. Any further
562 * limits which depend upon the configuration can only be checked in
579 * can be modified by this callback and does not need to match mode. See
588 * can be aborted for any reason (including on userspace's request to
601 * Also beware that userspace can request its own custom modes, neither
620 * which in practice means the driver should disable the encoder if it
626 * transitions to atomic, but it is deprecated. Instead @disable should
666 * @atomic_mode_set can be used instead.
698 * This callback can be used by drivers who want to do detection on the
701 * It is not used by any helper and therefore has purely driver-specific
716 * This callback should be used to disable the encoder. With the atomic
719 * sequence is too simple drivers can just add their own driver private
723 * This callback is a variant of @disable that provides the atomic state
724 * to the driver. If @atomic_disable is implemented, @disable is not
728 * to implement it if there's no need to disable anything at the encoder
742 * too simple drivers can just add their own driver private encoder
760 * @disable:
762 * This callback should be used to disable the encoder. With the atomic
764 * using their own &drm_crtc_helper_funcs.disable hook. If that
765 * sequence is too simple drivers can just add their own driver private
771 * disable anything at the encoder level. To ensure that runtime PM
773 * @disable must be the inverse of @enable for atomic drivers.
781 * @disable and other hooks (like @prepare or @dpms) used to shut down a
782 * encoder: @disable is only called when also logically disabling the
786 * Therefore @disable must be the inverse of @mode_set plus @commit for
790 void (*disable)(struct drm_encoder *encoder); member
798 * too simple drivers can just add their own driver private encoder
803 * @disable. Atomic drivers don't need to implement it if there's no
806 * works @enable must be the inverse of @disable for atomic drivers.
829 * driver is not allowed to change anything outside of the free-standing
830 * state objects passed-in or assembled in the overall &drm_atomic_state
833 * Also beware that userspace can request its own custom modes, neither
841 * 0 on success, -EINVAL if the state or the transition can't be
842 * supported, -ENOMEM on memory allocation failure and -EDEADLK if an
852 * drm_encoder_helper_add - sets the helper vtable for an encoder
859 encoder->helper_private = funcs; in drm_encoder_helper_add()
863 * struct drm_connector_helper_funcs - helper operations for connectors
877 * probe callback somewhere in the driver-private connector structure.
880 * fixed panel can also manually add specific modes using
887 * resolution can call drm_add_modes_noedid(), and mark the preferred
899 * held. Because of this it's safe to inspect &drm_connector->state.
912 * connector due to a user request. force can be used by the driver to
929 * or the error code returned by drm_modeset_lock(), -EDEADLK.
962 * held. Because of this it's safe to inspect &drm_connector->state.
993 * be influenced by the currently set display state - such constraints
1026 * anything outside of arguments passed-in. Atomic drivers which need to
1030 * You can leave this function to NULL if the connector is only
1048 * configuration and can't select it statically.
1057 * driver is not allowed to change anything outside of the free-standing
1058 * state objects passed-in or assembled in the overall &drm_atomic_state
1082 * can add more state objects to the atomic commit if needed. Care must
1091 * driver is not allowed to change anything outside of the free-standing
1092 * state objects passed-in or assembled in the overall &drm_atomic_state
1097 * 0 on success, -EINVAL if the state or the transition can't be
1098 * supported, -ENOMEM on memory allocation failure and -EDEADLK if an
1124 * prepare and clean them up the same way they can prepare and
1154 * drm_connector_helper_add - sets the helper vtable for a connector
1161 connector->helper_private = funcs; in drm_connector_helper_add()
1165 * struct drm_plane_helper_funcs - helper operations for planes
1181 * way is to fill out the &drm_plane_state.fence of the passed-in
1199 * this callback is the only one which can fail an atomic commit,
1224 * complicated dependencies the driver can call the provided check helpers
1229 * can add more state objects to the atomic commit if needed. Care must
1241 * driver is not allowed to change anything outside of the free-standing
1242 * state objects passed-in or assembled in the overall &drm_atomic_state
1247 * 0 on success, -EINVAL if the state or the transition can't be
1248 * supported, -ENOMEM on memory allocation failure and -EDEADLK if an
1259 * hook is called in-between the &drm_crtc_helper_funcs.atomic_begin and
1275 * Drivers should use this function to unconditionally disable a plane.
1276 * This hook is called in-between the
1282 * This hook is also useful to disable planes in preparation of a modeset,
1284 * &drm_crtc_helper_funcs.disable hook.
1301 * can be updated in a async fashion. Here async means "not vblank
1305 * given update can be committed asynchronously, that is, if it can
1311 * can not be applied in asynchronous manner.
1345 * - It only works for single plane updates
1346 * - Async Pageflips are not supported yet
1347 * - Some hw might still scan out the old buffer until the next
1357 * drm_plane_helper_add - sets the helper vtable for a plane
1364 plane->helper_private = funcs; in drm_plane_helper_add()
1368 * struct drm_mode_config_helper_funcs - global modeset helper operations
1387 * can add more waiting calls at the start of their implementation, e.g.
1388 * to wait for driver-internal request for implicit syncing, before
1400 * can't take care of this. And it also can't rely on the vblank event,
1401 * since that can be signalled already when the screen shows black,
1402 * which can happen much earlier than the last hardware access needed to