Lines Matching refs:plane

598 	struct drm_plane *plane;  in drm_framebuffer_remove()  local
639 drm_for_each_plane(plane, dev) { in drm_framebuffer_remove()
640 if (plane->fb == fb) in drm_framebuffer_remove()
641 drm_plane_force_disable(plane); in drm_framebuffer_remove()
1159 int drm_universal_plane_init(struct drm_device *dev, struct drm_plane *plane, in drm_universal_plane_init() argument
1168 ret = drm_mode_object_get(dev, &plane->base, DRM_MODE_OBJECT_PLANE); in drm_universal_plane_init()
1172 drm_modeset_lock_init(&plane->mutex); in drm_universal_plane_init()
1174 plane->base.properties = &plane->properties; in drm_universal_plane_init()
1175 plane->dev = dev; in drm_universal_plane_init()
1176 plane->funcs = funcs; in drm_universal_plane_init()
1177 plane->format_types = kmalloc_array(format_count, sizeof(uint32_t), in drm_universal_plane_init()
1179 if (!plane->format_types) { in drm_universal_plane_init()
1181 drm_mode_object_put(dev, &plane->base); in drm_universal_plane_init()
1185 memcpy(plane->format_types, formats, format_count * sizeof(uint32_t)); in drm_universal_plane_init()
1186 plane->format_count = format_count; in drm_universal_plane_init()
1187 plane->possible_crtcs = possible_crtcs; in drm_universal_plane_init()
1188 plane->type = type; in drm_universal_plane_init()
1190 list_add_tail(&plane->head, &config->plane_list); in drm_universal_plane_init()
1192 if (plane->type == DRM_PLANE_TYPE_OVERLAY) in drm_universal_plane_init()
1195 drm_object_attach_property(&plane->base, in drm_universal_plane_init()
1197 plane->type); in drm_universal_plane_init()
1200 drm_object_attach_property(&plane->base, config->prop_fb_id, 0); in drm_universal_plane_init()
1201 drm_object_attach_property(&plane->base, config->prop_crtc_id, 0); in drm_universal_plane_init()
1202 drm_object_attach_property(&plane->base, config->prop_crtc_x, 0); in drm_universal_plane_init()
1203 drm_object_attach_property(&plane->base, config->prop_crtc_y, 0); in drm_universal_plane_init()
1204 drm_object_attach_property(&plane->base, config->prop_crtc_w, 0); in drm_universal_plane_init()
1205 drm_object_attach_property(&plane->base, config->prop_crtc_h, 0); in drm_universal_plane_init()
1206 drm_object_attach_property(&plane->base, config->prop_src_x, 0); in drm_universal_plane_init()
1207 drm_object_attach_property(&plane->base, config->prop_src_y, 0); in drm_universal_plane_init()
1208 drm_object_attach_property(&plane->base, config->prop_src_w, 0); in drm_universal_plane_init()
1209 drm_object_attach_property(&plane->base, config->prop_src_h, 0); in drm_universal_plane_init()
1233 int drm_plane_init(struct drm_device *dev, struct drm_plane *plane, in drm_plane_init() argument
1242 return drm_universal_plane_init(dev, plane, possible_crtcs, funcs, in drm_plane_init()
1255 void drm_plane_cleanup(struct drm_plane *plane) in drm_plane_cleanup() argument
1257 struct drm_device *dev = plane->dev; in drm_plane_cleanup()
1260 kfree(plane->format_types); in drm_plane_cleanup()
1261 drm_mode_object_put(dev, &plane->base); in drm_plane_cleanup()
1263 BUG_ON(list_empty(&plane->head)); in drm_plane_cleanup()
1265 list_del(&plane->head); in drm_plane_cleanup()
1267 if (plane->type == DRM_PLANE_TYPE_OVERLAY) in drm_plane_cleanup()
1271 WARN_ON(plane->state && !plane->funcs->atomic_destroy_state); in drm_plane_cleanup()
1272 if (plane->state && plane->funcs->atomic_destroy_state) in drm_plane_cleanup()
1273 plane->funcs->atomic_destroy_state(plane, plane->state); in drm_plane_cleanup()
1275 memset(plane, 0, sizeof(*plane)); in drm_plane_cleanup()
1286 unsigned int drm_plane_index(struct drm_plane *plane) in drm_plane_index() argument
1291 drm_for_each_plane(tmp, plane->dev) { in drm_plane_index()
1292 if (tmp == plane) in drm_plane_index()
1313 struct drm_plane *plane; in drm_plane_from_index() local
1316 drm_for_each_plane(plane, dev) { in drm_plane_from_index()
1318 return plane; in drm_plane_from_index()
1334 void drm_plane_force_disable(struct drm_plane *plane) in drm_plane_force_disable() argument
1338 if (!plane->fb) in drm_plane_force_disable()
1341 plane->old_fb = plane->fb; in drm_plane_force_disable()
1342 ret = plane->funcs->disable_plane(plane); in drm_plane_force_disable()
1345 plane->old_fb = NULL; in drm_plane_force_disable()
1349 drm_framebuffer_unreference(plane->old_fb); in drm_plane_force_disable()
1350 plane->old_fb = NULL; in drm_plane_force_disable()
1351 plane->fb = NULL; in drm_plane_force_disable()
1352 plane->crtc = NULL; in drm_plane_force_disable()
2192 struct drm_plane *plane; in drm_mode_getplane_res() local
2216 drm_for_each_plane(plane, dev) { in drm_mode_getplane_res()
2221 if (plane->type != DRM_PLANE_TYPE_OVERLAY && in drm_mode_getplane_res()
2225 if (put_user(plane->base.id, plane_ptr + copied)) in drm_mode_getplane_res()
2252 struct drm_plane *plane; in drm_mode_getplane() local
2258 plane = drm_plane_find(dev, plane_resp->plane_id); in drm_mode_getplane()
2259 if (!plane) in drm_mode_getplane()
2262 drm_modeset_lock(&plane->mutex, NULL); in drm_mode_getplane()
2263 if (plane->crtc) in drm_mode_getplane()
2264 plane_resp->crtc_id = plane->crtc->base.id; in drm_mode_getplane()
2268 if (plane->fb) in drm_mode_getplane()
2269 plane_resp->fb_id = plane->fb->base.id; in drm_mode_getplane()
2272 drm_modeset_unlock(&plane->mutex); in drm_mode_getplane()
2274 plane_resp->plane_id = plane->base.id; in drm_mode_getplane()
2275 plane_resp->possible_crtcs = plane->possible_crtcs; in drm_mode_getplane()
2282 if (plane->format_count && in drm_mode_getplane()
2283 (plane_resp->count_format_types >= plane->format_count)) { in drm_mode_getplane()
2286 plane->format_types, in drm_mode_getplane()
2287 sizeof(uint32_t) * plane->format_count)) { in drm_mode_getplane()
2291 plane_resp->count_format_types = plane->format_count; in drm_mode_getplane()
2305 int drm_plane_check_pixel_format(const struct drm_plane *plane, u32 format) in drm_plane_check_pixel_format() argument
2309 for (i = 0; i < plane->format_count; i++) { in drm_plane_check_pixel_format()
2310 if (format == plane->format_types[i]) in drm_plane_check_pixel_format()
2352 static int __setplane_internal(struct drm_plane *plane, in __setplane_internal() argument
2365 plane->old_fb = plane->fb; in __setplane_internal()
2366 ret = plane->funcs->disable_plane(plane); in __setplane_internal()
2368 plane->crtc = NULL; in __setplane_internal()
2369 plane->fb = NULL; in __setplane_internal()
2371 plane->old_fb = NULL; in __setplane_internal()
2377 if (!(plane->possible_crtcs & drm_crtc_mask(crtc))) { in __setplane_internal()
2384 ret = drm_plane_check_pixel_format(plane, fb->pixel_format); in __setplane_internal()
2406 plane->old_fb = plane->fb; in __setplane_internal()
2407 ret = plane->funcs->update_plane(plane, crtc, fb, in __setplane_internal()
2411 plane->crtc = crtc; in __setplane_internal()
2412 plane->fb = fb; in __setplane_internal()
2415 plane->old_fb = NULL; in __setplane_internal()
2421 if (plane->old_fb) in __setplane_internal()
2422 drm_framebuffer_unreference(plane->old_fb); in __setplane_internal()
2423 plane->old_fb = NULL; in __setplane_internal()
2428 static int setplane_internal(struct drm_plane *plane, in setplane_internal() argument
2439 drm_modeset_lock_all(plane->dev); in setplane_internal()
2440 ret = __setplane_internal(plane, crtc, fb, in setplane_internal()
2443 drm_modeset_unlock_all(plane->dev); in setplane_internal()
2465 struct drm_plane *plane; in drm_mode_setplane() local
2476 plane = drm_plane_find(dev, plane_req->plane_id); in drm_mode_setplane()
2477 if (!plane) { in drm_mode_setplane()
2503 return setplane_internal(plane, crtc, fb, in drm_mode_setplane()
4878 int drm_mode_plane_set_obj_prop(struct drm_plane *plane, in drm_mode_plane_set_obj_prop() argument
4883 struct drm_mode_object *obj = &plane->base; in drm_mode_plane_set_obj_prop()
4885 if (plane->funcs->set_property) in drm_mode_plane_set_obj_prop()
4886 ret = plane->funcs->set_property(plane, property, value); in drm_mode_plane_set_obj_prop()
5349 struct drm_plane *plane; in drm_mode_config_reset() local
5353 drm_for_each_plane(plane, dev) in drm_mode_config_reset()
5354 if (plane->funcs->reset) in drm_mode_config_reset()
5355 plane->funcs->reset(plane); in drm_mode_config_reset()
5599 int drm_format_plane_cpp(uint32_t format, int plane) in drm_format_plane_cpp() argument
5604 if (plane >= drm_format_num_planes(format)) in drm_format_plane_cpp()
5619 return plane ? 2 : 1; in drm_format_plane_cpp()
5793 struct drm_plane *plane, *plt; in drm_mode_config_cleanup() local
5828 list_for_each_entry_safe(plane, plt, &dev->mode_config.plane_list, in drm_mode_config_cleanup()
5830 plane->funcs->destroy(plane); in drm_mode_config_cleanup()