Lines Matching +full:dp +full:- +full:connector

1 // SPDX-License-Identifier: GPL-2.0-or-later
14 #include "dp/dp_hw.h"
18 static int hibmc_dp_connector_get_modes(struct drm_connector *connector)
23 drm_edid = drm_edid_read(connector);
25 drm_edid_connector_update(connector, drm_edid);
27 count = drm_edid_connector_add_modes(connector);
34 static int hibmc_dp_detect(struct drm_connector *connector,
39 return drm_connector_helper_detect_from_ddc(connector, ctx, force);
47 static int hibmc_dp_late_register(struct drm_connector *connector)
49 struct hibmc_dp *dp = to_hibmc_dp(connector);
51 hibmc_dp_enable_int(dp);
53 return drm_dp_aux_register(&dp->aux);
56 static void hibmc_dp_early_unregister(struct drm_connector *connector)
58 struct hibmc_dp *dp = to_hibmc_dp(connector);
60 drm_dp_aux_unregister(&dp->aux);
62 hibmc_dp_disable_int(dp);
76 static inline int hibmc_dp_prepare(struct hibmc_dp *dp, struct drm_display_mode *mode)
80 hibmc_dp_display_en(dp, false);
82 ret = hibmc_dp_mode_set(dp, mode);
84 drm_err(dp->drm_dev, "hibmc dp mode set failed: %d\n", ret);
92 struct hibmc_dp *dp = container_of(drm_encoder, struct hibmc_dp, encoder);
93 struct drm_display_mode *mode = &drm_encoder->crtc->state->mode;
95 if (hibmc_dp_prepare(dp, mode))
98 hibmc_dp_display_en(dp, true);
104 struct hibmc_dp *dp = container_of(drm_encoder, struct hibmc_dp, encoder);
106 hibmc_dp_display_en(dp, false);
121 return -ENODEV;
123 if (priv->dp.irq_status & DP_MASKED_SINK_HPD_PLUG_INT) {
124 drm_dbg_dp(&priv->dev, "HPD IN isr occur!\n");
125 hibmc_dp_hpd_cfg(&priv->dp);
127 drm_dbg_dp(&priv->dev, "HPD OUT isr occur!\n");
128 hibmc_dp_reset_link(&priv->dp);
131 if (dev->registered)
132 drm_connector_helper_hpd_irq_event(&priv->dp.connector);
141 struct drm_device *dev = &priv->dev;
142 struct drm_crtc *crtc = &priv->crtc;
143 struct hibmc_dp *dp = &priv->dp;
144 struct drm_connector *connector = &dp->connector;
145 struct drm_encoder *encoder = &dp->encoder;
148 dp->mmio = priv->mmio;
149 dp->drm_dev = dev;
151 ret = hibmc_dp_hw_init(&priv->dp);
153 drm_err(dev, "hibmc dp hw init failed: %d\n", ret);
157 hibmc_dp_display_en(&priv->dp, false);
159 encoder->possible_crtcs = drm_crtc_mask(crtc);
162 drm_err(dev, "init dp encoder failed: %d\n", ret);
168 ret = drm_connector_init_with_ddc(dev, connector, &hibmc_dp_conn_funcs,
169 DRM_MODE_CONNECTOR_DisplayPort, &dp->aux.ddc);
171 drm_err(dev, "init dp connector failed: %d\n", ret);
175 drm_connector_helper_add(connector, &hibmc_dp_conn_helper_funcs);
177 drm_connector_attach_encoder(connector, encoder);
179 connector->polled = DRM_CONNECTOR_POLL_HPD;