Lines Matching defs:tve
106 struct imx_tve *tve;
126 return container_of(c, struct imx_tve_encoder, connector)->tve;
131 return container_of(e, struct imx_tve_encoder, encoder)->tve;
134 static void tve_enable(struct imx_tve *tve)
136 clk_prepare_enable(tve->clk);
137 regmap_update_bits(tve->regmap, TVE_COM_CONF_REG, TVE_EN, TVE_EN);
140 regmap_write(tve->regmap, TVE_STAT_REG, 0xffffffff);
143 if (tve->mode == TVE_MODE_VGA)
144 regmap_write(tve->regmap, TVE_INT_CONT_REG, 0);
146 regmap_write(tve->regmap, TVE_INT_CONT_REG,
152 static void tve_disable(struct imx_tve *tve)
154 regmap_update_bits(tve->regmap, TVE_COM_CONF_REG, TVE_EN, 0);
155 clk_disable_unprepare(tve->clk);
158 static int tve_setup_tvout(struct imx_tve *tve)
163 static int tve_setup_vga(struct imx_tve *tve)
170 ret = regmap_update_bits(tve->regmap, TVE_TVDAC0_CONT_REG,
175 ret = regmap_update_bits(tve->regmap, TVE_TVDAC1_CONT_REG,
180 ret = regmap_update_bits(tve->regmap, TVE_TVDAC2_CONT_REG,
192 ret = regmap_update_bits(tve->regmap, TVE_COM_CONF_REG, mask, val);
197 return regmap_update_bits(tve->regmap, TVE_TST_MODE_REG,
203 struct imx_tve *tve = con_to_tve(connector);
207 if (!tve->ddc)
210 edid = drm_get_edid(connector, tve->ddc);
224 struct imx_tve *tve = con_to_tve(connector);
228 rate = clk_round_rate(tve->clk, 2000UL * mode->clock) / 2000;
233 rate = clk_round_rate(tve->clk, 1000UL * mode->clock) / 1000;
237 dev_warn(tve->dev, "ignoring mode %dx%d\n",
247 struct imx_tve *tve = enc_to_tve(encoder);
259 clk_set_rate(tve->clk, rate);
260 rounded_rate = clk_get_rate(tve->clk);
263 clk_set_rate(tve->di_clk, rounded_rate / div);
265 ret = clk_set_parent(tve->di_sel_clk, tve->di_clk);
267 dev_err(tve->dev, "failed to set di_sel parent to tve_di: %d\n",
271 regmap_update_bits(tve->regmap, TVE_COM_CONF_REG,
274 if (tve->mode == TVE_MODE_VGA)
275 ret = tve_setup_vga(tve);
277 ret = tve_setup_tvout(tve);
279 dev_err(tve->dev, "failed to set configuration: %d\n", ret);
284 struct imx_tve *tve = enc_to_tve(encoder);
286 tve_enable(tve);
291 struct imx_tve *tve = enc_to_tve(encoder);
293 tve_disable(tve);
301 struct imx_tve *tve = enc_to_tve(encoder);
304 imx_crtc_state->di_hsync_pin = tve->di_hsync_pin;
305 imx_crtc_state->di_vsync_pin = tve->di_vsync_pin;
332 struct imx_tve *tve = data;
335 regmap_read(tve->regmap, TVE_STAT_REG, &val);
338 regmap_write(tve->regmap, TVE_STAT_REG, 0xffffffff);
346 struct imx_tve *tve = container_of(hw, struct imx_tve, clk_hw_di);
350 ret = regmap_read(tve->regmap, TVE_COM_CONF_REG, &val);
383 struct imx_tve *tve = container_of(hw, struct imx_tve, clk_hw_di);
396 ret = regmap_update_bits(tve->regmap, TVE_COM_CONF_REG,
400 dev_err(tve->dev, "failed to set divider: %d\n", ret);
413 static int tve_clk_init(struct imx_tve *tve, void __iomem *base)
423 tve_di_parent[0] = __clk_get_name(tve->clk);
426 tve->clk_hw_di.init = &init;
427 tve->di_clk = devm_clk_register(tve->dev, &tve->clk_hw_di);
428 if (IS_ERR(tve->di_clk)) {
429 dev_err(tve->dev, "failed to register TVE output clock: %ld\n",
430 PTR_ERR(tve->di_clk));
431 return PTR_ERR(tve->di_clk);
439 struct imx_tve *tve = data;
441 regulator_disable(tve->dac_reg);
471 ret = of_property_read_string(np, "fsl,tve-mode", &bm);
485 struct imx_tve *tve = dev_get_drvdata(dev);
492 encoder_type = tve->mode == TVE_MODE_VGA ?
500 tvee->tve = tve;
504 ret = imx_drm_encoder_parse_of(drm, encoder, tve->dev->of_node);
513 DRM_MODE_CONNECTOR_VGA, tve->ddc);
529 struct imx_tve *tve;
535 tve = devm_kzalloc(dev, sizeof(*tve), GFP_KERNEL);
536 if (!tve)
539 tve->dev = dev;
543 tve->ddc = of_find_i2c_adapter_by_node(ddc_node);
547 tve->mode = of_get_tve_mode(np);
548 if (tve->mode != TVE_MODE_VGA) {
553 if (tve->mode == TVE_MODE_VGA) {
555 &tve->di_hsync_pin);
563 &tve->di_vsync_pin);
575 tve_regmap_config.lock_arg = tve;
576 tve->regmap = devm_regmap_init_mmio_clk(dev, "tve", base,
578 if (IS_ERR(tve->regmap)) {
580 PTR_ERR(tve->regmap));
581 return PTR_ERR(tve->regmap);
590 "imx-tve", tve);
596 tve->dac_reg = devm_regulator_get(dev, "dac");
597 if (!IS_ERR(tve->dac_reg)) {
598 if (regulator_get_voltage(tve->dac_reg) != IMX_TVE_DAC_VOLTAGE)
600 ret = regulator_enable(tve->dac_reg);
603 ret = devm_add_action_or_reset(dev, imx_tve_disable_regulator, tve);
608 tve->clk = devm_clk_get(dev, "tve");
609 if (IS_ERR(tve->clk)) {
610 dev_err(dev, "failed to get high speed tve clock: %ld\n",
611 PTR_ERR(tve->clk));
612 return PTR_ERR(tve->clk);
616 tve->di_sel_clk = devm_clk_get(dev, "di_sel");
617 if (IS_ERR(tve->di_sel_clk)) {
619 PTR_ERR(tve->di_sel_clk));
620 return PTR_ERR(tve->di_sel_clk);
623 ret = tve_clk_init(tve, base);
627 ret = regmap_read(tve->regmap, TVE_COM_CONF_REG, &val);
639 ret = regmap_write(tve->regmap, TVE_CD_CONT_REG, 0);
643 platform_set_drvdata(pdev, tve);
655 { .compatible = "fsl,imx53-tve", },
665 .name = "imx-tve",
674 MODULE_ALIAS("platform:imx-tve");