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
61 * struct drm_crtc_helper_funcs - helper operations for CRTCs
75 * This callback is also used to disable a CRTC by calling it with
76 * DRM_MODE_DPMS_OFF if the @disable hook isn't used.
89 * in practice means the driver should disable the CRTC if it is
120 * restriction in the modes it can display. For example, a given crtc
121 * may be responsible to set a clock value. If the clock can not
123 * can be used to restrict the number of modes to only the ones that
124 * can be displayed.
137 * to look at anything else but the passed-in mode, and validate it
138 * against configuration-invariant hardware constraints. Any further
139 * limits which depend upon the configuration can only be checked in
166 * can be aborted for any reason (including on userspace's request to
181 * Also beware that userspace can request its own custom modes, neither
202 * since it can't update other planes it's incompatible with atomic
241 * optimized fast-path instead of a full mode set operation with all the
244 * the @mode_set callback. Since it can't update other planes it's
275 * @disable:
277 * This callback should be used to disable the CRTC. With the atomic
280 * &drm_encoder_helper_funcs.disable hook. If that sequence is too
281 * simple drivers can just add their own hooks and call it from this
287 * disable anything at the CRTC level. To ensure that runtime PM
289 * @disable must be the inverse of @atomic_enable for atomic drivers.
296 * @disable and other hooks (like @prepare or @dpms) used to shut down a
297 * CRTC: @disable is only called when also logically disabling the
301 * Therefore @disable must be the inverse of @mode_set plus @commit for
305 void (*disable)(struct drm_crtc *crtc);
310 * Drivers should check plane-update related CRTC constraints in this
311 * hook. They can also check mode related limitations but need to be
324 * callback here. For more complicated dependencies the driver can call
329 * can add more state objects to the atomic commit if needed. Care must
341 * driver is not allowed to change anything outside of the free-standing
342 * state object passed-in.
344 * Also beware that userspace can request its own custom modes, neither
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
388 * Simple hardware or hardware with special requirements can commit and
411 * hook. If that sequence is too simple drivers can just add their own
430 * This callback should be used to disable the CRTC. With the atomic
433 * &drm_encoder_helper_funcs.disable hook. If that sequence is too
434 * simple drivers can just add their own hooks and call it from this
439 * need to implement it if there's no need to disable anything at the
464 * need to apply some workarounds for gpu-specific vblank irq
472 * scanout position query. Can be NULL to skip timestamp.
475 * scanout position query. Can be NULL to skip timestamp.
481 * of scanlines to go until end of vblank, e.g., -1 means "one scanline
496 * drm_crtc_helper_add - sets the helper vtable for a crtc
503 crtc->helper_private = funcs;
507 * struct drm_encoder_helper_funcs - helper operations for encoders
521 * This callback is also used to disable an encoder by calling it with
522 * DRM_MODE_DPMS_OFF if the @disable hook isn't used.
527 * @enable and @disable should be used.
536 * of restriction in the modes it can display. For example, a given
537 * encoder may be responsible to set a clock value. If the clock can
539 * can be used to restrict the number of modes to only the ones that
540 * can be displayed.
553 * to look at anything else but the passed-in mode, and validate it
554 * against configuration-invariant hardware constraints. Any further
555 * limits which depend upon the configuration can only be checked in
572 * can be modified by this callback and does not need to match mode. See
581 * can be aborted for any reason (including on userspace's request to
594 * Also beware that userspace can request its own custom modes, neither
613 * which in practice means the driver should disable the encoder if it
619 * transitions to atomic, but it is deprecated. Instead @disable should
659 * @atomic_mode_set can be used instead.
691 * This callback can be used by drivers who want to do detection on the
694 * It is not used by any helper and therefore has purely driver-specific
709 * This callback should be used to disable the encoder. With the atomic
712 * sequence is too simple drivers can just add their own driver private
716 * This callback is a variant of @disable that provides the atomic state
717 * to the driver. If @atomic_disable is implemented, @disable is not
721 * to implement it if there's no need to disable anything at the encoder
735 * too simple drivers can just add their own driver private encoder
753 * @disable:
755 * This callback should be used to disable the encoder. With the atomic
757 * using their own &drm_crtc_helper_funcs.disable hook. If that
758 * sequence is too simple drivers can just add their own driver private
764 * disable anything at the encoder level. To ensure that runtime PM
766 * @disable must be the inverse of @enable for atomic drivers.
774 * @disable and other hooks (like @prepare or @dpms) used to shut down a
775 * encoder: @disable is only called when also logically disabling the
779 * Therefore @disable must be the inverse of @mode_set plus @commit for
783 void (*disable)(struct drm_encoder *encoder);
791 * too simple drivers can just add their own driver private encoder
796 * @disable. Atomic drivers don't need to implement it if there's no
799 * works @enable must be the inverse of @disable for atomic drivers.
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
826 * Also beware that userspace can request its own custom modes, neither
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;
856 * struct drm_connector_helper_funcs - helper operations for connectors
870 * probe callback somewhere in the driver-private connector structure.
873 * fixed panel can also manually add specific modes using
886 * resolution can call drm_add_modes_noedid(), and mark the preferred
898 * 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.
1081 * can add more state objects to the atomic commit if needed. Care must
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
1123 * prepare and clean them up the same way they can prepare and
1154 * Enable hot-plug detection for the connector.
1162 * and disable hpd are balanced.
1170 * Disable hot-plug detection for the connector.
1178 * and disable hpd are balanced.
1185 * drm_connector_helper_add - sets the helper vtable for a connector
1192 connector->helper_private = funcs;
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
1219 * can call drm_gem_plane_helper_prepare_fb() from their @prepare_fb
1223 * the atomic commit. Resources that can be release at the commit's end
1227 * shadow-plane helpers belongs into @begin_fb_access, so that atomic
1234 * optional. See @begin_fb_access for preparing per-commit resources.
1240 * this callback is the only one which can fail an atomic commit,
1264 * For example, with shadow-plane helpers, the GEM buffer's vmap
1295 * complicated dependencies the driver can call the provided check helpers
1300 * can add more state objects to the atomic commit if needed. Care must
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
1346 * This hook is called in-between the &drm_crtc_helper_funcs.atomic_begin
1351 * enabled before installing the scanout buffer, drivers can still do
1361 * @atomic_disable. Drivers that don't want to use either can still
1370 * Drivers should use this function to unconditionally disable a plane.
1371 * This hook is called in-between the
1377 * This hook is also useful to disable planes in preparation of a modeset,
1379 * &drm_crtc_helper_funcs.disable hook.
1396 * atomic state can be updated in a async fashion. Here async means
1400 * given update can be committed asynchronously, that is, if it can
1404 * if the plane can be flipped in async. The flip flag is used to
1411 * can not be applied in asynchronous manner.
1443 * - It only works for single plane updates
1444 * - Async Pageflips are not supported yet
1445 * - Some hw might still scan out the old buffer until the next
1458 * that can be used to display the panic screen. Currently only linear
1459 * buffers are supported. Non-linear buffer support is on the TODO list.
1461 * function, so you can safely access the &plane.state
1463 * Please look the documentation at drm_panic_trylock() for an in-depth
1481 * can send additional commands to the hardware, to make the scanout
1486 * Please look the documentation at drm_panic_trylock() for an in-depth
1493 * drm_plane_helper_add - sets the helper vtable for a plane
1500 plane->helper_private = funcs;
1504 * struct drm_mode_config_helper_funcs - global modeset helper operations
1523 * can add more waiting calls at the start of their implementation, e.g.
1524 * to wait for driver-internal request for implicit syncing, before
1536 * can't take care of this. And it also can't rely on the vblank event,
1537 * since that can be signalled already when the screen shows black,
1538 * which can happen much earlier than the last hardware access needed to