Hi,
On Sat, May 26, 2018 at 08:25:08PM +0300, Laurent Pinchart wrote:
> 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: Laurent Pinchart
> ---
Reviewed-by: Sebastian Reichel
-- Sebastian
> drivers/gpu/drm/omapdrm/omap_crtc.c | 4 +-
> drivers/gpu/drm/omapdrm/omap_drv.c | 144
> +--
> drivers/gpu/drm/omapdrm/omap_drv.h | 20 +++--
> drivers/gpu/drm/omapdrm/omap_fbdev.c | 4 +-
> drivers/gpu/drm/omapdrm/omap_irq.c | 4 +-
> 5 files changed, 84 insertions(+), 92 deletions(-)
>
> diff --git a/drivers/gpu/drm/omapdrm/omap_crtc.c
> b/drivers/gpu/drm/omapdrm/omap_crtc.c
> index c5f1915aef67..f5bf553a862f 100644
> --- a/drivers/gpu/drm/omapdrm/omap_crtc.c
> +++ b/drivers/gpu/drm/omapdrm/omap_crtc.c
> @@ -474,8 +474,8 @@ static void omap_crtc_mode_set_nofb(struct drm_crtc *crtc)
>* has been changed to the DRM model.
>*/
>
> - for (i = 0; i < priv->num_encoders; ++i) {
> - struct drm_encoder *encoder = priv->encoders[i];
> + for (i = 0; i < priv->num_pipes; ++i) {
> + struct drm_encoder *encoder = priv->pipes[i].encoder;
>
> if (encoder->crtc == crtc) {
> struct omap_dss_device *dssdev;
> diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c
> b/drivers/gpu/drm/omapdrm/omap_drv.c
> index 99ed47a17ce3..298d594a0c65 100644
> --- a/drivers/gpu/drm/omapdrm/omap_drv.c
> +++ b/drivers/gpu/drm/omapdrm/omap_drv.c
> @@ -129,9 +129,9 @@ static const struct drm_mode_config_funcs
> omap_mode_config_funcs = {
> .atomic_commit = drm_atomic_helper_commit,
> };
>
> -static int get_connector_type(struct omap_dss_device *dssdev)
> +static int get_connector_type(struct omap_dss_device *display)
> {
> - switch (dssdev->type) {
> + switch (display->type) {
> case OMAP_DISPLAY_TYPE_HDMI:
> return DRM_MODE_CONNECTOR_HDMIA;
> case OMAP_DISPLAY_TYPE_DVI:
> @@ -151,65 +151,65 @@ static int get_connector_type(struct omap_dss_device
> *dssdev)
> }
> }
>
> -static void omap_disconnect_dssdevs(struct drm_device *ddev)
> +static void omap_disconnect_pipelines(struct drm_device *ddev)
> {
> struct omap_drm_private *priv = ddev->dev_private;
> unsigned int i;
>
> - for (i = 0; i < priv->num_dssdevs; i++) {
> - struct omap_dss_device *dssdev = priv->dssdevs[i];
> + for (i = 0; i < priv->num_pipes; i++) {
> + struct omap_dss_device *display = priv->pipes[i].display;
>
> - omapdss_device_disconnect(dssdev, NULL);
> - priv->dssdevs[i] = NULL;
> - omapdss_device_put(dssdev);
> + omapdss_device_disconnect(display, NULL);
> + priv->pipes[i].display = NULL;
> + omapdss_device_put(display);
> }
>
> - priv->num_dssdevs = 0;
> + priv->num_pipes = 0;
> }
>
> -static int omap_compare_dssdevs(const void *a, const void *b)
> +static int omap_compare_pipes(const void *a, const void *b)
> {
> - const struct omap_dss_device *dssdev1 = *(struct omap_dss_device **)a;
> - const struct omap_dss_device *dssdev2 = *(struct omap_dss_device **)b;
> + const struct omap_drm_pipeline *pipe1 = a;
> + const struct omap_drm_pipeline *pipe2 = b;
>
> - if (dssdev1->alias_id > dssdev2->alias_id)
> + if (pipe1->display->alias_id > pipe2->display->alias_id)
> return 1;
> - else if (dssdev1->alias_id < dssdev2->alias_id)
> + else if (pipe1->display->alias_id < pipe2->display->alias_id)
> return -1;
> return 0;
> }
>
> -static int omap_connect_dssdevs(struct drm_device *ddev)
> +static int omap_connect_pipelines(struct drm_device *ddev)
> {
> struct omap_drm_private *priv = ddev->dev_private;
> - struct omap_dss_device *dssdev = NULL;
> + struct omap_dss_device *display = NULL;
> int r;
>
> if (!omapdss_stack_is_ready())
> return -EPROBE_DEFER;
>
> - for_each_dss_display(dssdev) {
> - r = omapdss_device_connect(priv->dss, dssdev, NULL);
> + for_each_dss_display(display) {
> + r = omapdss_device_connect(priv->dss, display, NULL);
> if (r == -EPROBE_DEFER) {
> - omapdss_device_put(dssdev);
> + omapdss_device_put(display);
> goto cleanup;
> } else if (r) {
> - dev_warn(dssdev->dev, "could not connect display: %s\n",
> - dssdev->name);
> + dev_warn(display->dev, "could not connect display:
> %s\n",
> + display->name);
> } else {
> - omapdss_device_get(dssdev);
> -