aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/omapdrm
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2018-05-31 15:56:59 -0400
committerTomi Valkeinen <tomi.valkeinen@ti.com>2018-09-03 09:13:29 -0400
commit7805d1e5098c1a90e5feb153809b16ba890b03e4 (patch)
tree5712acb4ba36290b79ef6d439b811aa7100a9789 /drivers/gpu/drm/omapdrm
parentd96aaada55553b9e4264a2f2c8cc9599f027cd28 (diff)
drm/omap: Don't call HDMI mode and infoframe operations recursively
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>
Diffstat (limited to 'drivers/gpu/drm/omapdrm')
-rw-r--r--drivers/gpu/drm/omapdrm/displays/connector-hdmi.c20
-rw-r--r--drivers/gpu/drm/omapdrm/displays/encoder-tpd12s015.c21
-rw-r--r--drivers/gpu/drm/omapdrm/omap_encoder.c2
3 files changed, 1 insertions, 42 deletions
diff --git a/drivers/gpu/drm/omapdrm/displays/connector-hdmi.c b/drivers/gpu/drm/omapdrm/displays/connector-hdmi.c
index 16dc22edcb8e..fe6d2923ed81 100644
--- a/drivers/gpu/drm/omapdrm/displays/connector-hdmi.c
+++ b/drivers/gpu/drm/omapdrm/displays/connector-hdmi.c
@@ -154,21 +154,6 @@ static void hdmic_unregister_hpd_cb(struct omap_dss_device *dssdev)
154 mutex_unlock(&ddata->hpd_lock); 154 mutex_unlock(&ddata->hpd_lock);
155} 155}
156 156
157static int hdmic_set_hdmi_mode(struct omap_dss_device *dssdev, bool hdmi_mode)
158{
159 struct omap_dss_device *src = dssdev->src;
160
161 return src->ops->hdmi.set_hdmi_mode(src, hdmi_mode);
162}
163
164static int hdmic_set_infoframe(struct omap_dss_device *dssdev,
165 const struct hdmi_avi_infoframe *avi)
166{
167 struct omap_dss_device *src = dssdev->src;
168
169 return src->ops->hdmi.set_infoframe(src, avi);
170}
171
172static const struct omap_dss_device_ops hdmic_ops = { 157static const struct omap_dss_device_ops hdmic_ops = {
173 .connect = hdmic_connect, 158 .connect = hdmic_connect,
174 .disconnect = hdmic_disconnect, 159 .disconnect = hdmic_disconnect,
@@ -183,11 +168,6 @@ static const struct omap_dss_device_ops hdmic_ops = {
183 .detect = hdmic_detect, 168 .detect = hdmic_detect,
184 .register_hpd_cb = hdmic_register_hpd_cb, 169 .register_hpd_cb = hdmic_register_hpd_cb,
185 .unregister_hpd_cb = hdmic_unregister_hpd_cb, 170 .unregister_hpd_cb = hdmic_unregister_hpd_cb,
186
187 .hdmi = {
188 .set_hdmi_mode = hdmic_set_hdmi_mode,
189 .set_infoframe = hdmic_set_infoframe,
190 },
191}; 171};
192 172
193static irqreturn_t hdmic_hpd_isr(int irq, void *data) 173static irqreturn_t hdmic_hpd_isr(int irq, void *data)
diff --git a/drivers/gpu/drm/omapdrm/displays/encoder-tpd12s015.c b/drivers/gpu/drm/omapdrm/displays/encoder-tpd12s015.c
index 3ce1c935a48c..babaac856067 100644
--- a/drivers/gpu/drm/omapdrm/displays/encoder-tpd12s015.c
+++ b/drivers/gpu/drm/omapdrm/displays/encoder-tpd12s015.c
@@ -145,22 +145,6 @@ static void tpd_unregister_hpd_cb(struct omap_dss_device *dssdev)
145 mutex_unlock(&ddata->hpd_lock); 145 mutex_unlock(&ddata->hpd_lock);
146} 146}
147 147
148static int tpd_set_infoframe(struct omap_dss_device *dssdev,
149 const struct hdmi_avi_infoframe *avi)
150{
151 struct omap_dss_device *src = dssdev->src;
152
153 return src->ops->hdmi.set_infoframe(src, avi);
154}
155
156static int tpd_set_hdmi_mode(struct omap_dss_device *dssdev,
157 bool hdmi_mode)
158{
159 struct omap_dss_device *src = dssdev->src;
160
161 return src->ops->hdmi.set_hdmi_mode(src, hdmi_mode);
162}
163
164static const struct omap_dss_device_ops tpd_ops = { 148static const struct omap_dss_device_ops tpd_ops = {
165 .connect = tpd_connect, 149 .connect = tpd_connect,
166 .disconnect = tpd_disconnect, 150 .disconnect = tpd_disconnect,
@@ -171,11 +155,6 @@ static const struct omap_dss_device_ops tpd_ops = {
171 .detect = tpd_detect, 155 .detect = tpd_detect,
172 .register_hpd_cb = tpd_register_hpd_cb, 156 .register_hpd_cb = tpd_register_hpd_cb,
173 .unregister_hpd_cb = tpd_unregister_hpd_cb, 157 .unregister_hpd_cb = tpd_unregister_hpd_cb,
174
175 .hdmi = {
176 .set_infoframe = tpd_set_infoframe,
177 .set_hdmi_mode = tpd_set_hdmi_mode,
178 },
179}; 158};
180 159
181static irqreturn_t tpd_hpd_isr(int irq, void *data) 160static irqreturn_t tpd_hpd_isr(int irq, void *data)
diff --git a/drivers/gpu/drm/omapdrm/omap_encoder.c b/drivers/gpu/drm/omapdrm/omap_encoder.c
index 2689ae74ea60..94b75d018e71 100644
--- a/drivers/gpu/drm/omapdrm/omap_encoder.c
+++ b/drivers/gpu/drm/omapdrm/omap_encoder.c
@@ -58,7 +58,7 @@ static void omap_encoder_mode_set(struct drm_encoder *encoder,
58{ 58{
59 struct drm_device *dev = encoder->dev; 59 struct drm_device *dev = encoder->dev;
60 struct omap_encoder *omap_encoder = to_omap_encoder(encoder); 60 struct omap_encoder *omap_encoder = to_omap_encoder(encoder);
61 struct omap_dss_device *dssdev = omap_encoder->display; 61 struct omap_dss_device *dssdev = omap_encoder->output;
62 struct drm_connector *connector; 62 struct drm_connector *connector;
63 bool hdmi_mode; 63 bool hdmi_mode;
64 int r; 64 int r;