Lines Matching +full:vga +full:- +full:connector

1 // SPDX-License-Identifier: GPL-2.0+
18 * Display pipe 0 is attached with a built-in transparent VGA encoder and
19 * a built-in HDMI encoder.
20 * Display pipe 1 has only one built-in HDMI encoder connected.
22 * | +-----+ | | |
23 * | CRTC0 -+--> | VGA | ----> VGA Connector ---> | VGA Monitor |<---+
24 * | | +-----+ | |_____________| |
26 * | | +------+ | | | |
27 * | +--> | HDMI | ----> HDMI Connector --> | HDMI Monitor |<--+
28 * | +------+ | |______________| |
29 * | +------+ | |
30 * | | i2c6 | <-------------------------------------------+
31 * | +------+ |
35 * | +------+ |
36 * | | i2c7 | <--------------------------------+
37 * | +------+ | |
39 * | +------+ | | |
40 * | CRTC1 ---> | HDMI | ----> HDMI Connector ---> | HDMI Monitor |
41 * | +------+ | |______________|
45 static int ls7a2000_connector_get_modes(struct drm_connector *connector) in ls7a2000_connector_get_modes() argument
50 if (connector->ddc) { in ls7a2000_connector_get_modes()
51 edid = drm_get_edid(connector, connector->ddc); in ls7a2000_connector_get_modes()
53 drm_connector_update_edid_property(connector, edid); in ls7a2000_connector_get_modes()
54 num = drm_add_edid_modes(connector, edid); in ls7a2000_connector_get_modes()
61 num = drm_add_modes_noedid(connector, 1920, 1200); in ls7a2000_connector_get_modes()
63 drm_set_preferred_mode(connector, 1024, 768); in ls7a2000_connector_get_modes()
69 ls7a2000_connector_get_best_encoder(struct drm_connector *connector, in ls7a2000_connector_get_best_encoder() argument
72 struct lsdc_output *output = connector_to_lsdc_output(connector); in ls7a2000_connector_get_best_encoder()
74 return &output->encoder; in ls7a2000_connector_get_best_encoder()
115 struct drm_info_node *node = (struct drm_info_node *)m->private; in ls7a2000_hdmi_encoder_regs_show()
116 struct drm_device *ddev = node->minor->dev; in ls7a2000_hdmi_encoder_regs_show()
120 preg = (const struct lsdc_reg32 *)node->info_ent->data; in ls7a2000_hdmi_encoder_regs_show()
122 while (preg->name) { in ls7a2000_hdmi_encoder_regs_show()
123 u32 offset = preg->offset; in ls7a2000_hdmi_encoder_regs_show()
126 preg->name, offset, lsdc_rreg32(ldev, offset)); in ls7a2000_hdmi_encoder_regs_show()
141 static void ls7a2000_hdmi0_late_register(struct drm_connector *connector, in ls7a2000_hdmi0_late_register() argument
144 struct drm_device *ddev = connector->dev; in ls7a2000_hdmi0_late_register()
145 struct drm_minor *minor = ddev->primary; in ls7a2000_hdmi0_late_register()
152 static void ls7a2000_hdmi1_late_register(struct drm_connector *connector, in ls7a2000_hdmi1_late_register() argument
155 struct drm_device *ddev = connector->dev; in ls7a2000_hdmi1_late_register()
156 struct drm_minor *minor = ddev->primary; in ls7a2000_hdmi1_late_register()
166 ls7a2000_hdmi0_vga_connector_detect(struct drm_connector *connector, bool force) in ls7a2000_hdmi0_vga_connector_detect() argument
168 struct drm_device *ddev = connector->dev; in ls7a2000_hdmi0_vga_connector_detect()
177 if (connector->ddc) { in ls7a2000_hdmi0_vga_connector_detect()
178 if (drm_probe_ddc(connector->ddc)) in ls7a2000_hdmi0_vga_connector_detect()
188 ls7a2000_hdmi1_connector_detect(struct drm_connector *connector, bool force) in ls7a2000_hdmi1_connector_detect() argument
190 struct lsdc_device *ldev = to_lsdc(connector->dev); in ls7a2000_hdmi1_connector_detect()
230 struct drm_device *ddev = encoder->dev; in ls7a2000_hdmi0_encoder_reset()
247 drm_dbg(ddev, "HDMI-0 Reset\n"); in ls7a2000_hdmi0_encoder_reset()
252 struct drm_device *ddev = encoder->dev; in ls7a2000_hdmi1_encoder_reset()
269 drm_dbg(ddev, "HDMI-1 Reset\n"); in ls7a2000_hdmi1_encoder_reset()
288 unsigned int index = dispipe->index; in ls7a2000_hdmi_set_avi_infoframe()
289 struct drm_device *ddev = encoder->dev; in ls7a2000_hdmi_set_avi_infoframe()
298 &output->connector, in ls7a2000_hdmi_set_avi_infoframe()
329 drm_dbg(ddev, "Update HDMI-%u avi infoframe\n", index); in ls7a2000_hdmi_set_avi_infoframe()
339 unsigned int index = dispipe->index; in ls7a2000_hdmi_atomic_disable()
340 struct drm_device *ddev = encoder->dev; in ls7a2000_hdmi_atomic_disable()
354 drm_dbg(ddev, "HDMI-%u disabled\n", index); in ls7a2000_hdmi_atomic_disable()
360 struct drm_device *ddev = encoder->dev; in ls7a2000_hdmi_atomic_enable()
364 unsigned int index = dispipe->index; in ls7a2000_hdmi_atomic_enable()
391 drm_dbg(ddev, "HDMI-%u enabled\n", index); in ls7a2000_hdmi_atomic_enable()
404 * +--------------------------------------------------------+
406 * |-------------------+----+-----+----+-----+--------------|
412 * +--------------------------------------------------------+
418 struct drm_device *ddev = &ldev->base; in ls7a2000_hdmi_phy_pll_config()
460 drm_dbg(ddev, "Fin of HDMI-%u: %d kHz\n", index, fin); in ls7a2000_hdmi_phy_pll_config()
467 drm_dbg(ddev, "Setting HDMI-%u PLL take %d cycles\n", in ls7a2000_hdmi_phy_pll_config()
477 drm_err(ddev, "Setting HDMI-%u PLL failed\n", index); in ls7a2000_hdmi_phy_pll_config()
486 unsigned int index = dispipe->index; in ls7a2000_hdmi_atomic_mode_set()
487 struct drm_device *ddev = encoder->dev; in ls7a2000_hdmi_atomic_mode_set()
489 struct drm_display_mode *mode = &crtc_state->mode; in ls7a2000_hdmi_atomic_mode_set()
491 ls7a2000_hdmi_phy_pll_config(ldev, mode->clock, index); in ls7a2000_hdmi_atomic_mode_set()
495 drm_dbg(ddev, "%s modeset finished\n", encoder->name); in ls7a2000_hdmi_atomic_mode_set()
507 * 1) Most of board export one vga + hdmi output interface.
509 * 3) Still have boards export three output(2 hdmi + 1 vga).
519 struct lsdc_output *output = &dispipe->output; in ls7a2000_output_init()
520 struct drm_encoder *encoder = &output->encoder; in ls7a2000_output_init()
521 struct drm_connector *connector = &output->connector; in ls7a2000_output_init() local
525 DRM_MODE_ENCODER_TMDS, "encoder-%u", pipe); in ls7a2000_output_init()
529 encoder->possible_crtcs = BIT(pipe); in ls7a2000_output_init()
533 ret = drm_connector_init_with_ddc(ddev, connector, in ls7a2000_output_init()
539 drm_info(ddev, "display pipe-%u has HDMI %s\n", pipe, pipe ? "" : "and/or VGA"); in ls7a2000_output_init()
541 drm_connector_helper_add(connector, &ls7a2000_connector_helpers); in ls7a2000_output_init()
543 drm_connector_attach_encoder(connector, encoder); in ls7a2000_output_init()
545 connector->polled = DRM_CONNECTOR_POLL_CONNECT | in ls7a2000_output_init()
548 connector->interlace_allowed = 0; in ls7a2000_output_init()
549 connector->doublescan_allowed = 0; in ls7a2000_output_init()