|
@@ -1697,32 +1697,25 @@ static int hdmi_bind(struct device *dev, struct device *master, void *data)
|
|
|
struct drm_device *drm_dev = data;
|
|
|
struct hdmi_context *hdata = dev_get_drvdata(dev);
|
|
|
struct drm_encoder *encoder = &hdata->encoder;
|
|
|
- struct exynos_drm_crtc *exynos_crtc;
|
|
|
- struct drm_crtc *crtc;
|
|
|
- int ret, pipe;
|
|
|
+ struct exynos_drm_crtc *crtc;
|
|
|
+ int ret;
|
|
|
|
|
|
hdata->drm_dev = drm_dev;
|
|
|
|
|
|
- pipe = exynos_drm_crtc_get_pipe_from_type(drm_dev,
|
|
|
- EXYNOS_DISPLAY_TYPE_HDMI);
|
|
|
- if (pipe < 0)
|
|
|
- return pipe;
|
|
|
-
|
|
|
hdata->phy_clk.enable = hdmiphy_clk_enable;
|
|
|
|
|
|
- crtc = drm_crtc_from_index(drm_dev, pipe);
|
|
|
- exynos_crtc = to_exynos_crtc(crtc);
|
|
|
- exynos_crtc->pipe_clk = &hdata->phy_clk;
|
|
|
-
|
|
|
- encoder->possible_crtcs = 1 << pipe;
|
|
|
-
|
|
|
- DRM_DEBUG_KMS("possible_crtcs = 0x%x\n", encoder->possible_crtcs);
|
|
|
-
|
|
|
drm_encoder_init(drm_dev, encoder, &exynos_hdmi_encoder_funcs,
|
|
|
DRM_MODE_ENCODER_TMDS, NULL);
|
|
|
|
|
|
drm_encoder_helper_add(encoder, &exynos_hdmi_encoder_helper_funcs);
|
|
|
|
|
|
+ ret = exynos_drm_set_possible_crtcs(encoder, EXYNOS_DISPLAY_TYPE_HDMI);
|
|
|
+ if (ret < 0)
|
|
|
+ return ret;
|
|
|
+
|
|
|
+ crtc = exynos_drm_crtc_get_by_type(drm_dev, EXYNOS_DISPLAY_TYPE_HDMI);
|
|
|
+ crtc->pipe_clk = &hdata->phy_clk;
|
|
|
+
|
|
|
ret = hdmi_create_connector(encoder);
|
|
|
if (ret) {
|
|
|
DRM_ERROR("failed to create connector ret = %d\n", ret);
|