Lines Matching refs:crtc

591 	struct drm_crtc *crtc;  in drm_framebuffer_remove()  local
616 list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) { in drm_framebuffer_remove()
617 if (crtc->primary->fb == fb) { in drm_framebuffer_remove()
620 set.crtc = crtc; in drm_framebuffer_remove()
624 DRM_ERROR("failed to reset crtc %p when fb was deleted\n", crtc); in drm_framebuffer_remove()
655 int drm_crtc_init_with_planes(struct drm_device *dev, struct drm_crtc *crtc, in drm_crtc_init_with_planes() argument
666 crtc->dev = dev; in drm_crtc_init_with_planes()
667 crtc->funcs = funcs; in drm_crtc_init_with_planes()
668 crtc->invert_dimensions = false; in drm_crtc_init_with_planes()
670 drm_modeset_lock_init(&crtc->mutex); in drm_crtc_init_with_planes()
671 ret = drm_mode_object_get(dev, &crtc->base, DRM_MODE_OBJECT_CRTC); in drm_crtc_init_with_planes()
675 crtc->base.properties = &crtc->properties; in drm_crtc_init_with_planes()
677 list_add_tail(&crtc->head, &config->crtc_list); in drm_crtc_init_with_planes()
680 crtc->primary = primary; in drm_crtc_init_with_planes()
681 crtc->cursor = cursor; in drm_crtc_init_with_planes()
683 primary->possible_crtcs = 1 << drm_crtc_index(crtc); in drm_crtc_init_with_planes()
685 cursor->possible_crtcs = 1 << drm_crtc_index(crtc); in drm_crtc_init_with_planes()
688 drm_object_attach_property(&crtc->base, config->prop_active, 0); in drm_crtc_init_with_planes()
703 void drm_crtc_cleanup(struct drm_crtc *crtc) in drm_crtc_cleanup() argument
705 struct drm_device *dev = crtc->dev; in drm_crtc_cleanup()
707 kfree(crtc->gamma_store); in drm_crtc_cleanup()
708 crtc->gamma_store = NULL; in drm_crtc_cleanup()
710 drm_modeset_lock_fini(&crtc->mutex); in drm_crtc_cleanup()
712 drm_mode_object_put(dev, &crtc->base); in drm_crtc_cleanup()
713 list_del(&crtc->head); in drm_crtc_cleanup()
716 WARN_ON(crtc->state && !crtc->funcs->atomic_destroy_state); in drm_crtc_cleanup()
717 if (crtc->state && crtc->funcs->atomic_destroy_state) in drm_crtc_cleanup()
718 crtc->funcs->atomic_destroy_state(crtc, crtc->state); in drm_crtc_cleanup()
720 memset(crtc, 0, sizeof(*crtc)); in drm_crtc_cleanup()
731 unsigned int drm_crtc_index(struct drm_crtc *crtc) in drm_crtc_index() argument
736 list_for_each_entry(tmp, &crtc->dev->mode_config.crtc_list, head) { in drm_crtc_index()
737 if (tmp == crtc) in drm_crtc_index()
1318 plane->crtc = NULL; in drm_plane_force_disable()
1680 struct drm_crtc *crtc; in drm_mode_group_init_legacy_group() local
1689 list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) in drm_mode_group_init_legacy_group()
1690 group->id_list[group->num_crtcs++] = crtc->base.id; in drm_mode_group_init_legacy_group()
1810 struct drm_crtc *crtc; in drm_mode_getresources() local
1884 list_for_each_entry(crtc, &dev->mode_config.crtc_list, in drm_mode_getresources()
1886 DRM_DEBUG_KMS("[CRTC:%d]\n", crtc->base.id); in drm_mode_getresources()
1887 if (put_user(crtc->base.id, crtc_id + copied)) { in drm_mode_getresources()
1995 struct drm_crtc *crtc; in drm_mode_getcrtc() local
2000 crtc = drm_crtc_find(dev, crtc_resp->crtc_id); in drm_mode_getcrtc()
2001 if (!crtc) in drm_mode_getcrtc()
2004 drm_modeset_lock_crtc(crtc, crtc->primary); in drm_mode_getcrtc()
2005 crtc_resp->gamma_size = crtc->gamma_size; in drm_mode_getcrtc()
2006 if (crtc->primary->fb) in drm_mode_getcrtc()
2007 crtc_resp->fb_id = crtc->primary->fb->base.id; in drm_mode_getcrtc()
2011 if (crtc->state) { in drm_mode_getcrtc()
2012 crtc_resp->x = crtc->primary->state->src_x >> 16; in drm_mode_getcrtc()
2013 crtc_resp->y = crtc->primary->state->src_y >> 16; in drm_mode_getcrtc()
2014 if (crtc->state->enable) { in drm_mode_getcrtc()
2015 drm_crtc_convert_to_umode(&crtc_resp->mode, &crtc->state->mode); in drm_mode_getcrtc()
2022 crtc_resp->x = crtc->x; in drm_mode_getcrtc()
2023 crtc_resp->y = crtc->y; in drm_mode_getcrtc()
2024 if (crtc->enabled) { in drm_mode_getcrtc()
2025 drm_crtc_convert_to_umode(&crtc_resp->mode, &crtc->mode); in drm_mode_getcrtc()
2032 drm_modeset_unlock_crtc(crtc); in drm_mode_getcrtc()
2242 return connector->state->crtc; in drm_encoder_get_crtc()
2249 return encoder->crtc; in drm_encoder_get_crtc()
2270 struct drm_crtc *crtc; in drm_mode_getencoder() local
2280 crtc = drm_encoder_get_crtc(encoder); in drm_mode_getencoder()
2281 if (crtc) in drm_mode_getencoder()
2282 enc_resp->crtc_id = crtc->base.id; in drm_mode_getencoder()
2384 if (plane->crtc) in drm_mode_getplane()
2385 plane_resp->crtc_id = plane->crtc->base.id; in drm_mode_getplane()
2448 struct drm_crtc *crtc, in __setplane_internal() argument
2464 plane->crtc = NULL; in __setplane_internal()
2473 if (!(plane->possible_crtcs & drm_crtc_mask(crtc))) { in __setplane_internal()
2517 ret = plane->funcs->update_plane(plane, crtc, fb, in __setplane_internal()
2521 plane->crtc = crtc; in __setplane_internal()
2539 struct drm_crtc *crtc, in setplane_internal() argument
2550 ret = __setplane_internal(plane, crtc, fb, in setplane_internal()
2576 struct drm_crtc *crtc = NULL; in drm_mode_setplane() local
2601 crtc = drm_crtc_find(dev, plane_req->crtc_id); in drm_mode_setplane()
2602 if (!crtc) { in drm_mode_setplane()
2613 return setplane_internal(plane, crtc, fb, in drm_mode_setplane()
2632 struct drm_crtc *crtc = set->crtc; in drm_mode_set_config_internal() local
2642 list_for_each_entry(tmp, &crtc->dev->mode_config.crtc_list, head) in drm_mode_set_config_internal()
2647 ret = crtc->funcs->set_config(set); in drm_mode_set_config_internal()
2649 crtc->primary->crtc = crtc; in drm_mode_set_config_internal()
2650 crtc->primary->fb = fb; in drm_mode_set_config_internal()
2653 list_for_each_entry(tmp, &crtc->dev->mode_config.crtc_list, head) { in drm_mode_set_config_internal()
2695 int drm_crtc_check_viewport(const struct drm_crtc *crtc, in drm_crtc_check_viewport() argument
2705 if (crtc->invert_dimensions) in drm_crtc_check_viewport()
2714 crtc->invert_dimensions ? " (inverted)" : ""); in drm_crtc_check_viewport()
2740 struct drm_crtc *crtc; in drm_mode_setcrtc() local
2760 crtc = drm_crtc_find(dev, crtc_req->crtc_id); in drm_mode_setcrtc()
2761 if (!crtc) { in drm_mode_setcrtc()
2766 DRM_DEBUG_KMS("[CRTC:%d]\n", crtc->base.id); in drm_mode_setcrtc()
2772 if (!crtc->primary->fb) { in drm_mode_setcrtc()
2777 fb = crtc->primary->fb; in drm_mode_setcrtc()
2817 if (!crtc->primary->format_default) { in drm_mode_setcrtc()
2818 ret = drm_plane_check_pixel_format(crtc->primary, in drm_mode_setcrtc()
2827 ret = drm_crtc_check_viewport(crtc, crtc_req->x, crtc_req->y, in drm_mode_setcrtc()
2886 set.crtc = crtc; in drm_mode_setcrtc()
2924 static int drm_mode_cursor_universal(struct drm_crtc *crtc, in drm_mode_cursor_universal() argument
2928 struct drm_device *dev = crtc->dev; in drm_mode_cursor_universal()
2942 BUG_ON(!crtc->cursor); in drm_mode_cursor_universal()
2943 WARN_ON(crtc->cursor->crtc != crtc && crtc->cursor->crtc != NULL); in drm_mode_cursor_universal()
2961 fb = crtc->cursor->fb; in drm_mode_cursor_universal()
2970 crtc_x = crtc->cursor_x; in drm_mode_cursor_universal()
2971 crtc_y = crtc->cursor_y; in drm_mode_cursor_universal()
2985 ret = __setplane_internal(crtc->cursor, crtc, fb, in drm_mode_cursor_universal()
2991 crtc->cursor_x = req->x; in drm_mode_cursor_universal()
2992 crtc->cursor_y = req->y; in drm_mode_cursor_universal()
3002 struct drm_crtc *crtc; in drm_mode_cursor_common() local
3011 crtc = drm_crtc_find(dev, req->crtc_id); in drm_mode_cursor_common()
3012 if (!crtc) { in drm_mode_cursor_common()
3021 drm_modeset_lock_crtc(crtc, crtc->cursor); in drm_mode_cursor_common()
3022 if (crtc->cursor) { in drm_mode_cursor_common()
3023 ret = drm_mode_cursor_universal(crtc, req, file_priv); in drm_mode_cursor_common()
3028 if (!crtc->funcs->cursor_set && !crtc->funcs->cursor_set2) { in drm_mode_cursor_common()
3033 if (crtc->funcs->cursor_set2) in drm_mode_cursor_common()
3034 ret = crtc->funcs->cursor_set2(crtc, file_priv, req->handle, in drm_mode_cursor_common()
3037 ret = crtc->funcs->cursor_set(crtc, file_priv, req->handle, in drm_mode_cursor_common()
3042 if (crtc->funcs->cursor_move) { in drm_mode_cursor_common()
3043 ret = crtc->funcs->cursor_move(crtc, req->x, req->y); in drm_mode_cursor_common()
3050 drm_modeset_unlock_crtc(crtc); in drm_mode_cursor_common()
4545 struct drm_crtc *crtc = obj_to_crtc(obj); in drm_mode_crtc_set_obj_prop() local
4547 if (crtc->funcs->set_property) in drm_mode_crtc_set_obj_prop()
4548 ret = crtc->funcs->set_property(crtc, property, value); in drm_mode_crtc_set_obj_prop()
4748 int drm_mode_crtc_set_gamma_size(struct drm_crtc *crtc, in drm_mode_crtc_set_gamma_size() argument
4751 crtc->gamma_size = gamma_size; in drm_mode_crtc_set_gamma_size()
4753 crtc->gamma_store = kcalloc(gamma_size, sizeof(uint16_t) * 3, in drm_mode_crtc_set_gamma_size()
4755 if (!crtc->gamma_store) { in drm_mode_crtc_set_gamma_size()
4756 crtc->gamma_size = 0; in drm_mode_crtc_set_gamma_size()
4782 struct drm_crtc *crtc; in drm_mode_gamma_set_ioctl() local
4791 crtc = drm_crtc_find(dev, crtc_lut->crtc_id); in drm_mode_gamma_set_ioctl()
4792 if (!crtc) { in drm_mode_gamma_set_ioctl()
4797 if (crtc->funcs->gamma_set == NULL) { in drm_mode_gamma_set_ioctl()
4803 if (crtc_lut->gamma_size != crtc->gamma_size) { in drm_mode_gamma_set_ioctl()
4809 r_base = crtc->gamma_store; in drm_mode_gamma_set_ioctl()
4827 crtc->funcs->gamma_set(crtc, r_base, g_base, b_base, 0, crtc->gamma_size); in drm_mode_gamma_set_ioctl()
4854 struct drm_crtc *crtc; in drm_mode_gamma_get_ioctl() local
4863 crtc = drm_crtc_find(dev, crtc_lut->crtc_id); in drm_mode_gamma_get_ioctl()
4864 if (!crtc) { in drm_mode_gamma_get_ioctl()
4870 if (crtc_lut->gamma_size != crtc->gamma_size) { in drm_mode_gamma_get_ioctl()
4876 r_base = crtc->gamma_store; in drm_mode_gamma_get_ioctl()
4920 struct drm_crtc *crtc; in drm_mode_page_flip_ioctl() local
4933 crtc = drm_crtc_find(dev, page_flip->crtc_id); in drm_mode_page_flip_ioctl()
4934 if (!crtc) in drm_mode_page_flip_ioctl()
4937 drm_modeset_lock_crtc(crtc, crtc->primary); in drm_mode_page_flip_ioctl()
4938 if (crtc->primary->fb == NULL) { in drm_mode_page_flip_ioctl()
4947 if (crtc->funcs->page_flip == NULL) in drm_mode_page_flip_ioctl()
4956 ret = drm_crtc_check_viewport(crtc, crtc->x, crtc->y, &crtc->mode, fb); in drm_mode_page_flip_ioctl()
4960 if (crtc->primary->fb->pixel_format != fb->pixel_format) { in drm_mode_page_flip_ioctl()
4993 crtc->primary->old_fb = crtc->primary->fb; in drm_mode_page_flip_ioctl()
4994 ret = crtc->funcs->page_flip(crtc, fb, e, page_flip->flags); in drm_mode_page_flip_ioctl()
5003 crtc->primary->old_fb = NULL; in drm_mode_page_flip_ioctl()
5011 WARN_ON(crtc->primary->fb != fb); in drm_mode_page_flip_ioctl()
5019 if (crtc->primary->old_fb) in drm_mode_page_flip_ioctl()
5020 drm_framebuffer_unreference(crtc->primary->old_fb); in drm_mode_page_flip_ioctl()
5021 crtc->primary->old_fb = NULL; in drm_mode_page_flip_ioctl()
5022 drm_modeset_unlock_crtc(crtc); in drm_mode_page_flip_ioctl()
5037 struct drm_crtc *crtc; in drm_mode_config_reset() local
5046 list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) in drm_mode_config_reset()
5047 if (crtc->funcs->reset) in drm_mode_config_reset()
5048 crtc->funcs->reset(crtc); in drm_mode_config_reset()
5473 struct drm_crtc *crtc, *ct; in drm_mode_config_cleanup() local
5518 list_for_each_entry_safe(crtc, ct, &dev->mode_config.crtc_list, head) { in drm_mode_config_cleanup()
5519 crtc->funcs->destroy(crtc); in drm_mode_config_cleanup()