Lines Matching refs:hdmi
60 struct regulator *hdmi; member
103 static inline u32 tegra_hdmi_readl(struct tegra_hdmi *hdmi, in tegra_hdmi_readl() argument
106 u32 value = readl(hdmi->regs + (offset << 2)); in tegra_hdmi_readl()
108 trace_hdmi_readl(hdmi->dev, offset, value); in tegra_hdmi_readl()
113 static inline void tegra_hdmi_writel(struct tegra_hdmi *hdmi, u32 value, in tegra_hdmi_writel() argument
116 trace_hdmi_writel(hdmi->dev, offset, value); in tegra_hdmi_writel()
117 writel(value, hdmi->regs + (offset << 2)); in tegra_hdmi_writel()
412 static void tegra_hdmi_setup_audio_fs_tables(struct tegra_hdmi *hdmi) in tegra_hdmi_setup_audio_fs_tables() argument
435 tegra_hdmi_writel(hdmi, value, HDMI_NV_PDISP_AUDIO_FS(i)); in tegra_hdmi_setup_audio_fs_tables()
439 static void tegra_hdmi_write_aval(struct tegra_hdmi *hdmi, u32 value) in tegra_hdmi_write_aval() argument
456 if (regs[i].sample_rate == hdmi->format.sample_rate) { in tegra_hdmi_write_aval()
457 tegra_hdmi_writel(hdmi, value, regs[i].offset); in tegra_hdmi_write_aval()
463 static int tegra_hdmi_setup_audio(struct tegra_hdmi *hdmi) in tegra_hdmi_setup_audio() argument
469 switch (hdmi->audio_source) { in tegra_hdmi_setup_audio()
471 if (hdmi->config->has_hda) in tegra_hdmi_setup_audio()
479 if (hdmi->config->has_hda) in tegra_hdmi_setup_audio()
486 if (hdmi->config->has_hda) in tegra_hdmi_setup_audio()
500 if (hdmi->config->has_hda) { in tegra_hdmi_setup_audio()
511 if (hdmi->format.channels == 2) in tegra_hdmi_setup_audio()
518 tegra_hdmi_writel(hdmi, value, HDMI_NV_PDISP_SOR_AUDIO_CNTRL0); in tegra_hdmi_setup_audio()
528 if (!hdmi->config->has_hda) in tegra_hdmi_setup_audio()
531 tegra_hdmi_writel(hdmi, value, HDMI_NV_PDISP_AUDIO_CNTRL0); in tegra_hdmi_setup_audio()
536 if (hdmi->config->has_hbr) { in tegra_hdmi_setup_audio()
537 value = tegra_hdmi_readl(hdmi, HDMI_NV_PDISP_SOR_AUDIO_SPARE0); in tegra_hdmi_setup_audio()
539 tegra_hdmi_writel(hdmi, value, HDMI_NV_PDISP_SOR_AUDIO_SPARE0); in tegra_hdmi_setup_audio()
542 err = tegra_hdmi_get_audio_config(hdmi->format.sample_rate, in tegra_hdmi_setup_audio()
543 hdmi->pixel_clock, &config); in tegra_hdmi_setup_audio()
545 dev_err(hdmi->dev, in tegra_hdmi_setup_audio()
547 hdmi->format.sample_rate, hdmi->pixel_clock); in tegra_hdmi_setup_audio()
551 dev_dbg(hdmi->dev, "audio: pixclk=%u, n=%u, cts=%u, aval=%u\n", in tegra_hdmi_setup_audio()
552 hdmi->pixel_clock, config.n, config.cts, config.aval); in tegra_hdmi_setup_audio()
554 tegra_hdmi_writel(hdmi, 0, HDMI_NV_PDISP_HDMI_ACR_CTRL); in tegra_hdmi_setup_audio()
558 tegra_hdmi_writel(hdmi, value, HDMI_NV_PDISP_AUDIO_N); in tegra_hdmi_setup_audio()
560 tegra_hdmi_writel(hdmi, ACR_SUBPACK_N(config.n) | ACR_ENABLE, in tegra_hdmi_setup_audio()
563 tegra_hdmi_writel(hdmi, ACR_SUBPACK_CTS(config.cts), in tegra_hdmi_setup_audio()
567 tegra_hdmi_writel(hdmi, value, HDMI_NV_PDISP_HDMI_SPARE); in tegra_hdmi_setup_audio()
569 value = tegra_hdmi_readl(hdmi, HDMI_NV_PDISP_AUDIO_N); in tegra_hdmi_setup_audio()
571 tegra_hdmi_writel(hdmi, value, HDMI_NV_PDISP_AUDIO_N); in tegra_hdmi_setup_audio()
573 if (hdmi->config->has_hda) in tegra_hdmi_setup_audio()
574 tegra_hdmi_write_aval(hdmi, config.aval); in tegra_hdmi_setup_audio()
576 tegra_hdmi_setup_audio_fs_tables(hdmi); in tegra_hdmi_setup_audio()
581 static void tegra_hdmi_disable_audio(struct tegra_hdmi *hdmi) in tegra_hdmi_disable_audio() argument
585 value = tegra_hdmi_readl(hdmi, HDMI_NV_PDISP_HDMI_GENERIC_CTRL); in tegra_hdmi_disable_audio()
587 tegra_hdmi_writel(hdmi, value, HDMI_NV_PDISP_HDMI_GENERIC_CTRL); in tegra_hdmi_disable_audio()
590 static void tegra_hdmi_enable_audio(struct tegra_hdmi *hdmi) in tegra_hdmi_enable_audio() argument
594 value = tegra_hdmi_readl(hdmi, HDMI_NV_PDISP_HDMI_GENERIC_CTRL); in tegra_hdmi_enable_audio()
596 tegra_hdmi_writel(hdmi, value, HDMI_NV_PDISP_HDMI_GENERIC_CTRL); in tegra_hdmi_enable_audio()
599 static void tegra_hdmi_write_eld(struct tegra_hdmi *hdmi) in tegra_hdmi_write_eld() argument
601 size_t length = drm_eld_size(hdmi->output.connector.eld), i; in tegra_hdmi_write_eld()
605 tegra_hdmi_writel(hdmi, i << 8 | hdmi->output.connector.eld[i], in tegra_hdmi_write_eld()
615 tegra_hdmi_writel(hdmi, i << 8 | 0, in tegra_hdmi_write_eld()
619 tegra_hdmi_writel(hdmi, value, HDMI_NV_PDISP_SOR_AUDIO_HDA_PRESENSE); in tegra_hdmi_write_eld()
633 static void tegra_hdmi_write_infopack(struct tegra_hdmi *hdmi, const void *data, in tegra_hdmi_write_infopack() argument
655 dev_err(hdmi->dev, "unsupported infoframe type: %02x\n", in tegra_hdmi_write_infopack()
663 tegra_hdmi_writel(hdmi, value, offset); in tegra_hdmi_write_infopack()
675 tegra_hdmi_writel(hdmi, value, offset++); in tegra_hdmi_write_infopack()
680 tegra_hdmi_writel(hdmi, value, offset++); in tegra_hdmi_write_infopack()
684 static void tegra_hdmi_setup_avi_infoframe(struct tegra_hdmi *hdmi, in tegra_hdmi_setup_avi_infoframe() argument
692 &hdmi->output.connector, mode); in tegra_hdmi_setup_avi_infoframe()
694 dev_err(hdmi->dev, "failed to setup AVI infoframe: %zd\n", err); in tegra_hdmi_setup_avi_infoframe()
700 dev_err(hdmi->dev, "failed to pack AVI infoframe: %zd\n", err); in tegra_hdmi_setup_avi_infoframe()
704 tegra_hdmi_write_infopack(hdmi, buffer, err); in tegra_hdmi_setup_avi_infoframe()
707 static void tegra_hdmi_disable_avi_infoframe(struct tegra_hdmi *hdmi) in tegra_hdmi_disable_avi_infoframe() argument
711 value = tegra_hdmi_readl(hdmi, HDMI_NV_PDISP_HDMI_AVI_INFOFRAME_CTRL); in tegra_hdmi_disable_avi_infoframe()
713 tegra_hdmi_writel(hdmi, value, HDMI_NV_PDISP_HDMI_AVI_INFOFRAME_CTRL); in tegra_hdmi_disable_avi_infoframe()
716 static void tegra_hdmi_enable_avi_infoframe(struct tegra_hdmi *hdmi) in tegra_hdmi_enable_avi_infoframe() argument
720 value = tegra_hdmi_readl(hdmi, HDMI_NV_PDISP_HDMI_AVI_INFOFRAME_CTRL); in tegra_hdmi_enable_avi_infoframe()
722 tegra_hdmi_writel(hdmi, value, HDMI_NV_PDISP_HDMI_AVI_INFOFRAME_CTRL); in tegra_hdmi_enable_avi_infoframe()
725 static void tegra_hdmi_setup_audio_infoframe(struct tegra_hdmi *hdmi) in tegra_hdmi_setup_audio_infoframe() argument
733 dev_err(hdmi->dev, "failed to setup audio infoframe: %zd\n", in tegra_hdmi_setup_audio_infoframe()
738 frame.channels = hdmi->format.channels; in tegra_hdmi_setup_audio_infoframe()
742 dev_err(hdmi->dev, "failed to pack audio infoframe: %zd\n", in tegra_hdmi_setup_audio_infoframe()
753 tegra_hdmi_write_infopack(hdmi, buffer, min_t(size_t, 10, err)); in tegra_hdmi_setup_audio_infoframe()
756 static void tegra_hdmi_disable_audio_infoframe(struct tegra_hdmi *hdmi) in tegra_hdmi_disable_audio_infoframe() argument
760 value = tegra_hdmi_readl(hdmi, HDMI_NV_PDISP_HDMI_AUDIO_INFOFRAME_CTRL); in tegra_hdmi_disable_audio_infoframe()
762 tegra_hdmi_writel(hdmi, value, HDMI_NV_PDISP_HDMI_AUDIO_INFOFRAME_CTRL); in tegra_hdmi_disable_audio_infoframe()
765 static void tegra_hdmi_enable_audio_infoframe(struct tegra_hdmi *hdmi) in tegra_hdmi_enable_audio_infoframe() argument
769 value = tegra_hdmi_readl(hdmi, HDMI_NV_PDISP_HDMI_AUDIO_INFOFRAME_CTRL); in tegra_hdmi_enable_audio_infoframe()
771 tegra_hdmi_writel(hdmi, value, HDMI_NV_PDISP_HDMI_AUDIO_INFOFRAME_CTRL); in tegra_hdmi_enable_audio_infoframe()
774 static void tegra_hdmi_setup_stereo_infoframe(struct tegra_hdmi *hdmi) in tegra_hdmi_setup_stereo_infoframe() argument
785 dev_err(hdmi->dev, "failed to pack vendor infoframe: %zd\n", in tegra_hdmi_setup_stereo_infoframe()
790 tegra_hdmi_write_infopack(hdmi, buffer, err); in tegra_hdmi_setup_stereo_infoframe()
793 static void tegra_hdmi_disable_stereo_infoframe(struct tegra_hdmi *hdmi) in tegra_hdmi_disable_stereo_infoframe() argument
797 value = tegra_hdmi_readl(hdmi, HDMI_NV_PDISP_HDMI_GENERIC_CTRL); in tegra_hdmi_disable_stereo_infoframe()
799 tegra_hdmi_writel(hdmi, value, HDMI_NV_PDISP_HDMI_GENERIC_CTRL); in tegra_hdmi_disable_stereo_infoframe()
802 static void tegra_hdmi_enable_stereo_infoframe(struct tegra_hdmi *hdmi) in tegra_hdmi_enable_stereo_infoframe() argument
806 value = tegra_hdmi_readl(hdmi, HDMI_NV_PDISP_HDMI_GENERIC_CTRL); in tegra_hdmi_enable_stereo_infoframe()
808 tegra_hdmi_writel(hdmi, value, HDMI_NV_PDISP_HDMI_GENERIC_CTRL); in tegra_hdmi_enable_stereo_infoframe()
811 static void tegra_hdmi_setup_tmds(struct tegra_hdmi *hdmi, in tegra_hdmi_setup_tmds() argument
816 tegra_hdmi_writel(hdmi, tmds->pll0, HDMI_NV_PDISP_SOR_PLL0); in tegra_hdmi_setup_tmds()
817 tegra_hdmi_writel(hdmi, tmds->pll1, HDMI_NV_PDISP_SOR_PLL1); in tegra_hdmi_setup_tmds()
818 tegra_hdmi_writel(hdmi, tmds->pe_current, HDMI_NV_PDISP_PE_CURRENT); in tegra_hdmi_setup_tmds()
820 tegra_hdmi_writel(hdmi, tmds->drive_current, in tegra_hdmi_setup_tmds()
823 value = tegra_hdmi_readl(hdmi, hdmi->config->fuse_override_offset); in tegra_hdmi_setup_tmds()
824 value |= hdmi->config->fuse_override_value; in tegra_hdmi_setup_tmds()
825 tegra_hdmi_writel(hdmi, value, hdmi->config->fuse_override_offset); in tegra_hdmi_setup_tmds()
827 if (hdmi->config->has_sor_io_peak_current) in tegra_hdmi_setup_tmds()
828 tegra_hdmi_writel(hdmi, tmds->peak_current, in tegra_hdmi_setup_tmds()
848 struct tegra_hdmi *hdmi = to_hdmi(output); in tegra_hdmi_connector_detect() local
855 tegra_hdmi_writel(hdmi, 0, HDMI_NV_PDISP_SOR_AUDIO_HDA_PRESENSE); in tegra_hdmi_connector_detect()
1031 struct tegra_hdmi *hdmi = node->info_ent->data; in tegra_hdmi_show_regs() local
1032 struct drm_crtc *crtc = hdmi->output.encoder.crtc; in tegra_hdmi_show_regs()
1048 offset, tegra_hdmi_readl(hdmi, offset)); in tegra_hdmi_show_regs()
1066 struct tegra_hdmi *hdmi = to_hdmi(output); in tegra_hdmi_late_register() local
1069 hdmi->debugfs_files = kmemdup(debugfs_files, sizeof(debugfs_files), in tegra_hdmi_late_register()
1071 if (!hdmi->debugfs_files) in tegra_hdmi_late_register()
1075 hdmi->debugfs_files[i].data = hdmi; in tegra_hdmi_late_register()
1077 err = drm_debugfs_create_files(hdmi->debugfs_files, count, root, minor); in tegra_hdmi_late_register()
1084 kfree(hdmi->debugfs_files); in tegra_hdmi_late_register()
1085 hdmi->debugfs_files = NULL; in tegra_hdmi_late_register()
1095 struct tegra_hdmi *hdmi = to_hdmi(output); in tegra_hdmi_early_unregister() local
1097 drm_debugfs_remove_files(hdmi->debugfs_files, count, minor); in tegra_hdmi_early_unregister()
1098 kfree(hdmi->debugfs_files); in tegra_hdmi_early_unregister()
1099 hdmi->debugfs_files = NULL; in tegra_hdmi_early_unregister()
1118 struct tegra_hdmi *hdmi = to_hdmi(output); in tegra_hdmi_connector_mode_valid() local
1124 parent = clk_get_parent(hdmi->clk_parent); in tegra_hdmi_connector_mode_valid()
1147 struct tegra_hdmi *hdmi = to_hdmi(output); in tegra_hdmi_encoder_disable() local
1162 if (!hdmi->dvi) { in tegra_hdmi_encoder_disable()
1163 if (hdmi->stereo) in tegra_hdmi_encoder_disable()
1164 tegra_hdmi_disable_stereo_infoframe(hdmi); in tegra_hdmi_encoder_disable()
1166 tegra_hdmi_disable_audio_infoframe(hdmi); in tegra_hdmi_encoder_disable()
1167 tegra_hdmi_disable_avi_infoframe(hdmi); in tegra_hdmi_encoder_disable()
1168 tegra_hdmi_disable_audio(hdmi); in tegra_hdmi_encoder_disable()
1171 tegra_hdmi_writel(hdmi, 0, HDMI_NV_PDISP_INT_ENABLE); in tegra_hdmi_encoder_disable()
1172 tegra_hdmi_writel(hdmi, 0, HDMI_NV_PDISP_INT_MASK); in tegra_hdmi_encoder_disable()
1174 pm_runtime_put(hdmi->dev); in tegra_hdmi_encoder_disable()
1183 struct tegra_hdmi *hdmi = to_hdmi(output); in tegra_hdmi_encoder_enable() local
1189 pm_runtime_get_sync(hdmi->dev); in tegra_hdmi_encoder_enable()
1196 tegra_hdmi_writel(hdmi, INT_CODEC_SCRATCH0, HDMI_NV_PDISP_INT_ENABLE); in tegra_hdmi_encoder_enable()
1197 tegra_hdmi_writel(hdmi, INT_CODEC_SCRATCH0, HDMI_NV_PDISP_INT_MASK); in tegra_hdmi_encoder_enable()
1199 hdmi->pixel_clock = mode->clock * 1000; in tegra_hdmi_encoder_enable()
1204 err = clk_set_rate(hdmi->clk, hdmi->pixel_clock); in tegra_hdmi_encoder_enable()
1206 dev_err(hdmi->dev, "failed to set HDMI clock frequency: %d\n", in tegra_hdmi_encoder_enable()
1210 DRM_DEBUG_KMS("HDMI clock rate: %lu Hz\n", clk_get_rate(hdmi->clk)); in tegra_hdmi_encoder_enable()
1213 value = tegra_hdmi_readl(hdmi, HDMI_NV_PDISP_SOR_PLL0); in tegra_hdmi_encoder_enable()
1215 tegra_hdmi_writel(hdmi, value, HDMI_NV_PDISP_SOR_PLL0); in tegra_hdmi_encoder_enable()
1219 value = tegra_hdmi_readl(hdmi, HDMI_NV_PDISP_SOR_PLL0); in tegra_hdmi_encoder_enable()
1221 tegra_hdmi_writel(hdmi, value, HDMI_NV_PDISP_SOR_PLL0); in tegra_hdmi_encoder_enable()
1242 tegra_hdmi_writel(hdmi, value, HDMI_NV_PDISP_HDMI_VSYNC_WINDOW); in tegra_hdmi_encoder_enable()
1251 tegra_hdmi_writel(hdmi, in tegra_hdmi_encoder_enable()
1255 tegra_hdmi_writel(hdmi, in tegra_hdmi_encoder_enable()
1259 div82 = clk_get_rate(hdmi->clk) / 1000000 * 4; in tegra_hdmi_encoder_enable()
1261 tegra_hdmi_writel(hdmi, value, HDMI_NV_PDISP_SOR_REFCLK); in tegra_hdmi_encoder_enable()
1263 hdmi->dvi = !tegra_output_is_hdmi(output); in tegra_hdmi_encoder_enable()
1264 if (!hdmi->dvi) { in tegra_hdmi_encoder_enable()
1269 if (hdmi->format.sample_rate > 0) { in tegra_hdmi_encoder_enable()
1270 err = tegra_hdmi_setup_audio(hdmi); in tegra_hdmi_encoder_enable()
1272 hdmi->dvi = true; in tegra_hdmi_encoder_enable()
1276 if (hdmi->config->has_hda) in tegra_hdmi_encoder_enable()
1277 tegra_hdmi_write_eld(hdmi); in tegra_hdmi_encoder_enable()
1284 if (!hdmi->dvi) in tegra_hdmi_encoder_enable()
1287 tegra_hdmi_writel(hdmi, value, HDMI_NV_PDISP_HDMI_CTRL); in tegra_hdmi_encoder_enable()
1289 if (!hdmi->dvi) { in tegra_hdmi_encoder_enable()
1290 tegra_hdmi_setup_avi_infoframe(hdmi, mode); in tegra_hdmi_encoder_enable()
1291 tegra_hdmi_setup_audio_infoframe(hdmi); in tegra_hdmi_encoder_enable()
1293 if (hdmi->stereo) in tegra_hdmi_encoder_enable()
1294 tegra_hdmi_setup_stereo_infoframe(hdmi); in tegra_hdmi_encoder_enable()
1298 for (i = 0; i < hdmi->config->num_tmds; i++) { in tegra_hdmi_encoder_enable()
1299 if (hdmi->pixel_clock <= hdmi->config->tmds[i].pclk) { in tegra_hdmi_encoder_enable()
1300 tegra_hdmi_setup_tmds(hdmi, &hdmi->config->tmds[i]); in tegra_hdmi_encoder_enable()
1305 tegra_hdmi_writel(hdmi, in tegra_hdmi_encoder_enable()
1319 tegra_hdmi_writel(hdmi, value, HDMI_NV_PDISP_SOR_SEQ_INST(0)); in tegra_hdmi_encoder_enable()
1320 tegra_hdmi_writel(hdmi, value, HDMI_NV_PDISP_SOR_SEQ_INST(8)); in tegra_hdmi_encoder_enable()
1322 value = tegra_hdmi_readl(hdmi, HDMI_NV_PDISP_SOR_CSTM); in tegra_hdmi_encoder_enable()
1329 tegra_hdmi_writel(hdmi, value, HDMI_NV_PDISP_SOR_CSTM); in tegra_hdmi_encoder_enable()
1332 tegra_hdmi_writel(hdmi, in tegra_hdmi_encoder_enable()
1338 tegra_hdmi_writel(hdmi, in tegra_hdmi_encoder_enable()
1347 value = tegra_hdmi_readl(hdmi, HDMI_NV_PDISP_SOR_PWR); in tegra_hdmi_encoder_enable()
1369 tegra_hdmi_writel(hdmi, value, HDMI_NV_PDISP_SOR_STATE2); in tegra_hdmi_encoder_enable()
1372 tegra_hdmi_writel(hdmi, value, HDMI_NV_PDISP_SOR_STATE1); in tegra_hdmi_encoder_enable()
1374 tegra_hdmi_writel(hdmi, 0, HDMI_NV_PDISP_SOR_STATE0); in tegra_hdmi_encoder_enable()
1375 tegra_hdmi_writel(hdmi, SOR_STATE_UPDATE, HDMI_NV_PDISP_SOR_STATE0); in tegra_hdmi_encoder_enable()
1376 tegra_hdmi_writel(hdmi, value | SOR_STATE_ATTACHED, in tegra_hdmi_encoder_enable()
1378 tegra_hdmi_writel(hdmi, 0, HDMI_NV_PDISP_SOR_STATE0); in tegra_hdmi_encoder_enable()
1386 if (!hdmi->dvi) { in tegra_hdmi_encoder_enable()
1387 tegra_hdmi_enable_avi_infoframe(hdmi); in tegra_hdmi_encoder_enable()
1388 tegra_hdmi_enable_audio_infoframe(hdmi); in tegra_hdmi_encoder_enable()
1389 tegra_hdmi_enable_audio(hdmi); in tegra_hdmi_encoder_enable()
1391 if (hdmi->stereo) in tegra_hdmi_encoder_enable()
1392 tegra_hdmi_enable_stereo_infoframe(hdmi); in tegra_hdmi_encoder_enable()
1406 struct tegra_hdmi *hdmi = to_hdmi(output); in tegra_hdmi_encoder_atomic_check() local
1409 err = tegra_dc_state_setup_clock(dc, crtc_state, hdmi->clk_parent, in tegra_hdmi_encoder_atomic_check()
1428 struct tegra_hdmi *hdmi = host1x_client_to_hdmi(client); in tegra_hdmi_init() local
1431 hdmi->output.dev = client->dev; in tegra_hdmi_init()
1433 drm_connector_init(drm, &hdmi->output.connector, in tegra_hdmi_init()
1436 drm_connector_helper_add(&hdmi->output.connector, in tegra_hdmi_init()
1438 hdmi->output.connector.dpms = DRM_MODE_DPMS_OFF; in tegra_hdmi_init()
1440 drm_encoder_init(drm, &hdmi->output.encoder, &tegra_hdmi_encoder_funcs, in tegra_hdmi_init()
1442 drm_encoder_helper_add(&hdmi->output.encoder, in tegra_hdmi_init()
1445 drm_connector_attach_encoder(&hdmi->output.connector, in tegra_hdmi_init()
1446 &hdmi->output.encoder); in tegra_hdmi_init()
1447 drm_connector_register(&hdmi->output.connector); in tegra_hdmi_init()
1449 err = tegra_output_init(drm, &hdmi->output); in tegra_hdmi_init()
1455 hdmi->output.encoder.possible_crtcs = 0x3; in tegra_hdmi_init()
1457 err = regulator_enable(hdmi->hdmi); in tegra_hdmi_init()
1464 err = regulator_enable(hdmi->pll); in tegra_hdmi_init()
1466 dev_err(hdmi->dev, "failed to enable PLL regulator: %d\n", err); in tegra_hdmi_init()
1470 err = regulator_enable(hdmi->vdd); in tegra_hdmi_init()
1472 dev_err(hdmi->dev, "failed to enable VDD regulator: %d\n", err); in tegra_hdmi_init()
1481 struct tegra_hdmi *hdmi = host1x_client_to_hdmi(client); in tegra_hdmi_exit() local
1483 tegra_output_exit(&hdmi->output); in tegra_hdmi_exit()
1485 regulator_disable(hdmi->vdd); in tegra_hdmi_exit()
1486 regulator_disable(hdmi->pll); in tegra_hdmi_exit()
1487 regulator_disable(hdmi->hdmi); in tegra_hdmi_exit()
1548 struct tegra_hdmi *hdmi = data; in tegra_hdmi_irq() local
1552 value = tegra_hdmi_readl(hdmi, HDMI_NV_PDISP_INT_STATUS); in tegra_hdmi_irq()
1553 tegra_hdmi_writel(hdmi, value, HDMI_NV_PDISP_INT_STATUS); in tegra_hdmi_irq()
1559 value = tegra_hdmi_readl(hdmi, HDMI_NV_PDISP_SOR_AUDIO_HDA_CODEC_SCRATCH0); in tegra_hdmi_irq()
1564 tegra_hda_parse_format(format, &hdmi->format); in tegra_hdmi_irq()
1566 err = tegra_hdmi_setup_audio(hdmi); in tegra_hdmi_irq()
1568 tegra_hdmi_disable_audio_infoframe(hdmi); in tegra_hdmi_irq()
1569 tegra_hdmi_disable_audio(hdmi); in tegra_hdmi_irq()
1571 tegra_hdmi_setup_audio_infoframe(hdmi); in tegra_hdmi_irq()
1572 tegra_hdmi_enable_audio_infoframe(hdmi); in tegra_hdmi_irq()
1573 tegra_hdmi_enable_audio(hdmi); in tegra_hdmi_irq()
1576 tegra_hdmi_disable_audio_infoframe(hdmi); in tegra_hdmi_irq()
1577 tegra_hdmi_disable_audio(hdmi); in tegra_hdmi_irq()
1586 struct tegra_hdmi *hdmi; in tegra_hdmi_probe() local
1590 hdmi = devm_kzalloc(&pdev->dev, sizeof(*hdmi), GFP_KERNEL); in tegra_hdmi_probe()
1591 if (!hdmi) in tegra_hdmi_probe()
1594 hdmi->config = of_device_get_match_data(&pdev->dev); in tegra_hdmi_probe()
1595 hdmi->dev = &pdev->dev; in tegra_hdmi_probe()
1597 hdmi->audio_source = AUTO; in tegra_hdmi_probe()
1598 hdmi->stereo = false; in tegra_hdmi_probe()
1599 hdmi->dvi = false; in tegra_hdmi_probe()
1601 hdmi->clk = devm_clk_get(&pdev->dev, NULL); in tegra_hdmi_probe()
1602 if (IS_ERR(hdmi->clk)) { in tegra_hdmi_probe()
1604 return PTR_ERR(hdmi->clk); in tegra_hdmi_probe()
1607 hdmi->rst = devm_reset_control_get(&pdev->dev, "hdmi"); in tegra_hdmi_probe()
1608 if (IS_ERR(hdmi->rst)) { in tegra_hdmi_probe()
1610 return PTR_ERR(hdmi->rst); in tegra_hdmi_probe()
1613 hdmi->clk_parent = devm_clk_get(&pdev->dev, "parent"); in tegra_hdmi_probe()
1614 if (IS_ERR(hdmi->clk_parent)) in tegra_hdmi_probe()
1615 return PTR_ERR(hdmi->clk_parent); in tegra_hdmi_probe()
1617 err = clk_set_parent(hdmi->clk, hdmi->clk_parent); in tegra_hdmi_probe()
1623 hdmi->hdmi = devm_regulator_get(&pdev->dev, "hdmi"); in tegra_hdmi_probe()
1624 if (IS_ERR(hdmi->hdmi)) { in tegra_hdmi_probe()
1626 return PTR_ERR(hdmi->hdmi); in tegra_hdmi_probe()
1629 hdmi->pll = devm_regulator_get(&pdev->dev, "pll"); in tegra_hdmi_probe()
1630 if (IS_ERR(hdmi->pll)) { in tegra_hdmi_probe()
1632 return PTR_ERR(hdmi->pll); in tegra_hdmi_probe()
1635 hdmi->vdd = devm_regulator_get(&pdev->dev, "vdd"); in tegra_hdmi_probe()
1636 if (IS_ERR(hdmi->vdd)) { in tegra_hdmi_probe()
1638 return PTR_ERR(hdmi->vdd); in tegra_hdmi_probe()
1641 hdmi->output.dev = &pdev->dev; in tegra_hdmi_probe()
1643 err = tegra_output_probe(&hdmi->output); in tegra_hdmi_probe()
1648 hdmi->regs = devm_ioremap_resource(&pdev->dev, regs); in tegra_hdmi_probe()
1649 if (IS_ERR(hdmi->regs)) in tegra_hdmi_probe()
1650 return PTR_ERR(hdmi->regs); in tegra_hdmi_probe()
1656 hdmi->irq = err; in tegra_hdmi_probe()
1658 err = devm_request_irq(hdmi->dev, hdmi->irq, tegra_hdmi_irq, 0, in tegra_hdmi_probe()
1659 dev_name(hdmi->dev), hdmi); in tegra_hdmi_probe()
1662 hdmi->irq, err); in tegra_hdmi_probe()
1666 platform_set_drvdata(pdev, hdmi); in tegra_hdmi_probe()
1669 INIT_LIST_HEAD(&hdmi->client.list); in tegra_hdmi_probe()
1670 hdmi->client.ops = &hdmi_client_ops; in tegra_hdmi_probe()
1671 hdmi->client.dev = &pdev->dev; in tegra_hdmi_probe()
1673 err = host1x_client_register(&hdmi->client); in tegra_hdmi_probe()
1685 struct tegra_hdmi *hdmi = platform_get_drvdata(pdev); in tegra_hdmi_remove() local
1690 err = host1x_client_unregister(&hdmi->client); in tegra_hdmi_remove()
1697 tegra_output_remove(&hdmi->output); in tegra_hdmi_remove()
1705 struct tegra_hdmi *hdmi = dev_get_drvdata(dev); in tegra_hdmi_suspend() local
1708 err = reset_control_assert(hdmi->rst); in tegra_hdmi_suspend()
1716 clk_disable_unprepare(hdmi->clk); in tegra_hdmi_suspend()
1723 struct tegra_hdmi *hdmi = dev_get_drvdata(dev); in tegra_hdmi_resume() local
1726 err = clk_prepare_enable(hdmi->clk); in tegra_hdmi_resume()
1734 err = reset_control_deassert(hdmi->rst); in tegra_hdmi_resume()
1737 clk_disable_unprepare(hdmi->clk); in tegra_hdmi_resume()