Lines Matching full:vec
9 * The VEC encoder generates PAL or NTSC composite video output.
40 /* VEC Registers */
161 /* General VEC hardware state. */
178 #define VEC_READ(offset) readl(vec->regs + (offset))
179 #define VEC_WRITE(offset, val) writel(val, vec->regs + (offset))
181 /* VC4 VEC encoder KMS struct */
184 struct vc4_vec *vec; member
193 /* VC4 VEC connector KMS struct */
196 struct vc4_vec *vec; member
214 void (*mode_set)(struct vc4_vec *vec);
244 static void vc4_vec_ntsc_mode_set(struct vc4_vec *vec) in vc4_vec_ntsc_mode_set() argument
250 static void vc4_vec_ntsc_j_mode_set(struct vc4_vec *vec) in vc4_vec_ntsc_j_mode_set() argument
263 static void vc4_vec_pal_mode_set(struct vc4_vec *vec) in vc4_vec_pal_mode_set() argument
269 static void vc4_vec_pal_m_mode_set(struct vc4_vec *vec) in vc4_vec_pal_m_mode_set() argument
347 struct vc4_vec *vec) in vc4_vec_connector_init() argument
360 vec_connector->encoder = vec->encoder; in vc4_vec_connector_init()
361 vec_connector->vec = vec; in vc4_vec_connector_init()
370 vec->tv_mode = &vc4_vec_tv_modes[VC4_VEC_TV_MODE_NTSC]; in vc4_vec_connector_init()
372 drm_connector_attach_encoder(connector, vec->encoder); in vc4_vec_connector_init()
380 struct vc4_vec *vec = vc4_vec_encoder->vec; in vc4_vec_encoder_disable() local
390 clk_disable_unprepare(vec->clock); in vc4_vec_encoder_disable()
392 ret = pm_runtime_put(&vec->pdev->dev); in vc4_vec_encoder_disable()
402 struct vc4_vec *vec = vc4_vec_encoder->vec; in vc4_vec_encoder_enable() local
405 ret = pm_runtime_get_sync(&vec->pdev->dev); in vc4_vec_encoder_enable()
418 ret = clk_set_rate(vec->clock, 108000000); in vc4_vec_encoder_enable()
424 ret = clk_prepare_enable(vec->clock); in vc4_vec_encoder_enable()
453 VEC_WRITE(VEC_DAC_CONFIG, vec->variant->dac_config); in vc4_vec_encoder_enable()
458 vec->tv_mode->mode_set(vec); in vc4_vec_encoder_enable()
478 struct vc4_vec *vec = vc4_vec_encoder->vec; in vc4_vec_encoder_atomic_mode_set() local
480 vec->tv_mode = &vc4_vec_tv_modes[conn_state->tv.mode]; in vc4_vec_encoder_atomic_mode_set()
519 { .compatible = "brcm,bcm2835-vec", .data = &bcm2835_vec_variant },
520 { .compatible = "brcm,bcm2711-vec", .data = &bcm2711_vec_variant },
536 struct vc4_vec *vec; in vc4_vec_bind() local
545 vec = devm_kzalloc(dev, sizeof(*vec), GFP_KERNEL); in vc4_vec_bind()
546 if (!vec) in vc4_vec_bind()
554 vc4_vec_encoder->vec = vec; in vc4_vec_bind()
555 vec->encoder = &vc4_vec_encoder->base.base; in vc4_vec_bind()
557 vec->pdev = pdev; in vc4_vec_bind()
558 vec->variant = (const struct vc4_vec_variant *) in vc4_vec_bind()
560 vec->regs = vc4_ioremap_regs(pdev, 0); in vc4_vec_bind()
561 if (IS_ERR(vec->regs)) in vc4_vec_bind()
562 return PTR_ERR(vec->regs); in vc4_vec_bind()
563 vec->regset.base = vec->regs; in vc4_vec_bind()
564 vec->regset.regs = vec_regs; in vc4_vec_bind()
565 vec->regset.nregs = ARRAY_SIZE(vec_regs); in vc4_vec_bind()
567 vec->clock = devm_clk_get(dev, NULL); in vc4_vec_bind()
568 if (IS_ERR(vec->clock)) { in vc4_vec_bind()
569 ret = PTR_ERR(vec->clock); in vc4_vec_bind()
577 drm_simple_encoder_init(drm, vec->encoder, DRM_MODE_ENCODER_TVDAC); in vc4_vec_bind()
578 drm_encoder_helper_add(vec->encoder, &vc4_vec_encoder_helper_funcs); in vc4_vec_bind()
580 vec->connector = vc4_vec_connector_init(drm, vec); in vc4_vec_bind()
581 if (IS_ERR(vec->connector)) { in vc4_vec_bind()
582 ret = PTR_ERR(vec->connector); in vc4_vec_bind()
586 dev_set_drvdata(dev, vec); in vc4_vec_bind()
588 vc4->vec = vec; in vc4_vec_bind()
590 vc4_debugfs_add_regset32(drm, "vec_regs", &vec->regset); in vc4_vec_bind()
595 drm_encoder_cleanup(vec->encoder); in vc4_vec_bind()
606 struct vc4_vec *vec = dev_get_drvdata(dev); in vc4_vec_unbind() local
608 vc4_vec_connector_destroy(vec->connector); in vc4_vec_unbind()
609 drm_encoder_cleanup(vec->encoder); in vc4_vec_unbind()
612 vc4->vec = NULL; in vc4_vec_unbind()