Lines Matching full:layer

29 static void sun8i_ui_layer_disable(struct sun8i_layer *layer)  in sun8i_ui_layer_disable()  argument
31 u32 ch_base = sun8i_channel_base(layer); in sun8i_ui_layer_disable()
33 regmap_write(layer->regs, in sun8i_ui_layer_disable()
34 SUN8I_MIXER_CHAN_UI_LAYER_ATTR(ch_base, layer->overlay), 0); in sun8i_ui_layer_disable()
37 static void sun8i_ui_layer_update_attributes(struct sun8i_layer *layer, in sun8i_ui_layer_update_attributes() argument
44 ch_base = sun8i_channel_base(layer); in sun8i_ui_layer_update_attributes()
55 regmap_write(layer->regs, in sun8i_ui_layer_update_attributes()
56 SUN8I_MIXER_CHAN_UI_LAYER_ATTR(ch_base, layer->overlay), val); in sun8i_ui_layer_update_attributes()
59 static void sun8i_ui_layer_update_coord(struct sun8i_layer *layer, in sun8i_ui_layer_update_coord() argument
69 layer->channel, layer->overlay); in sun8i_ui_layer_update_coord()
71 ch_base = sun8i_channel_base(layer); in sun8i_ui_layer_update_coord()
85 DRM_DEBUG_DRIVER("Layer source offset X: %d Y: %d\n", in sun8i_ui_layer_update_coord()
87 DRM_DEBUG_DRIVER("Layer source size W: %d H: %d\n", src_w, src_h); in sun8i_ui_layer_update_coord()
88 regmap_write(layer->regs, in sun8i_ui_layer_update_coord()
89 SUN8I_MIXER_CHAN_UI_LAYER_SIZE(ch_base, layer->overlay), in sun8i_ui_layer_update_coord()
91 regmap_write(layer->regs, in sun8i_ui_layer_update_coord()
103 if (layer->cfg->de_type == SUN8I_MIXER_DE33) { in sun8i_ui_layer_update_coord()
104 sun8i_vi_scaler_setup(layer, src_w, src_h, dst_w, dst_h, in sun8i_ui_layer_update_coord()
107 sun8i_vi_scaler_enable(layer, true); in sun8i_ui_layer_update_coord()
109 sun8i_ui_scaler_setup(layer, src_w, src_h, dst_w, dst_h, in sun8i_ui_layer_update_coord()
111 sun8i_ui_scaler_enable(layer, true); in sun8i_ui_layer_update_coord()
115 if (layer->cfg->de_type == SUN8I_MIXER_DE33) in sun8i_ui_layer_update_coord()
116 sun8i_vi_scaler_enable(layer, false); in sun8i_ui_layer_update_coord()
118 sun8i_ui_scaler_enable(layer, false); in sun8i_ui_layer_update_coord()
122 static void sun8i_ui_layer_update_buffer(struct sun8i_layer *layer, in sun8i_ui_layer_update_buffer() argument
132 ch_base = sun8i_channel_base(layer); in sun8i_ui_layer_update_buffer()
148 DRM_DEBUG_DRIVER("Layer line width: %d bytes\n", fb->pitches[0]); in sun8i_ui_layer_update_buffer()
149 regmap_write(layer->regs, in sun8i_ui_layer_update_buffer()
150 SUN8I_MIXER_CHAN_UI_LAYER_PITCH(ch_base, layer->overlay), in sun8i_ui_layer_update_buffer()
155 regmap_write(layer->regs, in sun8i_ui_layer_update_buffer()
156 SUN8I_MIXER_CHAN_UI_LAYER_TOP_LADDR(ch_base, layer->overlay), in sun8i_ui_layer_update_buffer()
165 struct sun8i_layer *layer = plane_to_sun8i_layer(plane); in sun8i_ui_layer_atomic_check() local
189 if (layer->cfg->scaler_mask & BIT(layer->channel)) { in sun8i_ui_layer_atomic_check()
206 struct sun8i_layer *layer = plane_to_sun8i_layer(plane); in sun8i_ui_layer_atomic_update() local
209 sun8i_ui_layer_disable(layer); in sun8i_ui_layer_atomic_update()
213 sun8i_ui_layer_update_attributes(layer, plane); in sun8i_ui_layer_atomic_update()
214 sun8i_ui_layer_update_coord(layer, plane); in sun8i_ui_layer_atomic_update()
215 sun8i_ui_layer_update_buffer(layer, plane); in sun8i_ui_layer_atomic_update()
267 struct sun8i_layer *layer; in sun8i_ui_layer_init_one() local
270 layer = devm_kzalloc(drm->dev, sizeof(*layer), GFP_KERNEL); in sun8i_ui_layer_init_one()
271 if (!layer) in sun8i_ui_layer_init_one()
274 layer->type = SUN8I_LAYER_TYPE_UI; in sun8i_ui_layer_init_one()
275 layer->index = index; in sun8i_ui_layer_init_one()
276 layer->channel = phy_index; in sun8i_ui_layer_init_one()
277 layer->overlay = 0; in sun8i_ui_layer_init_one()
278 layer->regs = regs; in sun8i_ui_layer_init_one()
279 layer->cfg = cfg; in sun8i_ui_layer_init_one()
282 ret = drm_universal_plane_init(drm, &layer->plane, 0, in sun8i_ui_layer_init_one()
288 dev_err(drm->dev, "Couldn't initialize layer\n"); in sun8i_ui_layer_init_one()
292 ret = drm_plane_create_alpha_property(&layer->plane); in sun8i_ui_layer_init_one()
298 ret = drm_plane_create_zpos_property(&layer->plane, index, in sun8i_ui_layer_init_one()
305 drm_plane_helper_add(&layer->plane, &sun8i_ui_layer_helper_funcs); in sun8i_ui_layer_init_one()
307 return layer; in sun8i_ui_layer_init_one()