Lines Matching refs:crtc

597 	struct drm_crtc *crtc;  in drm_framebuffer_remove()  local
627 drm_for_each_crtc(crtc, dev) { in drm_framebuffer_remove()
628 if (crtc->primary->fb == fb) { in drm_framebuffer_remove()
631 set.crtc = crtc; in drm_framebuffer_remove()
635 DRM_ERROR("failed to reset crtc %p when fb was deleted\n", crtc); in drm_framebuffer_remove()
666 int drm_crtc_init_with_planes(struct drm_device *dev, struct drm_crtc *crtc, in drm_crtc_init_with_planes() argument
677 crtc->dev = dev; in drm_crtc_init_with_planes()
678 crtc->funcs = funcs; in drm_crtc_init_with_planes()
680 drm_modeset_lock_init(&crtc->mutex); in drm_crtc_init_with_planes()
681 ret = drm_mode_object_get(dev, &crtc->base, DRM_MODE_OBJECT_CRTC); in drm_crtc_init_with_planes()
685 crtc->base.properties = &crtc->properties; in drm_crtc_init_with_planes()
687 list_add_tail(&crtc->head, &config->crtc_list); in drm_crtc_init_with_planes()
690 crtc->primary = primary; in drm_crtc_init_with_planes()
691 crtc->cursor = cursor; in drm_crtc_init_with_planes()
693 primary->possible_crtcs = 1 << drm_crtc_index(crtc); in drm_crtc_init_with_planes()
695 cursor->possible_crtcs = 1 << drm_crtc_index(crtc); in drm_crtc_init_with_planes()
698 drm_object_attach_property(&crtc->base, config->prop_active, 0); in drm_crtc_init_with_planes()
699 drm_object_attach_property(&crtc->base, config->prop_mode_id, 0); in drm_crtc_init_with_planes()
714 void drm_crtc_cleanup(struct drm_crtc *crtc) in drm_crtc_cleanup() argument
716 struct drm_device *dev = crtc->dev; in drm_crtc_cleanup()
718 kfree(crtc->gamma_store); in drm_crtc_cleanup()
719 crtc->gamma_store = NULL; in drm_crtc_cleanup()
721 drm_modeset_lock_fini(&crtc->mutex); in drm_crtc_cleanup()
723 drm_mode_object_put(dev, &crtc->base); in drm_crtc_cleanup()
724 list_del(&crtc->head); in drm_crtc_cleanup()
727 WARN_ON(crtc->state && !crtc->funcs->atomic_destroy_state); in drm_crtc_cleanup()
728 if (crtc->state && crtc->funcs->atomic_destroy_state) in drm_crtc_cleanup()
729 crtc->funcs->atomic_destroy_state(crtc, crtc->state); in drm_crtc_cleanup()
731 memset(crtc, 0, sizeof(*crtc)); in drm_crtc_cleanup()
742 unsigned int drm_crtc_index(struct drm_crtc *crtc) in drm_crtc_index() argument
747 drm_for_each_crtc(tmp, crtc->dev) { in drm_crtc_index()
748 if (tmp == crtc) in drm_crtc_index()
1352 plane->crtc = NULL; in drm_plane_force_disable()
1741 struct drm_crtc *crtc; in drm_mode_getresources() local
1785 drm_for_each_crtc(crtc, dev) in drm_mode_getresources()
1803 drm_for_each_crtc(crtc, dev) { in drm_mode_getresources()
1804 DRM_DEBUG_KMS("[CRTC:%d]\n", crtc->base.id); in drm_mode_getresources()
1805 if (put_user(crtc->base.id, crtc_id + copied)) { in drm_mode_getresources()
1874 struct drm_crtc *crtc; in drm_mode_getcrtc() local
1879 crtc = drm_crtc_find(dev, crtc_resp->crtc_id); in drm_mode_getcrtc()
1880 if (!crtc) in drm_mode_getcrtc()
1883 drm_modeset_lock_crtc(crtc, crtc->primary); in drm_mode_getcrtc()
1884 crtc_resp->gamma_size = crtc->gamma_size; in drm_mode_getcrtc()
1885 if (crtc->primary->fb) in drm_mode_getcrtc()
1886 crtc_resp->fb_id = crtc->primary->fb->base.id; in drm_mode_getcrtc()
1890 if (crtc->state) { in drm_mode_getcrtc()
1891 crtc_resp->x = crtc->primary->state->src_x >> 16; in drm_mode_getcrtc()
1892 crtc_resp->y = crtc->primary->state->src_y >> 16; in drm_mode_getcrtc()
1893 if (crtc->state->enable) { in drm_mode_getcrtc()
1894 drm_mode_convert_to_umode(&crtc_resp->mode, &crtc->state->mode); in drm_mode_getcrtc()
1901 crtc_resp->x = crtc->x; in drm_mode_getcrtc()
1902 crtc_resp->y = crtc->y; in drm_mode_getcrtc()
1903 if (crtc->enabled) { in drm_mode_getcrtc()
1904 drm_mode_convert_to_umode(&crtc_resp->mode, &crtc->mode); in drm_mode_getcrtc()
1911 drm_modeset_unlock_crtc(crtc); in drm_mode_getcrtc()
2121 return connector->state->crtc; in drm_encoder_get_crtc()
2128 return encoder->crtc; in drm_encoder_get_crtc()
2149 struct drm_crtc *crtc; in drm_mode_getencoder() local
2159 crtc = drm_encoder_get_crtc(encoder); in drm_mode_getencoder()
2160 if (crtc) in drm_mode_getencoder()
2161 enc_resp->crtc_id = crtc->base.id; in drm_mode_getencoder()
2263 if (plane->crtc) in drm_mode_getplane()
2264 plane_resp->crtc_id = plane->crtc->base.id; in drm_mode_getplane()
2353 struct drm_crtc *crtc, in __setplane_internal() argument
2368 plane->crtc = NULL; in __setplane_internal()
2377 if (!(plane->possible_crtcs & drm_crtc_mask(crtc))) { in __setplane_internal()
2407 ret = plane->funcs->update_plane(plane, crtc, fb, in __setplane_internal()
2411 plane->crtc = crtc; in __setplane_internal()
2429 struct drm_crtc *crtc, in setplane_internal() argument
2440 ret = __setplane_internal(plane, crtc, fb, in setplane_internal()
2466 struct drm_crtc *crtc = NULL; in drm_mode_setplane() local
2491 crtc = drm_crtc_find(dev, plane_req->crtc_id); in drm_mode_setplane()
2492 if (!crtc) { in drm_mode_setplane()
2503 return setplane_internal(plane, crtc, fb, in drm_mode_setplane()
2522 struct drm_crtc *crtc = set->crtc; in drm_mode_set_config_internal() local
2532 drm_for_each_crtc(tmp, crtc->dev) in drm_mode_set_config_internal()
2537 ret = crtc->funcs->set_config(set); in drm_mode_set_config_internal()
2539 crtc->primary->crtc = crtc; in drm_mode_set_config_internal()
2540 crtc->primary->fb = fb; in drm_mode_set_config_internal()
2543 drm_for_each_crtc(tmp, crtc->dev) { in drm_mode_set_config_internal()
2585 int drm_crtc_check_viewport(const struct drm_crtc *crtc, in drm_crtc_check_viewport() argument
2595 if (crtc->state && in drm_crtc_check_viewport()
2596 crtc->primary->state->rotation & (BIT(DRM_ROTATE_90) | in drm_crtc_check_viewport()
2623 struct drm_crtc *crtc; in drm_mode_setcrtc() local
2643 crtc = drm_crtc_find(dev, crtc_req->crtc_id); in drm_mode_setcrtc()
2644 if (!crtc) { in drm_mode_setcrtc()
2649 DRM_DEBUG_KMS("[CRTC:%d]\n", crtc->base.id); in drm_mode_setcrtc()
2655 if (!crtc->primary->fb) { in drm_mode_setcrtc()
2660 fb = crtc->primary->fb; in drm_mode_setcrtc()
2694 if (!crtc->primary->format_default) { in drm_mode_setcrtc()
2695 ret = drm_plane_check_pixel_format(crtc->primary, in drm_mode_setcrtc()
2704 ret = drm_crtc_check_viewport(crtc, crtc_req->x, crtc_req->y, in drm_mode_setcrtc()
2763 set.crtc = crtc; in drm_mode_setcrtc()
2801 static int drm_mode_cursor_universal(struct drm_crtc *crtc, in drm_mode_cursor_universal() argument
2805 struct drm_device *dev = crtc->dev; in drm_mode_cursor_universal()
2819 BUG_ON(!crtc->cursor); in drm_mode_cursor_universal()
2820 WARN_ON(crtc->cursor->crtc != crtc && crtc->cursor->crtc != NULL); in drm_mode_cursor_universal()
2838 fb = crtc->cursor->fb; in drm_mode_cursor_universal()
2847 crtc_x = crtc->cursor_x; in drm_mode_cursor_universal()
2848 crtc_y = crtc->cursor_y; in drm_mode_cursor_universal()
2862 ret = __setplane_internal(crtc->cursor, crtc, fb, in drm_mode_cursor_universal()
2868 crtc->cursor_x = req->x; in drm_mode_cursor_universal()
2869 crtc->cursor_y = req->y; in drm_mode_cursor_universal()
2879 struct drm_crtc *crtc; in drm_mode_cursor_common() local
2888 crtc = drm_crtc_find(dev, req->crtc_id); in drm_mode_cursor_common()
2889 if (!crtc) { in drm_mode_cursor_common()
2898 drm_modeset_lock_crtc(crtc, crtc->cursor); in drm_mode_cursor_common()
2899 if (crtc->cursor) { in drm_mode_cursor_common()
2900 ret = drm_mode_cursor_universal(crtc, req, file_priv); in drm_mode_cursor_common()
2905 if (!crtc->funcs->cursor_set && !crtc->funcs->cursor_set2) { in drm_mode_cursor_common()
2910 if (crtc->funcs->cursor_set2) in drm_mode_cursor_common()
2911 ret = crtc->funcs->cursor_set2(crtc, file_priv, req->handle, in drm_mode_cursor_common()
2914 ret = crtc->funcs->cursor_set(crtc, file_priv, req->handle, in drm_mode_cursor_common()
2919 if (crtc->funcs->cursor_move) { in drm_mode_cursor_common()
2920 ret = crtc->funcs->cursor_move(crtc, req->x, req->y); in drm_mode_cursor_common()
2927 drm_modeset_unlock_crtc(crtc); in drm_mode_cursor_common()
4855 struct drm_crtc *crtc = obj_to_crtc(obj); in drm_mode_crtc_set_obj_prop() local
4857 if (crtc->funcs->set_property) in drm_mode_crtc_set_obj_prop()
4858 ret = crtc->funcs->set_property(crtc, property, value); in drm_mode_crtc_set_obj_prop()
5058 int drm_mode_crtc_set_gamma_size(struct drm_crtc *crtc, in drm_mode_crtc_set_gamma_size() argument
5061 crtc->gamma_size = gamma_size; in drm_mode_crtc_set_gamma_size()
5063 crtc->gamma_store = kcalloc(gamma_size, sizeof(uint16_t) * 3, in drm_mode_crtc_set_gamma_size()
5065 if (!crtc->gamma_store) { in drm_mode_crtc_set_gamma_size()
5066 crtc->gamma_size = 0; in drm_mode_crtc_set_gamma_size()
5092 struct drm_crtc *crtc; in drm_mode_gamma_set_ioctl() local
5101 crtc = drm_crtc_find(dev, crtc_lut->crtc_id); in drm_mode_gamma_set_ioctl()
5102 if (!crtc) { in drm_mode_gamma_set_ioctl()
5107 if (crtc->funcs->gamma_set == NULL) { in drm_mode_gamma_set_ioctl()
5113 if (crtc_lut->gamma_size != crtc->gamma_size) { in drm_mode_gamma_set_ioctl()
5119 r_base = crtc->gamma_store; in drm_mode_gamma_set_ioctl()
5137 crtc->funcs->gamma_set(crtc, r_base, g_base, b_base, 0, crtc->gamma_size); in drm_mode_gamma_set_ioctl()
5164 struct drm_crtc *crtc; in drm_mode_gamma_get_ioctl() local
5173 crtc = drm_crtc_find(dev, crtc_lut->crtc_id); in drm_mode_gamma_get_ioctl()
5174 if (!crtc) { in drm_mode_gamma_get_ioctl()
5180 if (crtc_lut->gamma_size != crtc->gamma_size) { in drm_mode_gamma_get_ioctl()
5186 r_base = crtc->gamma_store; in drm_mode_gamma_get_ioctl()
5230 struct drm_crtc *crtc; in drm_mode_page_flip_ioctl() local
5243 crtc = drm_crtc_find(dev, page_flip->crtc_id); in drm_mode_page_flip_ioctl()
5244 if (!crtc) in drm_mode_page_flip_ioctl()
5247 drm_modeset_lock_crtc(crtc, crtc->primary); in drm_mode_page_flip_ioctl()
5248 if (crtc->primary->fb == NULL) { in drm_mode_page_flip_ioctl()
5257 if (crtc->funcs->page_flip == NULL) in drm_mode_page_flip_ioctl()
5266 if (crtc->state) { in drm_mode_page_flip_ioctl()
5267 const struct drm_plane_state *state = crtc->primary->state; in drm_mode_page_flip_ioctl()
5272 ret = drm_crtc_check_viewport(crtc, crtc->x, crtc->y, &crtc->mode, fb); in drm_mode_page_flip_ioctl()
5277 if (crtc->primary->fb->pixel_format != fb->pixel_format) { in drm_mode_page_flip_ioctl()
5310 crtc->primary->old_fb = crtc->primary->fb; in drm_mode_page_flip_ioctl()
5311 ret = crtc->funcs->page_flip(crtc, fb, e, page_flip->flags); in drm_mode_page_flip_ioctl()
5320 crtc->primary->old_fb = NULL; in drm_mode_page_flip_ioctl()
5322 crtc->primary->fb = fb; in drm_mode_page_flip_ioctl()
5330 if (crtc->primary->old_fb) in drm_mode_page_flip_ioctl()
5331 drm_framebuffer_unreference(crtc->primary->old_fb); in drm_mode_page_flip_ioctl()
5332 crtc->primary->old_fb = NULL; in drm_mode_page_flip_ioctl()
5333 drm_modeset_unlock_crtc(crtc); in drm_mode_page_flip_ioctl()
5348 struct drm_crtc *crtc; in drm_mode_config_reset() local
5357 drm_for_each_crtc(crtc, dev) in drm_mode_config_reset()
5358 if (crtc->funcs->reset) in drm_mode_config_reset()
5359 crtc->funcs->reset(crtc); in drm_mode_config_reset()
5788 struct drm_crtc *crtc, *ct; in drm_mode_config_cleanup() local
5833 list_for_each_entry_safe(crtc, ct, &dev->mode_config.crtc_list, head) { in drm_mode_config_cleanup()
5834 crtc->funcs->destroy(crtc); in drm_mode_config_cleanup()