Commit 2ee76792 authored by Laurent Pinchart's avatar Laurent Pinchart Committed by Tomi Valkeinen

drm/omap: Group CRTC, encoder, connector and dssdev in a structure

Create an omap_drm_pipeline structure to model display pipelines, made
of a CRTC, an encoder, a connector and a DSS display device. This allows
grouping related parameters together instead of storing them in
independent arrays and thus improves code readability.
Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: default avatarSebastian Reichel <sebastian.reichel@collabora.co.uk>
Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
parent ac3b1318
...@@ -474,8 +474,8 @@ static void omap_crtc_mode_set_nofb(struct drm_crtc *crtc) ...@@ -474,8 +474,8 @@ static void omap_crtc_mode_set_nofb(struct drm_crtc *crtc)
* has been changed to the DRM model. * has been changed to the DRM model.
*/ */
for (i = 0; i < priv->num_encoders; ++i) { for (i = 0; i < priv->num_pipes; ++i) {
struct drm_encoder *encoder = priv->encoders[i]; struct drm_encoder *encoder = priv->pipes[i].encoder;
if (encoder->crtc == crtc) { if (encoder->crtc == crtc) {
struct omap_dss_device *dssdev; struct omap_dss_device *dssdev;
......
This diff is collapsed.
...@@ -45,6 +45,13 @@ ...@@ -45,6 +45,13 @@
struct omap_drm_usergart; struct omap_drm_usergart;
struct omap_drm_pipeline {
struct drm_crtc *crtc;
struct drm_encoder *encoder;
struct drm_connector *connector;
struct omap_dss_device *display;
};
struct omap_drm_private { struct omap_drm_private {
struct drm_device *ddev; struct drm_device *ddev;
struct device *dev; struct device *dev;
...@@ -54,21 +61,12 @@ struct omap_drm_private { ...@@ -54,21 +61,12 @@ struct omap_drm_private {
struct dispc_device *dispc; struct dispc_device *dispc;
const struct dispc_ops *dispc_ops; const struct dispc_ops *dispc_ops;
unsigned int num_dssdevs; unsigned int num_pipes;
struct omap_dss_device *dssdevs[8]; struct omap_drm_pipeline pipes[8];
unsigned int num_crtcs;
struct drm_crtc *crtcs[8];
unsigned int num_planes; unsigned int num_planes;
struct drm_plane *planes[8]; struct drm_plane *planes[8];
unsigned int num_encoders;
struct drm_encoder *encoders[8];
unsigned int num_connectors;
struct drm_connector *connectors[8];
struct drm_fb_helper *fbdev; struct drm_fb_helper *fbdev;
struct workqueue_struct *wq; struct workqueue_struct *wq;
......
...@@ -243,7 +243,7 @@ void omap_fbdev_init(struct drm_device *dev) ...@@ -243,7 +243,7 @@ void omap_fbdev_init(struct drm_device *dev)
struct drm_fb_helper *helper; struct drm_fb_helper *helper;
int ret = 0; int ret = 0;
if (!priv->num_crtcs || !priv->num_connectors) if (!priv->num_pipes)
return; return;
fbdev = kzalloc(sizeof(*fbdev), GFP_KERNEL); fbdev = kzalloc(sizeof(*fbdev), GFP_KERNEL);
...@@ -256,7 +256,7 @@ void omap_fbdev_init(struct drm_device *dev) ...@@ -256,7 +256,7 @@ void omap_fbdev_init(struct drm_device *dev)
drm_fb_helper_prepare(dev, helper, &omap_fb_helper_funcs); drm_fb_helper_prepare(dev, helper, &omap_fb_helper_funcs);
ret = drm_fb_helper_init(dev, helper, priv->num_connectors); ret = drm_fb_helper_init(dev, helper, priv->num_pipes);
if (ret) if (ret)
goto fail; goto fail;
......
...@@ -206,8 +206,8 @@ static irqreturn_t omap_irq_handler(int irq, void *arg) ...@@ -206,8 +206,8 @@ static irqreturn_t omap_irq_handler(int irq, void *arg)
VERB("irqs: %08x", irqstatus); VERB("irqs: %08x", irqstatus);
for (id = 0; id < priv->num_crtcs; id++) { for (id = 0; id < priv->num_pipes; id++) {
struct drm_crtc *crtc = priv->crtcs[id]; struct drm_crtc *crtc = priv->pipes[id].crtc;
enum omap_channel channel = omap_crtc_channel(crtc); enum omap_channel channel = omap_crtc_channel(crtc);
if (irqstatus & priv->dispc_ops->mgr_get_vsync_irq(priv->dispc, channel)) { if (irqstatus & priv->dispc_ops->mgr_get_vsync_irq(priv->dispc, channel)) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment