Lines Matching refs:hda

258 	struct sti_hda *hda;
264 static u32 hda_read(struct sti_hda *hda, int offset)
266 return readl(hda->regs + offset);
269 static void hda_write(struct sti_hda *hda, u32 val, int offset)
271 writel(val, hda->regs + offset);
297 * @hda: pointer to HD analog structure
300 static void hda_enable_hd_dacs(struct sti_hda *hda, bool enable)
302 if (hda->video_dacs_ctrl) {
305 val = readl(hda->video_dacs_ctrl);
311 writel(val, hda->video_dacs_ctrl);
316 readl(hda->regs + reg))
348 struct sti_hda *hda = (struct sti_hda *)node->info_ent->data;
350 seq_printf(s, "HD Analog: (vaddr = 0x%p)", hda->regs);
352 hda_dbg_cfg(s, readl(hda->regs + HDA_ANA_CFG));
359 hda_dbg_awg_microcode(s, hda->regs + HDA_SYNC_AWGI);
360 if (hda->video_dacs_ctrl)
361 hda_dbg_video_dacs_ctrl(s, hda->video_dacs_ctrl);
367 { "hda", hda_dbg_show, 0, NULL },
370 static void hda_debugfs_init(struct sti_hda *hda, struct drm_minor *minor)
375 hda_debugfs_files[i].data = hda;
385 * @hda: pointer to HD analog structure
389 static void sti_hda_configure_awg(struct sti_hda *hda, u32 *awg_instr, int nb)
396 hda_write(hda, awg_instr[i], HDA_SYNC_AWGI + i * 4);
398 hda_write(hda, 0, HDA_SYNC_AWGI + i * 4);
403 struct sti_hda *hda = bridge->driver_private;
406 if (!hda->enabled)
412 val = hda_read(hda, HDA_ANA_CFG);
414 hda_write(hda, val, HDA_ANA_CFG);
415 hda_write(hda, 0, HDA_ANA_ANC_CTRL);
417 hda_enable_hd_dacs(hda, false);
419 /* Disable/unprepare hda clock */
420 clk_disable_unprepare(hda->clk_hddac);
421 clk_disable_unprepare(hda->clk_pix);
423 hda->enabled = false;
428 struct sti_hda *hda = bridge->driver_private;
436 if (hda->enabled)
440 if (clk_prepare_enable(hda->clk_pix))
442 if (clk_prepare_enable(hda->clk_hddac))
445 if (!hda_get_mode_idx(hda->mode, &mode_idx)) {
480 hda_enable_hd_dacs(hda, true);
483 hda_write(hda, SCALE_CTRL_Y_DFLT, HDA_ANA_SCALE_CTRL_Y);
484 hda_write(hda, SCALE_CTRL_CB_DFLT, HDA_ANA_SCALE_CTRL_CB);
485 hda_write(hda, SCALE_CTRL_CR_DFLT, HDA_ANA_SCALE_CTRL_CR);
488 hda_write(hda , src_filter_y, HDA_ANA_SRC_Y_CFG);
489 hda_write(hda, src_filter_c, HDA_ANA_SRC_C_CFG);
491 hda_write(hda, coef_y[i], HDA_COEFF_Y_PH1_TAP123 + i * 4);
492 hda_write(hda, coef_c[i], HDA_COEFF_C_PH1_TAP123 + i * 4);
497 val |= (hda->mode.flags & DRM_MODE_FLAG_INTERLACE) ?
501 hda_write(hda, val, HDA_ANA_CFG);
504 sti_hda_configure_awg(hda, hda_supported_modes[mode_idx].awg_instr,
508 val = hda_read(hda, HDA_ANA_CFG);
510 hda_write(hda, val, HDA_ANA_CFG);
512 hda->enabled = true;
519 struct sti_hda *hda = bridge->driver_private;
526 drm_mode_copy(&hda->mode, mode);
528 if (!hda_get_mode_idx(hda->mode, &mode_idx)) {
548 ret = clk_set_rate(hda->clk_hddac, hddac_rate);
554 ret = clk_set_rate(hda->clk_pix, mode->clock * 1000);
579 struct sti_hda *hda = hda_connector->hda;
585 drm_mode_duplicate(hda->drm_dev,
614 struct sti_hda *hda = hda_connector->hda;
619 result = clk_round_rate(hda->clk_pix, target);
625 DRM_DEBUG_DRIVER("hda pixclk=%d not supported\n",
644 struct sti_hda *hda = hda_connector->hda;
646 hda_debugfs_init(hda, hda->drm_dev->primary);
674 struct sti_hda *hda = dev_get_drvdata(dev);
683 hda->drm_dev = drm_dev;
693 connector->hda = hda;
699 bridge->driver_private = hda;
721 hda_enable_hd_dacs(hda, false);
742 struct sti_hda *hda;
747 hda = devm_kzalloc(dev, sizeof(*hda), GFP_KERNEL);
748 if (!hda)
751 hda->dev = pdev->dev;
754 res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "hda-reg");
756 DRM_ERROR("Invalid hda resource\n");
759 hda->regs = devm_ioremap(dev, res->start, resource_size(res));
760 if (!hda->regs)
766 hda->video_dacs_ctrl = devm_ioremap(dev, res->start,
768 if (!hda->video_dacs_ctrl)
773 hda->video_dacs_ctrl = NULL;
777 hda->clk_pix = devm_clk_get(dev, "pix");
778 if (IS_ERR(hda->clk_pix)) {
780 return PTR_ERR(hda->clk_pix);
783 hda->clk_hddac = devm_clk_get(dev, "hddac");
784 if (IS_ERR(hda->clk_hddac)) {
786 return PTR_ERR(hda->clk_hddac);
789 platform_set_drvdata(pdev, hda);
801 { .compatible = "st,stih416-hda", },
802 { .compatible = "st,stih407-hda", },
809 .name = "sti-hda",