393#define drm_for_each_privobj(privobj, dev) \
394 list_for_each_entry(privobj, &(dev)->mode_config.privobj_list, head)
664 kref_get(&commit->
ref);
695 kref_get(&
state->ref);
783 return state->crtcs[drm_crtc_index(
crtc)].old_state;
797 return state->crtcs[drm_crtc_index(
crtc)].new_state;
812 return state->planes[drm_plane_index(
plane)].old_state;
827 return state->planes[drm_plane_index(
plane)].new_state;
902 plane_state = drm_atomic_get_new_plane_state(
state,
plane);
945#define for_each_oldnew_connector_in_state(__state, connector, old_connector_state, new_connector_state, __i) \
947 (__i) < (__state)->num_connector; \
949 for_each_if ((__state)->connectors[__i].ptr && \
950 ((connector) = (__state)->connectors[__i].ptr, \
951 (void)(connector) , \
952 (old_connector_state) = (__state)->connectors[__i].old_state, \
953 (new_connector_state) = (__state)->connectors[__i].new_state, 1))
967#define for_each_old_connector_in_state(__state, connector, old_connector_state, __i) \
969 (__i) < (__state)->num_connector; \
971 for_each_if ((__state)->connectors[__i].ptr && \
972 ((connector) = (__state)->connectors[__i].ptr, \
973 (void)(connector) , \
974 (old_connector_state) = (__state)->connectors[__i].old_state, 1))
988#define for_each_new_connector_in_state(__state, connector, new_connector_state, __i) \
990 (__i) < (__state)->num_connector; \
992 for_each_if ((__state)->connectors[__i].ptr && \
993 ((connector) = (__state)->connectors[__i].ptr, \
994 (void)(connector) , \
995 (new_connector_state) = (__state)->connectors[__i].new_state, \
996 (void)(new_connector_state) , 1))
1010#define for_each_oldnew_crtc_in_state(__state, crtc, old_crtc_state, new_crtc_state, __i) \
1012 (__i) < (__state)->dev->mode_config.num_crtc; \
1014 for_each_if ((__state)->crtcs[__i].ptr && \
1015 ((crtc) = (__state)->crtcs[__i].ptr, \
1017 (old_crtc_state) = (__state)->crtcs[__i].old_state, \
1018 (void)(old_crtc_state) , \
1019 (new_crtc_state) = (__state)->crtcs[__i].new_state, \
1020 (void)(new_crtc_state) , 1))
1033#define for_each_old_crtc_in_state(__state, crtc, old_crtc_state, __i) \
1035 (__i) < (__state)->dev->mode_config.num_crtc; \
1037 for_each_if ((__state)->crtcs[__i].ptr && \
1038 ((crtc) = (__state)->crtcs[__i].ptr, \
1040 (old_crtc_state) = (__state)->crtcs[__i].old_state, 1))
1053#define for_each_new_crtc_in_state(__state, crtc, new_crtc_state, __i) \
1055 (__i) < (__state)->dev->mode_config.num_crtc; \
1057 for_each_if ((__state)->crtcs[__i].ptr && \
1058 ((crtc) = (__state)->crtcs[__i].ptr, \
1060 (new_crtc_state) = (__state)->crtcs[__i].new_state, \
1061 (void)(new_crtc_state) , 1))
1075#define for_each_oldnew_colorop_in_state(__state, colorop, old_colorop_state, \
1076 new_colorop_state, __i) \
1078 (__i) < (__state)->dev->mode_config.num_colorop; \
1080 for_each_if ((__state)->colorops[__i].ptr && \
1081 ((colorop) = (__state)->colorops[__i].ptr, \
1083 (old_colorop_state) = (__state)->colorops[__i].old_state,\
1084 (new_colorop_state) = (__state)->colorops[__i].new_state, 1))
1097#define for_each_new_colorop_in_state(__state, colorop, new_colorop_state, __i) \
1099 (__i) < (__state)->dev->mode_config.num_colorop; \
1101 for_each_if ((__state)->colorops[__i].ptr && \
1102 ((colorop) = (__state)->colorops[__i].ptr, \
1104 (new_colorop_state) = (__state)->colorops[__i].new_state,\
1105 (void)(new_colorop_state) , 1))
1119#define for_each_oldnew_plane_in_state(__state, plane, old_plane_state, new_plane_state, __i) \
1121 (__i) < (__state)->dev->mode_config.num_total_plane; \
1123 for_each_if ((__state)->planes[__i].ptr && \
1124 ((plane) = (__state)->planes[__i].ptr, \
1126 (old_plane_state) = (__state)->planes[__i].old_state,\
1127 (new_plane_state) = (__state)->planes[__i].new_state, 1))
1142#define for_each_oldnew_plane_in_state_reverse(__state, plane, old_plane_state, new_plane_state, __i) \
1143 for ((__i) = ((__state)->dev->mode_config.num_total_plane - 1); \
1146 for_each_if ((__state)->planes[__i].ptr && \
1147 ((plane) = (__state)->planes[__i].ptr, \
1148 (old_plane_state) = (__state)->planes[__i].old_state,\
1149 (new_plane_state) = (__state)->planes[__i].new_state, 1))
1159#define for_each_new_plane_in_state_reverse(__state, plane, new_plane_state, __i) \
1160 for ((__i) = ((__state)->dev->mode_config.num_total_plane - 1); \
1163 for_each_if ((__state)->planes[__i].ptr && \
1164 ((plane) = (__state)->planes[__i].ptr, \
1165 (new_plane_state) = (__state)->planes[__i].new_state, 1))
1178#define for_each_old_plane_in_state(__state, plane, old_plane_state, __i) \
1180 (__i) < (__state)->dev->mode_config.num_total_plane; \
1182 for_each_if ((__state)->planes[__i].ptr && \
1183 ((plane) = (__state)->planes[__i].ptr, \
1184 (old_plane_state) = (__state)->planes[__i].old_state, 1))
1196#define for_each_new_plane_in_state(__state, plane, new_plane_state, __i) \
1198 (__i) < (__state)->dev->mode_config.num_total_plane; \
1200 for_each_if ((__state)->planes[__i].ptr && \
1201 ((plane) = (__state)->planes[__i].ptr, \
1203 (new_plane_state) = (__state)->planes[__i].new_state, \
1204 (void)(new_plane_state) , 1))
1218#define for_each_oldnew_private_obj_in_state(__state, obj, old_obj_state, new_obj_state, __i) \
1220 (__i) < (__state)->num_private_objs && \
1221 ((obj) = (__state)->private_objs[__i].ptr, \
1222 (old_obj_state) = (__state)->private_objs[__i].old_state, \
1223 (new_obj_state) = (__state)->private_objs[__i].new_state, 1); \
1237#define for_each_old_private_obj_in_state(__state, obj, old_obj_state, __i) \
1239 (__i) < (__state)->num_private_objs && \
1240 ((obj) = (__state)->private_objs[__i].ptr, \
1241 (old_obj_state) = (__state)->private_objs[__i].old_state, 1); \
1255#define for_each_new_private_obj_in_state(__state, obj, new_obj_state, __i) \
1257 (__i) < (__state)->num_private_objs && \
1258 ((obj) = (__state)->private_objs[__i].ptr, \
1260 (new_obj_state) = (__state)->private_objs[__i].new_state, 1); \
1285 return state->mode_changed ||
state->active_changed ||
1286 state->connectors_changed;
1301 return state->active ||
state->self_refresh_active;
#define index(str, chr)
Definition string.h:66
#define NULL
Definition actypes.h:561
#define __user
Definition compiler.h:63
#define __must_check
Definition compiler.h:114
#define container_of(ptr, type, member)
Definition container_of.h:19
void __drm_atomic_commit_free(struct kref *ref)
struct drm_crtc_state *__must_check drm_atomic_get_crtc_state(struct drm_atomic_commit *state, struct drm_crtc *crtc)
struct drm_private_state * drm_atomic_get_old_private_obj_state(const struct drm_atomic_commit *state, struct drm_private_obj *obj)
int __must_check drm_atomic_add_affected_planes(struct drm_atomic_commit *state, struct drm_crtc *crtc)
struct drm_connector * drm_atomic_get_connector_for_encoder(const struct drm_encoder *encoder, struct drm_modeset_acquire_ctx *ctx)
struct drm_colorop_state * drm_atomic_get_new_colorop_state(struct drm_atomic_commit *state, struct drm_colorop *colorop)
int __must_check drm_atomic_nonblocking_commit(struct drm_atomic_commit *state)
int __must_check drm_atomic_commit_init(struct drm_device *dev, struct drm_atomic_commit *state)
struct drm_connector * drm_atomic_get_new_connector_for_encoder(const struct drm_atomic_commit *state, struct drm_encoder *encoder)
void __drm_crtc_commit_free(struct kref *kref)
int __must_check drm_atomic_add_affected_connectors(struct drm_atomic_commit *state, struct drm_crtc *crtc)
void drm_atomic_commit_default_clear(struct drm_atomic_commit *state)
void drm_atomic_private_obj_fini(struct drm_private_obj *obj)
void drm_atomic_commit_default_release(struct drm_atomic_commit *state)
struct drm_bridge_state * drm_atomic_get_new_bridge_state(const struct drm_atomic_commit *state, struct drm_bridge *bridge)
struct drm_bridge_state * drm_atomic_get_old_bridge_state(const struct drm_atomic_commit *state, struct drm_bridge *bridge)
struct drm_atomic_commit *__must_check drm_atomic_commit_alloc(struct drm_device *dev)
struct drm_private_state * drm_atomic_get_new_private_obj_state(const struct drm_atomic_commit *state, struct drm_private_obj *obj)
int drm_crtc_commit_wait(struct drm_crtc_commit *commit)
struct drm_crtc * drm_atomic_get_new_crtc_for_encoder(struct drm_atomic_commit *state, struct drm_encoder *encoder)
int __must_check drm_atomic_check_only(struct drm_atomic_commit *state)
struct drm_private_state *__must_check drm_atomic_get_private_obj_state(struct drm_atomic_commit *state, struct drm_private_obj *obj)
int drm_atomic_private_obj_init(struct drm_device *dev, struct drm_private_obj *obj, const struct drm_private_state_funcs *funcs)
struct drm_connector_state *__must_check drm_atomic_get_connector_state(struct drm_atomic_commit *state, struct drm_connector *connector)
struct drm_connector * drm_atomic_get_old_connector_for_encoder(const struct drm_atomic_commit *state, struct drm_encoder *encoder)
struct drm_plane_state *__must_check drm_atomic_get_plane_state(struct drm_atomic_commit *state, struct drm_plane *plane)
struct drm_crtc * drm_atomic_get_old_crtc_for_encoder(struct drm_atomic_commit *state, struct drm_encoder *encoder)
int __must_check drm_atomic_add_encoder_bridges(struct drm_atomic_commit *state, struct drm_encoder *encoder)
struct drm_colorop_state * drm_atomic_get_old_colorop_state(struct drm_atomic_commit *state, struct drm_colorop *colorop)
void drm_state_dump(struct drm_device *dev, struct drm_printer *p)
int __must_check drm_atomic_add_affected_colorops(struct drm_atomic_commit *state, struct drm_plane *plane)
struct drm_bridge_state * drm_atomic_get_bridge_state(struct drm_atomic_commit *state, struct drm_bridge *bridge)
struct drm_colorop_state * drm_atomic_get_colorop_state(struct drm_atomic_commit *state, struct drm_colorop *colorop)
void drm_atomic_commit_clear(struct drm_atomic_commit *state)
size_t size_t const struct drm_bridge_funcs * funcs
Definition drm_bridge.h:1300
struct drm_crtc * crtc
Definition drm_crtc.h:1238
struct drm_encoder * encoder
Definition drm_encoder.h:211
struct drm_plane * plane
Definition drm_plane.h:828
const struct device * dev
Definition drm_print.h:519
struct i915_user_extension base
Definition i915_drm.h:0
uint64_t u64
Definition kernel.h:17
int32_t s32
Definition kernel.h:20
uint32_t u32
Definition kernel.h:16
int const struct list_head const struct list_head struct list_head * head
Definition list_sort.h:13
Definition drm_atomic.h:160
struct drm_colorop_state * old_state
Definition drm_atomic.h:162
struct drm_colorop_state * new_state
Definition drm_atomic.h:162
struct drm_colorop * ptr
Definition drm_atomic.h:161
struct drm_colorop_state * state
Definition drm_atomic.h:162
Definition drm_atomic.h:220
struct drm_connector_state * state_to_destroy
Definition drm_atomic.h:236
struct drm_connector_state * new_state
Definition drm_atomic.h:238
struct drm_connector_state * old_state
Definition drm_atomic.h:238
struct drm_connector * ptr
Definition drm_atomic.h:221
s32 __user * out_fence_ptr
Definition drm_atomic.h:247
Definition drm_atomic.h:186
struct drm_crtc_state * old_state
Definition drm_atomic.h:204
struct drm_crtc_state * new_state
Definition drm_atomic.h:204
u64 last_vblank_count
Definition drm_atomic.h:217
s32 __user * out_fence_ptr
Definition drm_atomic.h:216
struct drm_crtc * ptr
Definition drm_atomic.h:187
struct drm_crtc_commit * commit
Definition drm_atomic.h:214
struct drm_crtc_state * state_to_destroy
Definition drm_atomic.h:202
Definition drm_atomic.h:165
struct drm_plane_state * old_state
Definition drm_atomic.h:183
struct drm_plane_state * new_state
Definition drm_atomic.h:183
struct drm_plane * ptr
Definition drm_atomic.h:166
struct drm_plane_state * state_to_destroy
Definition drm_atomic.h:181
Definition drm_atomic.h:415
struct drm_private_state * state_to_destroy
Definition drm_atomic.h:431
struct drm_private_obj * ptr
Definition drm_atomic.h:416
struct drm_private_state * old_state
Definition drm_atomic.h:433
struct drm_private_state * new_state
Definition drm_atomic.h:433
Definition completion.h:55
Definition drm_atomic.h:480
bool async_update
Definition drm_atomic.h:537
struct __drm_colorops_state * colorops
Definition drm_atomic.h:581
struct drm_crtc_commit * fake_commit
Definition drm_atomic.h:640
struct __drm_private_objs_state * private_objs
Definition drm_atomic.h:623
int num_connector
Definition drm_atomic.h:602
struct drm_device * dev
Definition drm_atomic.h:491
struct work_struct commit_work
Definition drm_atomic.h:648
int num_private_objs
Definition drm_atomic.h:615
bool duplicated
Definition drm_atomic.h:547
bool plane_color_pipeline
Definition drm_atomic.h:573
bool checked
Definition drm_atomic.h:555
struct __drm_crtcs_state * crtcs
Definition drm_atomic.h:597
struct kref ref
Definition drm_atomic.h:486
struct __drm_connnectors_state * connectors
Definition drm_atomic.h:610
struct __drm_planes_state * planes
Definition drm_atomic.h:589
bool allow_modeset
Definition drm_atomic.h:520
struct drm_modeset_acquire_ctx * acquire_ctx
Definition drm_atomic.h:628
bool legacy_cursor_update
Definition drm_atomic.h:532
Definition drm_atomic.h:1339
struct drm_bridge * bridge
Definition drm_atomic.h:1348
struct drm_private_state base
Definition drm_atomic.h:1343
struct drm_bus_cfg output_bus_cfg
Definition drm_atomic.h:1358
struct drm_bus_cfg input_bus_cfg
Definition drm_atomic.h:1353
Definition drm_bridge.h:1100
Definition drm_atomic.h:1320
u32 flags
Definition drm_atomic.h:1333
u32 format
Definition drm_atomic.h:1328
Definition drm_colorop.h:140
struct drm_colorop * colorop
Definition drm_colorop.h:142
Definition drm_colorop.h:228
Definition drm_connector.h:1065
struct drm_connector * connector
Definition drm_connector.h:1067
Definition drm_connector.h:1998
Definition drm_atomic.h:72
struct completion flip_done
Definition drm_atomic.h:101
struct completion cleanup_done
Definition drm_atomic.h:133
struct drm_crtc * crtc
Definition drm_atomic.h:78
struct drm_pending_vblank_event * event
Definition drm_atomic.h:148
struct completion hw_done
Definition drm_atomic.h:119
struct list_head commit_entry
Definition drm_atomic.h:141
bool abort_completion
Definition drm_atomic.h:157
struct kref ref
Definition drm_atomic.h:87
Definition drm_crtc.h:955
Definition drm_device.h:75
Definition drm_encoder.h:106
Definition drm_modeset_lock.h:46
Definition drm_modeset_lock.h:85
Definition drm_vblank.h:43
Definition drm_plane.h:54
Definition drm_plane.h:641
struct drm_plane_state * state
Definition drm_plane.h:748
Definition drm_print.h:181
Definition drm_atomic.h:353
struct drm_modeset_lock lock
Definition drm_atomic.h:368
struct drm_device * dev
Definition drm_atomic.h:357
struct drm_private_state * state
Definition drm_atomic.h:373
const struct drm_private_state_funcs * funcs
Definition drm_atomic.h:381
Definition drm_atomic.h:263
void(* atomic_destroy_state)(struct drm_private_obj *obj, struct drm_private_state *state)
Definition drm_atomic.h:295
void(* atomic_print_state)(struct drm_printer *p, const struct drm_private_state *state)
Definition drm_atomic.h:307
Definition drm_atomic.h:403
struct drm_atomic_commit * state
Definition drm_atomic.h:407
struct drm_private_obj * obj
Definition drm_atomic.h:412
Definition workqueue.h:44