Lines Matching refs:state

260 				      struct atmel_hlcdc_plane_state *state)  in atmel_hlcdc_plane_update_pos_and_size()  argument
269 (state->crtc_w - 1) | in atmel_hlcdc_plane_update_pos_and_size()
270 ((state->crtc_h - 1) << 16)); in atmel_hlcdc_plane_update_pos_and_size()
276 (state->src_w - 1) | in atmel_hlcdc_plane_update_pos_and_size()
277 ((state->src_h - 1) << 16)); in atmel_hlcdc_plane_update_pos_and_size()
283 state->crtc_x | in atmel_hlcdc_plane_update_pos_and_size()
284 (state->crtc_y << 16)); in atmel_hlcdc_plane_update_pos_and_size()
287 if (state->crtc_w != state->src_w || state->crtc_h != state->src_h) { in atmel_hlcdc_plane_update_pos_and_size()
290 if (state->crtc_w != state->src_w) { in atmel_hlcdc_plane_update_pos_and_size()
296 if (state->crtc_w < state->src_w) in atmel_hlcdc_plane_update_pos_and_size()
303 factor = ((8 * 256 * state->src_w) - (256 * 4)) / in atmel_hlcdc_plane_update_pos_and_size()
304 state->crtc_w; in atmel_hlcdc_plane_update_pos_and_size()
306 max_memsize = ((factor * state->crtc_w) + (256 * 4)) / in atmel_hlcdc_plane_update_pos_and_size()
308 if (max_memsize > state->src_w) in atmel_hlcdc_plane_update_pos_and_size()
313 if (state->crtc_h != state->src_h) { in atmel_hlcdc_plane_update_pos_and_size()
319 if (state->crtc_w < state->src_w) in atmel_hlcdc_plane_update_pos_and_size()
326 factor = ((8 * 256 * state->src_w) - (256 * 4)) / in atmel_hlcdc_plane_update_pos_and_size()
327 state->crtc_w; in atmel_hlcdc_plane_update_pos_and_size()
329 max_memsize = ((factor * state->crtc_w) + (256 * 4)) / in atmel_hlcdc_plane_update_pos_and_size()
331 if (max_memsize > state->src_w) in atmel_hlcdc_plane_update_pos_and_size()
343 struct atmel_hlcdc_plane_state *state) in atmel_hlcdc_plane_update_general_settings() argument
353 if (atmel_hlcdc_format_embeds_alpha(state->base.fb->pixel_format)) in atmel_hlcdc_plane_update_general_settings()
357 ATMEL_HLCDC_LAYER_GA(state->alpha); in atmel_hlcdc_plane_update_general_settings()
376 struct atmel_hlcdc_plane_state *state) in atmel_hlcdc_plane_update_format() argument
381 ret = atmel_hlcdc_format_to_plane_mode(state->base.fb->pixel_format, in atmel_hlcdc_plane_update_format()
386 if ((state->base.fb->pixel_format == DRM_FORMAT_YUV422 || in atmel_hlcdc_plane_update_format()
387 state->base.fb->pixel_format == DRM_FORMAT_NV61) && in atmel_hlcdc_plane_update_format()
388 (state->base.rotation & (BIT(DRM_ROTATE_90) | BIT(DRM_ROTATE_270)))) in atmel_hlcdc_plane_update_format()
400 if (state->base.fb->pixel_format == DRM_FORMAT_RGB888) in atmel_hlcdc_plane_update_format()
411 struct atmel_hlcdc_plane_state *state) in atmel_hlcdc_plane_update_buffers() argument
418 atmel_hlcdc_layer_update_set_fb(&plane->layer, state->base.fb, in atmel_hlcdc_plane_update_buffers()
419 state->offsets); in atmel_hlcdc_plane_update_buffers()
421 for (i = 0; i < state->nplanes; i++) { in atmel_hlcdc_plane_update_buffers()
426 state->xstride[i]); in atmel_hlcdc_plane_update_buffers()
433 state->pstride[i]); in atmel_hlcdc_plane_update_buffers()
453 primary_s = drm_atomic_get_plane_state(c_state->state, in atmel_hlcdc_plane_prepare_disc_area()
467 ovl_s = drm_atomic_get_plane_state(c_state->state, ovl); in atmel_hlcdc_plane_prepare_disc_area()
506 struct atmel_hlcdc_plane_state *state) in atmel_hlcdc_plane_update_disc_area() argument
512 if (!state->disc_updated) in atmel_hlcdc_plane_update_disc_area()
515 disc_surface = state->disc_h * state->disc_w; in atmel_hlcdc_plane_update_disc_area()
527 state->disc_x | (state->disc_y << 16)); in atmel_hlcdc_plane_update_disc_area()
532 (state->disc_w - 1) | in atmel_hlcdc_plane_update_disc_area()
533 ((state->disc_h - 1) << 16)); in atmel_hlcdc_plane_update_disc_area()
540 struct atmel_hlcdc_plane_state *state = in atmel_hlcdc_plane_atomic_check() local
544 struct drm_framebuffer *fb = state->base.fb; in atmel_hlcdc_plane_atomic_check()
558 if (!state->base.crtc || !fb) in atmel_hlcdc_plane_atomic_check()
561 crtc_state = s->state->crtc_states[drm_crtc_index(s->crtc)]; in atmel_hlcdc_plane_atomic_check()
564 state->src_x = s->src_x; in atmel_hlcdc_plane_atomic_check()
565 state->src_y = s->src_y; in atmel_hlcdc_plane_atomic_check()
566 state->src_h = s->src_h; in atmel_hlcdc_plane_atomic_check()
567 state->src_w = s->src_w; in atmel_hlcdc_plane_atomic_check()
568 state->crtc_x = s->crtc_x; in atmel_hlcdc_plane_atomic_check()
569 state->crtc_y = s->crtc_y; in atmel_hlcdc_plane_atomic_check()
570 state->crtc_h = s->crtc_h; in atmel_hlcdc_plane_atomic_check()
571 state->crtc_w = s->crtc_w; in atmel_hlcdc_plane_atomic_check()
572 if ((state->src_x | state->src_y | state->src_w | state->src_h) & in atmel_hlcdc_plane_atomic_check()
576 state->src_x >>= 16; in atmel_hlcdc_plane_atomic_check()
577 state->src_y >>= 16; in atmel_hlcdc_plane_atomic_check()
578 state->src_w >>= 16; in atmel_hlcdc_plane_atomic_check()
579 state->src_h >>= 16; in atmel_hlcdc_plane_atomic_check()
581 state->nplanes = drm_format_num_planes(fb->pixel_format); in atmel_hlcdc_plane_atomic_check()
582 if (state->nplanes > ATMEL_HLCDC_MAX_PLANES) in atmel_hlcdc_plane_atomic_check()
588 if (state->base.rotation & (BIT(DRM_ROTATE_90) | BIT(DRM_ROTATE_270))) { in atmel_hlcdc_plane_atomic_check()
589 tmp = state->crtc_w; in atmel_hlcdc_plane_atomic_check()
590 state->crtc_w = state->crtc_h; in atmel_hlcdc_plane_atomic_check()
591 state->crtc_h = tmp; in atmel_hlcdc_plane_atomic_check()
592 tmp = state->src_w; in atmel_hlcdc_plane_atomic_check()
593 state->src_w = state->src_h; in atmel_hlcdc_plane_atomic_check()
594 state->src_h = tmp; in atmel_hlcdc_plane_atomic_check()
597 if (state->crtc_x + state->crtc_w > mode->hdisplay) in atmel_hlcdc_plane_atomic_check()
598 patched_crtc_w = mode->hdisplay - state->crtc_x; in atmel_hlcdc_plane_atomic_check()
600 patched_crtc_w = state->crtc_w; in atmel_hlcdc_plane_atomic_check()
602 if (state->crtc_x < 0) { in atmel_hlcdc_plane_atomic_check()
603 patched_crtc_w += state->crtc_x; in atmel_hlcdc_plane_atomic_check()
604 x_offset = -state->crtc_x; in atmel_hlcdc_plane_atomic_check()
605 state->crtc_x = 0; in atmel_hlcdc_plane_atomic_check()
608 if (state->crtc_y + state->crtc_h > mode->vdisplay) in atmel_hlcdc_plane_atomic_check()
609 patched_crtc_h = mode->vdisplay - state->crtc_y; in atmel_hlcdc_plane_atomic_check()
611 patched_crtc_h = state->crtc_h; in atmel_hlcdc_plane_atomic_check()
613 if (state->crtc_y < 0) { in atmel_hlcdc_plane_atomic_check()
614 patched_crtc_h += state->crtc_y; in atmel_hlcdc_plane_atomic_check()
615 y_offset = -state->crtc_y; in atmel_hlcdc_plane_atomic_check()
616 state->crtc_y = 0; in atmel_hlcdc_plane_atomic_check()
619 patched_src_w = DIV_ROUND_CLOSEST(patched_crtc_w * state->src_w, in atmel_hlcdc_plane_atomic_check()
620 state->crtc_w); in atmel_hlcdc_plane_atomic_check()
621 patched_src_h = DIV_ROUND_CLOSEST(patched_crtc_h * state->src_h, in atmel_hlcdc_plane_atomic_check()
622 state->crtc_h); in atmel_hlcdc_plane_atomic_check()
627 for (i = 0; i < state->nplanes; i++) { in atmel_hlcdc_plane_atomic_check()
632 state->bpp[i] = drm_format_plane_cpp(fb->pixel_format, i); in atmel_hlcdc_plane_atomic_check()
633 if (!state->bpp[i]) in atmel_hlcdc_plane_atomic_check()
636 switch (state->base.rotation & 0xf) { in atmel_hlcdc_plane_atomic_check()
638 offset = ((y_offset + state->src_y + patched_src_w - 1) / in atmel_hlcdc_plane_atomic_check()
640 offset += ((x_offset + state->src_x) / xdiv) * in atmel_hlcdc_plane_atomic_check()
641 state->bpp[i]; in atmel_hlcdc_plane_atomic_check()
642 state->xstride[i] = ((patched_src_w - 1) / ydiv) * in atmel_hlcdc_plane_atomic_check()
644 state->pstride[i] = -fb->pitches[i] - state->bpp[i]; in atmel_hlcdc_plane_atomic_check()
647 offset = ((y_offset + state->src_y + patched_src_h - 1) / in atmel_hlcdc_plane_atomic_check()
649 offset += ((x_offset + state->src_x + patched_src_w - 1) / in atmel_hlcdc_plane_atomic_check()
650 xdiv) * state->bpp[i]; in atmel_hlcdc_plane_atomic_check()
651 state->xstride[i] = ((((patched_src_w - 1) / xdiv) - 1) * in atmel_hlcdc_plane_atomic_check()
652 state->bpp[i]) - fb->pitches[i]; in atmel_hlcdc_plane_atomic_check()
653 state->pstride[i] = -2 * state->bpp[i]; in atmel_hlcdc_plane_atomic_check()
656 offset = ((y_offset + state->src_y) / ydiv) * in atmel_hlcdc_plane_atomic_check()
658 offset += ((x_offset + state->src_x + patched_src_h - 1) / in atmel_hlcdc_plane_atomic_check()
659 xdiv) * state->bpp[i]; in atmel_hlcdc_plane_atomic_check()
660 state->xstride[i] = -(((patched_src_w - 1) / ydiv) * in atmel_hlcdc_plane_atomic_check()
662 (2 * state->bpp[i]); in atmel_hlcdc_plane_atomic_check()
663 state->pstride[i] = fb->pitches[i] - state->bpp[i]; in atmel_hlcdc_plane_atomic_check()
667 offset = ((y_offset + state->src_y) / ydiv) * in atmel_hlcdc_plane_atomic_check()
669 offset += ((x_offset + state->src_x) / xdiv) * in atmel_hlcdc_plane_atomic_check()
670 state->bpp[i]; in atmel_hlcdc_plane_atomic_check()
671 state->xstride[i] = fb->pitches[i] - in atmel_hlcdc_plane_atomic_check()
673 state->bpp[i]); in atmel_hlcdc_plane_atomic_check()
674 state->pstride[i] = 0; in atmel_hlcdc_plane_atomic_check()
678 state->offsets[i] = offset + fb->offsets[i]; in atmel_hlcdc_plane_atomic_check()
681 state->src_w = patched_src_w; in atmel_hlcdc_plane_atomic_check()
682 state->src_h = patched_src_h; in atmel_hlcdc_plane_atomic_check()
683 state->crtc_w = patched_crtc_w; in atmel_hlcdc_plane_atomic_check()
684 state->crtc_h = patched_crtc_h; in atmel_hlcdc_plane_atomic_check()
687 (mode->hdisplay != state->crtc_w || in atmel_hlcdc_plane_atomic_check()
688 mode->vdisplay != state->crtc_h)) in atmel_hlcdc_plane_atomic_check()
692 state->crtc_h > plane->layer.desc->max_height) in atmel_hlcdc_plane_atomic_check()
696 state->crtc_w > plane->layer.desc->max_width) in atmel_hlcdc_plane_atomic_check()
699 if ((state->crtc_h != state->src_h || state->crtc_w != state->src_w) && in atmel_hlcdc_plane_atomic_check()
701 atmel_hlcdc_format_embeds_alpha(state->base.fb->pixel_format))) in atmel_hlcdc_plane_atomic_check()
704 if (state->crtc_x < 0 || state->crtc_y < 0) in atmel_hlcdc_plane_atomic_check()
707 if (state->crtc_w + state->crtc_x > mode->hdisplay || in atmel_hlcdc_plane_atomic_check()
708 state->crtc_h + state->crtc_y > mode->vdisplay) in atmel_hlcdc_plane_atomic_check()
727 struct atmel_hlcdc_plane_state *state = in atmel_hlcdc_plane_atomic_update() local
728 drm_plane_state_to_atmel_hlcdc_plane_state(p->state); in atmel_hlcdc_plane_atomic_update()
730 if (!p->state->crtc || !p->state->fb) in atmel_hlcdc_plane_atomic_update()
733 atmel_hlcdc_plane_update_pos_and_size(plane, state); in atmel_hlcdc_plane_atomic_update()
734 atmel_hlcdc_plane_update_general_settings(plane, state); in atmel_hlcdc_plane_atomic_update()
735 atmel_hlcdc_plane_update_format(plane, state); in atmel_hlcdc_plane_atomic_update()
736 atmel_hlcdc_plane_update_buffers(plane, state); in atmel_hlcdc_plane_atomic_update()
737 atmel_hlcdc_plane_update_disc_area(plane, state); in atmel_hlcdc_plane_atomic_update()
770 struct atmel_hlcdc_plane_state *state = in atmel_hlcdc_plane_atomic_set_property() local
774 state->alpha = val; in atmel_hlcdc_plane_atomic_set_property()
788 const struct atmel_hlcdc_plane_state *state = in atmel_hlcdc_plane_atomic_get_property() local
792 *val = state->alpha; in atmel_hlcdc_plane_atomic_get_property()
852 struct atmel_hlcdc_plane_state *state; in atmel_hlcdc_plane_reset() local
854 if (p->state) { in atmel_hlcdc_plane_reset()
855 state = drm_plane_state_to_atmel_hlcdc_plane_state(p->state); in atmel_hlcdc_plane_reset()
857 if (state->base.fb) in atmel_hlcdc_plane_reset()
858 drm_framebuffer_unreference(state->base.fb); in atmel_hlcdc_plane_reset()
860 kfree(state); in atmel_hlcdc_plane_reset()
861 p->state = NULL; in atmel_hlcdc_plane_reset()
864 state = kzalloc(sizeof(*state), GFP_KERNEL); in atmel_hlcdc_plane_reset()
865 if (state) { in atmel_hlcdc_plane_reset()
866 state->alpha = 255; in atmel_hlcdc_plane_reset()
867 p->state = &state->base; in atmel_hlcdc_plane_reset()
868 p->state->plane = p; in atmel_hlcdc_plane_reset()
875 struct atmel_hlcdc_plane_state *state = in atmel_hlcdc_plane_atomic_duplicate_state() local
876 drm_plane_state_to_atmel_hlcdc_plane_state(p->state); in atmel_hlcdc_plane_atomic_duplicate_state()
879 copy = kmemdup(state, sizeof(*state), GFP_KERNEL); in atmel_hlcdc_plane_atomic_duplicate_state()
894 struct atmel_hlcdc_plane_state *state = in atmel_hlcdc_plane_atomic_destroy_state() local
900 kfree(state); in atmel_hlcdc_plane_atomic_destroy_state()