Lines Matching refs:layer

342 	struct sti_layer layer;  member
356 #define to_sti_hqvdp(x) container_of(x, struct sti_hqvdp, layer)
362 static const uint32_t *sti_hqvdp_get_formats(struct sti_layer *layer) in sti_hqvdp_get_formats() argument
367 static unsigned int sti_hqvdp_get_nb_formats(struct sti_layer *layer) in sti_hqvdp_get_nb_formats() argument
501 static bool sti_hqvdp_check_hw_scaling(struct sti_layer *layer) in sti_hqvdp_check_hw_scaling() argument
503 struct sti_hqvdp *hqvdp = to_sti_hqvdp(layer); in sti_hqvdp_check_hw_scaling()
507 lfw = layer->mode->htotal * (clk_get_rate(hqvdp->clk) / 1000000); in sti_hqvdp_check_hw_scaling()
508 lfw /= max(layer->src_w, layer->dst_w) * layer->mode->clock / 1000; in sti_hqvdp_check_hw_scaling()
510 inv_zy = DIV_ROUND_UP(layer->src_h, layer->dst_h); in sti_hqvdp_check_hw_scaling()
525 static int sti_hqvdp_prepare_layer(struct sti_layer *layer, bool first_prepare) in sti_hqvdp_prepare_layer() argument
527 struct sti_hqvdp *hqvdp = to_sti_hqvdp(layer); in sti_hqvdp_prepare_layer()
532 dev_dbg(hqvdp->dev, "%s %s\n", __func__, sti_layer_to_str(layer)); in sti_hqvdp_prepare_layer()
536 layer->crtc, layer->fb, in sti_hqvdp_prepare_layer()
537 layer->dst_x, layer->dst_y, in sti_hqvdp_prepare_layer()
538 layer->dst_w, layer->dst_h, in sti_hqvdp_prepare_layer()
539 layer->src_x, layer->src_y, in sti_hqvdp_prepare_layer()
540 layer->src_w, layer->src_h); in sti_hqvdp_prepare_layer()
549 if (!sti_hqvdp_check_hw_scaling(layer)) { in sti_hqvdp_prepare_layer()
568 cmd->top.current_luma = (u32) layer->paddr + layer->offsets[0]; in sti_hqvdp_prepare_layer()
569 cmd->top.current_chroma = (u32) layer->paddr + layer->offsets[1]; in sti_hqvdp_prepare_layer()
573 layer->pitches[0]; in sti_hqvdp_prepare_layer()
575 layer->pitches[1]; in sti_hqvdp_prepare_layer()
579 layer->dst_w = ALIGN(layer->dst_w, 2); in sti_hqvdp_prepare_layer()
580 layer->dst_h = ALIGN(layer->dst_h, 2); in sti_hqvdp_prepare_layer()
582 if ((layer->src_w > MAX_WIDTH) || (layer->src_w < MIN_WIDTH) || in sti_hqvdp_prepare_layer()
583 (layer->src_h > MAX_HEIGHT) || (layer->src_h < MIN_HEIGHT) || in sti_hqvdp_prepare_layer()
584 (layer->dst_w > MAX_WIDTH) || (layer->dst_w < MIN_WIDTH) || in sti_hqvdp_prepare_layer()
585 (layer->dst_h > MAX_HEIGHT) || (layer->dst_h < MIN_HEIGHT)) { in sti_hqvdp_prepare_layer()
587 layer->src_w, layer->src_h, in sti_hqvdp_prepare_layer()
588 layer->dst_w, layer->dst_h); in sti_hqvdp_prepare_layer()
592 layer->src_h << 16 | layer->src_w; in sti_hqvdp_prepare_layer()
593 cmd->hvsrc.output_picture_size = layer->dst_h << 16 | layer->dst_w; in sti_hqvdp_prepare_layer()
594 cmd->top.input_viewport_ori = layer->src_y << 16 | layer->src_x; in sti_hqvdp_prepare_layer()
597 if (layer->fb->flags & DRM_MODE_FB_INTERLACED) { in sti_hqvdp_prepare_layer()
602 cmd->top.input_frame_size = (layer->src_h / 2) << 16 | in sti_hqvdp_prepare_layer()
603 layer->src_w; in sti_hqvdp_prepare_layer()
616 scale_h = SCALE_FACTOR * layer->dst_w / layer->src_w; in sti_hqvdp_prepare_layer()
619 scale_v = SCALE_FACTOR * layer->dst_h / layer->src_h; in sti_hqvdp_prepare_layer()
630 if ((layer->fb->flags & DRM_MODE_FB_INTERLACED) && in sti_hqvdp_prepare_layer()
632 &hqvdp->vtg_nb, layer->mixer_id)) { in sti_hqvdp_prepare_layer()
641 static int sti_hqvdp_commit_layer(struct sti_layer *layer) in sti_hqvdp_commit_layer() argument
643 struct sti_hqvdp *hqvdp = to_sti_hqvdp(layer); in sti_hqvdp_commit_layer()
646 dev_dbg(hqvdp->dev, "%s %s\n", __func__, sti_layer_to_str(layer)); in sti_hqvdp_commit_layer()
660 if (layer->fb->flags & DRM_MODE_FB_INTERLACED) in sti_hqvdp_commit_layer()
669 static int sti_hqvdp_disable_layer(struct sti_layer *layer) in sti_hqvdp_disable_layer() argument
671 struct sti_hqvdp *hqvdp = to_sti_hqvdp(layer); in sti_hqvdp_disable_layer()
674 DRM_DEBUG_DRIVER("%s\n", sti_layer_to_str(layer)); in sti_hqvdp_disable_layer()
677 if ((layer->fb->flags & DRM_MODE_FB_INTERLACED) && in sti_hqvdp_disable_layer()
766 struct sti_layer *layer = to_sti_layer(plane); in sti_hqvdp_find_vid() local
768 if (layer->desc == id) in sti_hqvdp_find_vid()
775 static void sti_hqvd_init(struct sti_layer *layer) in sti_hqvd_init() argument
777 struct sti_hqvdp *hqvdp = to_sti_hqvdp(layer); in sti_hqvd_init()
815 hqvdp->layer.ops = &hqvdp_ops; in sti_hqvdp_create()
817 return &hqvdp->layer; in sti_hqvdp_create()
958 struct sti_layer *layer; in sti_hqvdp_bind() local
974 layer = sti_layer_create(hqvdp->dev, STI_HQVDP_0, hqvdp->regs); in sti_hqvdp_bind()
975 if (!layer) { in sti_hqvdp_bind()
980 sti_drm_plane_init(drm_dev, layer, 1, DRM_PLANE_TYPE_OVERLAY); in sti_hqvdp_bind()