Merge tag 'media/v4.18-2' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab...
[linux-2.6-microblaze.git] / drivers / gpu / drm / rcar-du / rcar_du_crtc.c
index d71d709..15dc9ca 100644 (file)
@@ -909,7 +909,8 @@ static irqreturn_t rcar_du_crtc_irq(int irq, void *arg)
  * Initialization
  */
 
-int rcar_du_crtc_create(struct rcar_du_group *rgrp, unsigned int index)
+int rcar_du_crtc_create(struct rcar_du_group *rgrp, unsigned int swindex,
+                       unsigned int hwindex)
 {
        static const unsigned int mmio_offsets[] = {
                DU0_REG_OFFSET, DU1_REG_OFFSET, DU2_REG_OFFSET, DU3_REG_OFFSET
@@ -917,7 +918,7 @@ int rcar_du_crtc_create(struct rcar_du_group *rgrp, unsigned int index)
 
        struct rcar_du_device *rcdu = rgrp->dev;
        struct platform_device *pdev = to_platform_device(rcdu->dev);
-       struct rcar_du_crtc *rcrtc = &rcdu->crtcs[index];
+       struct rcar_du_crtc *rcrtc = &rcdu->crtcs[swindex];
        struct drm_crtc *crtc = &rcrtc->crtc;
        struct drm_plane *primary;
        unsigned int irqflags;
@@ -929,7 +930,7 @@ int rcar_du_crtc_create(struct rcar_du_group *rgrp, unsigned int index)
 
        /* Get the CRTC clock and the optional external clock. */
        if (rcar_du_has(rcdu, RCAR_DU_FEATURE_CRTC_IRQ_CLOCK)) {
-               sprintf(clk_name, "du.%u", index);
+               sprintf(clk_name, "du.%u", hwindex);
                name = clk_name;
        } else {
                name = NULL;
@@ -937,16 +938,16 @@ int rcar_du_crtc_create(struct rcar_du_group *rgrp, unsigned int index)
 
        rcrtc->clock = devm_clk_get(rcdu->dev, name);
        if (IS_ERR(rcrtc->clock)) {
-               dev_err(rcdu->dev, "no clock for CRTC %u\n", index);
+               dev_err(rcdu->dev, "no clock for DU channel %u\n", hwindex);
                return PTR_ERR(rcrtc->clock);
        }
 
-       sprintf(clk_name, "dclkin.%u", index);
+       sprintf(clk_name, "dclkin.%u", hwindex);
        clk = devm_clk_get(rcdu->dev, clk_name);
        if (!IS_ERR(clk)) {
                rcrtc->extclock = clk;
        } else if (PTR_ERR(rcrtc->clock) == -EPROBE_DEFER) {
-               dev_info(rcdu->dev, "can't get external clock %u\n", index);
+               dev_info(rcdu->dev, "can't get external clock %u\n", hwindex);
                return -EPROBE_DEFER;
        }
 
@@ -955,13 +956,13 @@ int rcar_du_crtc_create(struct rcar_du_group *rgrp, unsigned int index)
        spin_lock_init(&rcrtc->vblank_lock);
 
        rcrtc->group = rgrp;
-       rcrtc->mmio_offset = mmio_offsets[index];
-       rcrtc->index = index;
+       rcrtc->mmio_offset = mmio_offsets[hwindex];
+       rcrtc->index = hwindex;
 
        if (rcar_du_has(rcdu, RCAR_DU_FEATURE_VSP1_SOURCE))
                primary = &rcrtc->vsp->planes[rcrtc->vsp_pipe].plane;
        else
-               primary = &rgrp->planes[index % 2].plane;
+               primary = &rgrp->planes[swindex % 2].plane;
 
        ret = drm_crtc_init_with_planes(rcdu->ddev, crtc, primary, NULL,
                                        rcdu->info->gen <= 2 ?
@@ -977,7 +978,8 @@ int rcar_du_crtc_create(struct rcar_du_group *rgrp, unsigned int index)
 
        /* Register the interrupt handler. */
        if (rcar_du_has(rcdu, RCAR_DU_FEATURE_CRTC_IRQ_CLOCK)) {
-               irq = platform_get_irq(pdev, index);
+               /* The IRQ's are associated with the CRTC (sw)index. */
+               irq = platform_get_irq(pdev, swindex);
                irqflags = 0;
        } else {
                irq = platform_get_irq(pdev, 0);
@@ -985,7 +987,7 @@ int rcar_du_crtc_create(struct rcar_du_group *rgrp, unsigned int index)
        }
 
        if (irq < 0) {
-               dev_err(rcdu->dev, "no IRQ for CRTC %u\n", index);
+               dev_err(rcdu->dev, "no IRQ for CRTC %u\n", swindex);
                return irq;
        }
 
@@ -993,7 +995,7 @@ int rcar_du_crtc_create(struct rcar_du_group *rgrp, unsigned int index)
                               dev_name(rcdu->dev), rcrtc);
        if (ret < 0) {
                dev_err(rcdu->dev,
-                       "failed to register IRQ for CRTC %u\n", index);
+                       "failed to register IRQ for CRTC %u\n", swindex);
                return ret;
        }