Lines Matching refs:hda

259 	struct sti_hda *hda;
265 static u32 hda_read(struct sti_hda *hda, int offset)
267 return readl(hda->regs + offset);
270 static void hda_write(struct sti_hda *hda, u32 val, int offset)
272 writel(val, hda->regs + offset);
298 * @hda: pointer to HD analog structure
301 static void hda_enable_hd_dacs(struct sti_hda *hda, bool enable)
303 if (hda->video_dacs_ctrl) {
306 val = readl(hda->video_dacs_ctrl);
312 writel(val, hda->video_dacs_ctrl);
317 readl(hda->regs + reg))
349 struct sti_hda *hda = (struct sti_hda *)node->info_ent->data;
351 seq_printf(s, "HD Analog: (vaddr = 0x%p)", hda->regs);
353 hda_dbg_cfg(s, readl(hda->regs + HDA_ANA_CFG));
360 hda_dbg_awg_microcode(s, hda->regs + HDA_SYNC_AWGI);
361 if (hda->video_dacs_ctrl)
362 hda_dbg_video_dacs_ctrl(s, hda->video_dacs_ctrl);
368 { "hda", hda_dbg_show, 0, NULL },
371 static void hda_debugfs_init(struct sti_hda *hda, struct drm_minor *minor)
376 hda_debugfs_files[i].data = hda;
386 * @hda: pointer to HD analog structure
390 static void sti_hda_configure_awg(struct sti_hda *hda, u32 *awg_instr, int nb)
397 hda_write(hda, awg_instr[i], HDA_SYNC_AWGI + i * 4);
399 hda_write(hda, 0, HDA_SYNC_AWGI + i * 4);
404 struct sti_hda *hda = bridge->driver_private;
407 if (!hda->enabled)
413 val = hda_read(hda, HDA_ANA_CFG);
415 hda_write(hda, val, HDA_ANA_CFG);
416 hda_write(hda, 0, HDA_ANA_ANC_CTRL);
418 hda_enable_hd_dacs(hda, false);
420 /* Disable/unprepare hda clock */
421 clk_disable_unprepare(hda->clk_hddac);
422 clk_disable_unprepare(hda->clk_pix);
424 hda->enabled = false;
429 struct sti_hda *hda = bridge->driver_private;
437 if (hda->enabled)
441 if (clk_prepare_enable(hda->clk_pix))
443 if (clk_prepare_enable(hda->clk_hddac))
446 if (!hda_get_mode_idx(hda->mode, &mode_idx)) {
481 hda_enable_hd_dacs(hda, true);
484 hda_write(hda, SCALE_CTRL_Y_DFLT, HDA_ANA_SCALE_CTRL_Y);
485 hda_write(hda, SCALE_CTRL_CB_DFLT, HDA_ANA_SCALE_CTRL_CB);
486 hda_write(hda, SCALE_CTRL_CR_DFLT, HDA_ANA_SCALE_CTRL_CR);
489 hda_write(hda , src_filter_y, HDA_ANA_SRC_Y_CFG);
490 hda_write(hda, src_filter_c, HDA_ANA_SRC_C_CFG);
492 hda_write(hda, coef_y[i], HDA_COEFF_Y_PH1_TAP123 + i * 4);
493 hda_write(hda, coef_c[i], HDA_COEFF_C_PH1_TAP123 + i * 4);
498 val |= (hda->mode.flags & DRM_MODE_FLAG_INTERLACE) ?
502 hda_write(hda, val, HDA_ANA_CFG);
505 sti_hda_configure_awg(hda, hda_supported_modes[mode_idx].awg_instr,
509 val = hda_read(hda, HDA_ANA_CFG);
511 hda_write(hda, val, HDA_ANA_CFG);
513 hda->enabled = true;
520 struct sti_hda *hda = bridge->driver_private;
527 drm_mode_copy(&hda->mode, mode);
529 if (!hda_get_mode_idx(hda->mode, &mode_idx)) {
549 ret = clk_set_rate(hda->clk_hddac, hddac_rate);
555 ret = clk_set_rate(hda->clk_pix, mode->clock * 1000);
580 struct sti_hda *hda = hda_connector->hda;
586 drm_mode_duplicate(hda->drm_dev,
615 struct sti_hda *hda = hda_connector->hda;
620 result = clk_round_rate(hda->clk_pix, target);
626 DRM_DEBUG_DRIVER("hda pixclk=%d not supported\n",
645 struct sti_hda *hda = hda_connector->hda;
647 hda_debugfs_init(hda, hda->drm_dev->primary);
675 struct sti_hda *hda = dev_get_drvdata(dev);
684 hda->drm_dev = drm_dev;
694 connector->hda = hda;
700 bridge->driver_private = hda;
722 hda_enable_hd_dacs(hda, false);
743 struct sti_hda *hda;
748 hda = devm_kzalloc(dev, sizeof(*hda), GFP_KERNEL);
749 if (!hda)
752 hda->dev = pdev->dev;
755 res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "hda-reg");
757 DRM_ERROR("Invalid hda resource\n");
760 hda->regs = devm_ioremap(dev, res->start, resource_size(res));
761 if (!hda->regs)
767 hda->video_dacs_ctrl = devm_ioremap(dev, res->start,
769 if (!hda->video_dacs_ctrl)
774 hda->video_dacs_ctrl = NULL;
778 hda->clk_pix = devm_clk_get(dev, "pix");
779 if (IS_ERR(hda->clk_pix)) {
781 return PTR_ERR(hda->clk_pix);
784 hda->clk_hddac = devm_clk_get(dev, "hddac");
785 if (IS_ERR(hda->clk_hddac)) {
787 return PTR_ERR(hda->clk_hddac);
790 platform_set_drvdata(pdev, hda);
801 { .compatible = "st,stih416-hda", },
802 { .compatible = "st,stih407-hda", },
809 .name = "sti-hda",