Lines Matching refs:layer

97 	struct sti_layer layer;  member
106 #define to_sti_gdp(x) container_of(x, struct sti_gdp, layer)
123 static const uint32_t *sti_gdp_get_formats(struct sti_layer *layer) in sti_gdp_get_formats() argument
128 static unsigned int sti_gdp_get_nb_formats(struct sti_layer *layer) in sti_gdp_get_nb_formats() argument
185 static struct sti_gdp_node_list *sti_gdp_get_free_nodes(struct sti_layer *layer) in sti_gdp_get_free_nodes() argument
188 struct sti_gdp *gdp = to_sti_gdp(layer); in sti_gdp_get_free_nodes()
191 hw_nvn = readl(layer->regs + GAM_GDP_NVN_OFFSET); in sti_gdp_get_free_nodes()
202 sti_layer_to_str(layer), hw_nvn); in sti_gdp_get_free_nodes()
218 struct sti_gdp_node_list *sti_gdp_get_current_nodes(struct sti_layer *layer) in sti_gdp_get_current_nodes() argument
221 struct sti_gdp *gdp = to_sti_gdp(layer); in sti_gdp_get_current_nodes()
224 hw_nvn = readl(layer->regs + GAM_GDP_NVN_OFFSET); in sti_gdp_get_current_nodes()
235 hw_nvn, sti_layer_to_str(layer)); in sti_gdp_get_current_nodes()
250 static int sti_gdp_prepare_layer(struct sti_layer *layer, bool first_prepare) in sti_gdp_prepare_layer() argument
254 struct drm_display_mode *mode = layer->mode; in sti_gdp_prepare_layer()
255 struct device *dev = layer->dev; in sti_gdp_prepare_layer()
256 struct sti_gdp *gdp = to_sti_gdp(layer); in sti_gdp_prepare_layer()
264 list = sti_gdp_get_free_nodes(layer); in sti_gdp_prepare_layer()
269 sti_layer_to_str(layer), top_field, btm_field); in sti_gdp_prepare_layer()
274 format = sti_gdp_fourcc2format(layer->format); in sti_gdp_prepare_layer()
277 (char *)&layer->format); in sti_gdp_prepare_layer()
285 drm_fb_get_bpp_depth(layer->format, &depth, &bpp); in sti_gdp_prepare_layer()
286 top_field->gam_gdp_pml = (u32) layer->paddr + layer->offsets[0]; in sti_gdp_prepare_layer()
287 top_field->gam_gdp_pml += layer->src_x * (bpp >> 3); in sti_gdp_prepare_layer()
288 top_field->gam_gdp_pml += layer->src_y * layer->pitches[0]; in sti_gdp_prepare_layer()
291 top_field->gam_gdp_pmp = layer->pitches[0]; in sti_gdp_prepare_layer()
293 clamp_val(layer->src_h, 0, GAM_GDP_SIZE_MAX) << 16 | in sti_gdp_prepare_layer()
294 clamp_val(layer->src_w, 0, GAM_GDP_SIZE_MAX); in sti_gdp_prepare_layer()
297 ydo = sti_vtg_get_line_number(*mode, layer->dst_y); in sti_gdp_prepare_layer()
298 yds = sti_vtg_get_line_number(*mode, layer->dst_y + layer->dst_h - 1); in sti_gdp_prepare_layer()
299 xdo = sti_vtg_get_pixel_number(*mode, layer->dst_x); in sti_gdp_prepare_layer()
300 xds = sti_vtg_get_pixel_number(*mode, layer->dst_x + layer->dst_w - 1); in sti_gdp_prepare_layer()
310 if (layer->mode->flags & DRM_MODE_FLAG_INTERLACE) in sti_gdp_prepare_layer()
312 layer->pitches[0]; in sti_gdp_prepare_layer()
316 if (sti_vtg_register_client(layer->mixer_id == STI_MIXER_MAIN ? in sti_gdp_prepare_layer()
318 &gdp->vtg_field_nb, layer->mixer_id)) { in sti_gdp_prepare_layer()
328 if (layer->mixer_id == STI_MIXER_MAIN) in sti_gdp_prepare_layer()
368 static int sti_gdp_commit_layer(struct sti_layer *layer) in sti_gdp_commit_layer() argument
370 struct sti_gdp_node_list *updated_list = sti_gdp_get_free_nodes(layer); in sti_gdp_commit_layer()
373 struct sti_gdp *gdp = to_sti_gdp(layer); in sti_gdp_commit_layer()
376 struct sti_gdp_node_list *curr_list = sti_gdp_get_current_nodes(layer); in sti_gdp_commit_layer()
378 dev_dbg(layer->dev, "%s %s top/btm_node:0x%p/0x%p\n", __func__, in sti_gdp_commit_layer()
379 sti_layer_to_str(layer), in sti_gdp_commit_layer()
381 dev_dbg(layer->dev, "Current NVN:0x%X\n", in sti_gdp_commit_layer()
382 readl(layer->regs + GAM_GDP_NVN_OFFSET)); in sti_gdp_commit_layer()
383 dev_dbg(layer->dev, "Posted buff: %lx current buff: %x\n", in sti_gdp_commit_layer()
384 (unsigned long)layer->paddr, in sti_gdp_commit_layer()
385 readl(layer->regs + GAM_GDP_PML_OFFSET)); in sti_gdp_commit_layer()
391 sti_layer_to_str(layer)); in sti_gdp_commit_layer()
395 layer->regs + GAM_GDP_NVN_OFFSET); in sti_gdp_commit_layer()
399 if (layer->mode->flags & DRM_MODE_FLAG_INTERLACE) { in sti_gdp_commit_layer()
408 layer->regs + GAM_GDP_NVN_OFFSET); in sti_gdp_commit_layer()
412 writel(dma_updated_top, layer->regs + GAM_GDP_NVN_OFFSET); in sti_gdp_commit_layer()
427 static int sti_gdp_disable_layer(struct sti_layer *layer) in sti_gdp_disable_layer() argument
430 struct sti_gdp *gdp = to_sti_gdp(layer); in sti_gdp_disable_layer()
431 struct sti_compositor *compo = dev_get_drvdata(layer->dev); in sti_gdp_disable_layer()
433 DRM_DEBUG_DRIVER("%s\n", sti_layer_to_str(layer)); in sti_gdp_disable_layer()
441 if (sti_vtg_unregister_client(layer->mixer_id == STI_MIXER_MAIN ? in sti_gdp_disable_layer()
482 static void sti_gdp_init(struct sti_layer *layer) in sti_gdp_init() argument
484 struct sti_gdp *gdp = to_sti_gdp(layer); in sti_gdp_init()
485 struct device_node *np = layer->dev->of_node; in sti_gdp_init()
493 base = dma_alloc_writecombine(layer->dev, in sti_gdp_init()
529 switch (layer->desc) { in sti_gdp_init()
547 gdp->clk_pix = devm_clk_get(layer->dev, clk_name); in sti_gdp_init()
551 gdp->clk_main_parent = devm_clk_get(layer->dev, "main_parent"); in sti_gdp_init()
555 gdp->clk_aux_parent = devm_clk_get(layer->dev, "aux_parent"); in sti_gdp_init()
580 gdp->layer.ops = &gdp_ops; in sti_gdp_create()