dssdev->state = OMAP_DSS_DISPLAY_DISABLED;
}
-static void tvc_set_timings(struct omap_dss_device *dssdev,
- const struct videomode *vm)
-{
- struct omap_dss_device *src = dssdev->src;
-
- src->ops->set_timings(src, vm);
-}
-
static const struct omap_dss_device_ops tvc_ops = {
.connect = tvc_connect,
.disconnect = tvc_disconnect,
.enable = tvc_enable,
.disable = tvc_disable,
-
- .set_timings = tvc_set_timings,
};
static int tvc_probe(struct platform_device *pdev)
dssdev->state = OMAP_DSS_DISPLAY_DISABLED;
}
-static void dvic_set_timings(struct omap_dss_device *dssdev,
- const struct videomode *vm)
-{
- struct omap_dss_device *src = dssdev->src;
-
- src->ops->set_timings(src, vm);
-}
-
static int dvic_ddc_read(struct i2c_adapter *adapter,
unsigned char *buf, u16 count, u8 offset)
{
.enable = dvic_enable,
.disable = dvic_disable,
- .set_timings = dvic_set_timings,
-
.read_edid = dvic_read_edid,
.detect = dvic_detect,
dssdev->state = OMAP_DSS_DISPLAY_DISABLED;
}
-static void hdmic_set_timings(struct omap_dss_device *dssdev,
- const struct videomode *vm)
-{
- struct omap_dss_device *src = dssdev->src;
-
- src->ops->set_timings(src, vm);
-}
-
static bool hdmic_detect(struct omap_dss_device *dssdev)
{
struct panel_drv_data *ddata = to_panel_data(dssdev);
.enable = hdmic_enable,
.disable = hdmic_disable,
- .set_timings = hdmic_set_timings,
-
.detect = hdmic_detect,
.register_hpd_cb = hdmic_register_hpd_cb,
.unregister_hpd_cb = hdmic_unregister_hpd_cb,
dssdev->state = OMAP_DSS_DISPLAY_DISABLED;
}
-static void opa362_set_timings(struct omap_dss_device *dssdev,
- const struct videomode *vm)
-{
- struct omap_dss_device *src = dssdev->src;
-
- dev_dbg(dssdev->dev, "set_timings\n");
-
- src->ops->set_timings(src, vm);
-}
-
static const struct omap_dss_device_ops opa362_ops = {
.connect = opa362_connect,
.disconnect = opa362_disconnect,
.enable = opa362_enable,
.disable = opa362_disable,
- .set_timings = opa362_set_timings,
};
static int opa362_probe(struct platform_device *pdev)
dssdev->state = OMAP_DSS_DISPLAY_DISABLED;
}
-static void tfp410_set_timings(struct omap_dss_device *dssdev,
- const struct videomode *vm)
-{
- struct omap_dss_device *src = dssdev->src;
-
- src->ops->set_timings(src, vm);
-}
-
static const struct omap_dss_device_ops tfp410_ops = {
.connect = tfp410_connect,
.disconnect = tfp410_disconnect,
.enable = tfp410_enable,
.disable = tfp410_disable,
- .set_timings = tfp410_set_timings,
};
static int tfp410_probe(struct platform_device *pdev)
dssdev->state = OMAP_DSS_DISPLAY_DISABLED;
}
-static void tpd_set_timings(struct omap_dss_device *dssdev,
- const struct videomode *vm)
-{
- struct omap_dss_device *src = dssdev->src;
-
- src->ops->set_timings(src, vm);
-}
-
static bool tpd_detect(struct omap_dss_device *dssdev)
{
struct panel_drv_data *ddata = to_panel_data(dssdev);
.disconnect = tpd_disconnect,
.enable = tpd_enable,
.disable = tpd_disable,
- .set_timings = tpd_set_timings,
.detect = tpd_detect,
.register_hpd_cb = tpd_register_hpd_cb,
.unregister_hpd_cb = tpd_unregister_hpd_cb,
dssdev->state = OMAP_DSS_DISPLAY_DISABLED;
}
-static void panel_dpi_set_timings(struct omap_dss_device *dssdev,
- const struct videomode *vm)
-{
- struct omap_dss_device *src = dssdev->src;
-
- src->ops->set_timings(src, vm);
-}
-
static void panel_dpi_get_timings(struct omap_dss_device *dssdev,
struct videomode *vm)
{
.enable = panel_dpi_enable,
.disable = panel_dpi_disable,
- .set_timings = panel_dpi_set_timings,
.get_timings = panel_dpi_get_timings,
};
dssdev->state = OMAP_DSS_DISPLAY_DISABLED;
}
-static void lb035q02_set_timings(struct omap_dss_device *dssdev,
- const struct videomode *vm)
-{
- struct omap_dss_device *src = dssdev->src;
-
- src->ops->set_timings(src, vm);
-}
-
static void lb035q02_get_timings(struct omap_dss_device *dssdev,
struct videomode *vm)
{
.enable = lb035q02_enable,
.disable = lb035q02_disable,
- .set_timings = lb035q02_set_timings,
.get_timings = lb035q02_get_timings,
};
dssdev->state = OMAP_DSS_DISPLAY_DISABLED;
}
-static void nec_8048_set_timings(struct omap_dss_device *dssdev,
- const struct videomode *vm)
-{
- struct omap_dss_device *src = dssdev->src;
-
- src->ops->set_timings(src, vm);
-}
-
static void nec_8048_get_timings(struct omap_dss_device *dssdev,
struct videomode *vm)
{
.enable = nec_8048_enable,
.disable = nec_8048_disable,
- .set_timings = nec_8048_set_timings,
.get_timings = nec_8048_get_timings,
};
dssdev->state = OMAP_DSS_DISPLAY_DISABLED;
}
-static void sharp_ls_set_timings(struct omap_dss_device *dssdev,
- const struct videomode *vm)
-{
- struct omap_dss_device *src = dssdev->src;
-
- src->ops->set_timings(src, vm);
-}
-
static void sharp_ls_get_timings(struct omap_dss_device *dssdev,
struct videomode *vm)
{
.enable = sharp_ls_enable,
.disable = sharp_ls_disable,
- .set_timings = sharp_ls_set_timings,
.get_timings = sharp_ls_get_timings,
};
dssdev->state = OMAP_DSS_DISPLAY_DISABLED;
}
-static void acx565akm_set_timings(struct omap_dss_device *dssdev,
- const struct videomode *vm)
-{
- struct omap_dss_device *src = dssdev->src;
-
- src->ops->set_timings(src, vm);
-}
-
static void acx565akm_get_timings(struct omap_dss_device *dssdev,
struct videomode *vm)
{
.enable = acx565akm_enable,
.disable = acx565akm_disable,
- .set_timings = acx565akm_set_timings,
.get_timings = acx565akm_get_timings,
};
dssdev->state = OMAP_DSS_DISPLAY_DISABLED;
}
-static void td028ttec1_panel_set_timings(struct omap_dss_device *dssdev,
- const struct videomode *vm)
-{
- struct omap_dss_device *src = dssdev->src;
-
- src->ops->set_timings(src, vm);
-}
-
static void td028ttec1_panel_get_timings(struct omap_dss_device *dssdev,
struct videomode *vm)
{
.enable = td028ttec1_panel_enable,
.disable = td028ttec1_panel_disable,
- .set_timings = td028ttec1_panel_set_timings,
.get_timings = td028ttec1_panel_get_timings,
};
dssdev->state = OMAP_DSS_DISPLAY_DISABLED;
}
-static void tpo_td043_set_timings(struct omap_dss_device *dssdev,
- const struct videomode *vm)
-{
- struct omap_dss_device *src = dssdev->src;
-
- src->ops->set_timings(src, vm);
-}
-
static void tpo_td043_get_timings(struct omap_dss_device *dssdev,
struct videomode *vm)
{
.enable = tpo_td043_enable,
.disable = tpo_td043_disable,
- .set_timings = tpo_td043_set_timings,
.get_timings = tpo_td043_get_timings,
};
dpi->vm = *vm;
- dss_mgr_set_timings(&dpi->output, vm);
-
mutex_unlock(&dpi->lock);
}
dispc_set_tv_pclk(hdmi->dss->dispc, vm->pixelclock);
- dss_mgr_set_timings(&hdmi->output, vm);
-
mutex_unlock(&hdmi->lock);
}
dispc_set_tv_pclk(hdmi->dss->dispc, vm->pixelclock);
- dss_mgr_set_timings(&hdmi->output, vm);
-
mutex_unlock(&hdmi->lock);
}
struct sdi_device *sdi = dssdev_to_sdi(dssdev);
sdi->vm = *vm;
-
- dss_mgr_set_timings(&sdi->output, vm);
}
static int sdi_check_timings(struct omap_dss_device *dssdev,
dispc_set_tv_pclk(venc->dss->dispc, 13500000);
- dss_mgr_set_timings(&venc->output, vm);
-
mutex_unlock(&venc->venc_lock);
}
{
struct drm_device *dev = encoder->dev;
struct omap_encoder *omap_encoder = to_omap_encoder(encoder);
- struct omap_dss_device *display = omap_encoder->display;
struct drm_connector *connector;
struct omap_dss_device *dssdev;
struct videomode vm = { 0 };
}
}
- /*
- * HACK: Call the .set_timings() operation if available, this will
- * eventually store timings in the CRTC. Otherwise (for DSI outputs)
- * store the timings directly.
- *
- * All outputs should be brought in sync to operate similarly.
- */
- if (display->ops->set_timings)
- display->ops->set_timings(display, &vm);
- else
- *omap_crtc_timings(encoder->crtc) = vm;
+ /* Set timings for all devices in the display pipeline. */
+ dss_mgr_set_timings(omap_encoder->output, &vm);
+
+ for (dssdev = omap_encoder->output; dssdev; dssdev = dssdev->next) {
+ if (dssdev->ops->set_timings)
+ dssdev->ops->set_timings(dssdev, &vm);
+ }
+ /* Set the HDMI mode and HDMI infoframe if applicable. */
hdmi_mode = false;
list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
if (connector->encoder == encoder) {