drm/omap: Don't call HDMI mode and infoframe operations recursively
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Thu, 31 May 2018 19:56:59 +0000 (22:56 +0300)
committerTomi Valkeinen <tomi.valkeinen@ti.com>
Mon, 3 Sep 2018 13:13:29 +0000 (16:13 +0300)
The HDMI mode (.set_hdmi_mode()) and infoframe (.set_infoframe())
operations are called recursively from the display device back to the
HDMI encoder. This isn't required, as all components other than the HDMI
encoder just forward the operation to the previous component in the
chain. Call the operations directly on the HDMI encoder.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
drivers/gpu/drm/omapdrm/displays/connector-hdmi.c
drivers/gpu/drm/omapdrm/displays/encoder-tpd12s015.c
drivers/gpu/drm/omapdrm/omap_encoder.c

index 16dc22edcb8e817680bffc406aa93a589f8e6fd0..fe6d2923ed816ae786ec62d45cfdadf418148c44 100644 (file)
@@ -154,21 +154,6 @@ static void hdmic_unregister_hpd_cb(struct omap_dss_device *dssdev)
        mutex_unlock(&ddata->hpd_lock);
 }
 
-static int hdmic_set_hdmi_mode(struct omap_dss_device *dssdev, bool hdmi_mode)
-{
-       struct omap_dss_device *src = dssdev->src;
-
-       return src->ops->hdmi.set_hdmi_mode(src, hdmi_mode);
-}
-
-static int hdmic_set_infoframe(struct omap_dss_device *dssdev,
-               const struct hdmi_avi_infoframe *avi)
-{
-       struct omap_dss_device *src = dssdev->src;
-
-       return src->ops->hdmi.set_infoframe(src, avi);
-}
-
 static const struct omap_dss_device_ops hdmic_ops = {
        .connect                = hdmic_connect,
        .disconnect             = hdmic_disconnect,
@@ -183,11 +168,6 @@ static const struct omap_dss_device_ops hdmic_ops = {
        .detect                 = hdmic_detect,
        .register_hpd_cb        = hdmic_register_hpd_cb,
        .unregister_hpd_cb      = hdmic_unregister_hpd_cb,
-
-       .hdmi = {
-               .set_hdmi_mode  = hdmic_set_hdmi_mode,
-               .set_infoframe  = hdmic_set_infoframe,
-       },
 };
 
 static irqreturn_t hdmic_hpd_isr(int irq, void *data)
index 3ce1c935a48c400d41caea9fcc3eb218bd231611..babaac8560679fc170e4c498700091ef5363404e 100644 (file)
@@ -145,22 +145,6 @@ static void tpd_unregister_hpd_cb(struct omap_dss_device *dssdev)
        mutex_unlock(&ddata->hpd_lock);
 }
 
-static int tpd_set_infoframe(struct omap_dss_device *dssdev,
-               const struct hdmi_avi_infoframe *avi)
-{
-       struct omap_dss_device *src = dssdev->src;
-
-       return src->ops->hdmi.set_infoframe(src, avi);
-}
-
-static int tpd_set_hdmi_mode(struct omap_dss_device *dssdev,
-               bool hdmi_mode)
-{
-       struct omap_dss_device *src = dssdev->src;
-
-       return src->ops->hdmi.set_hdmi_mode(src, hdmi_mode);
-}
-
 static const struct omap_dss_device_ops tpd_ops = {
        .connect                = tpd_connect,
        .disconnect             = tpd_disconnect,
@@ -171,11 +155,6 @@ static const struct omap_dss_device_ops tpd_ops = {
        .detect                 = tpd_detect,
        .register_hpd_cb        = tpd_register_hpd_cb,
        .unregister_hpd_cb      = tpd_unregister_hpd_cb,
-
-       .hdmi = {
-               .set_infoframe          = tpd_set_infoframe,
-               .set_hdmi_mode          = tpd_set_hdmi_mode,
-       },
 };
 
 static irqreturn_t tpd_hpd_isr(int irq, void *data)
index 2689ae74ea60aa34d58bfb5439d310b7106771b4..94b75d018e7173b54865130bc2939e7f0b70249e 100644 (file)
@@ -58,7 +58,7 @@ static void omap_encoder_mode_set(struct drm_encoder *encoder,
 {
        struct drm_device *dev = encoder->dev;
        struct omap_encoder *omap_encoder = to_omap_encoder(encoder);
-       struct omap_dss_device *dssdev = omap_encoder->display;
+       struct omap_dss_device *dssdev = omap_encoder->output;
        struct drm_connector *connector;
        bool hdmi_mode;
        int r;