Merge drm/drm-fixes into drm-misc-fixes
[linux-block.git] / drivers / gpu / drm / drm_atomic.c
index a1e4c7905ebbe3d977c9c85bb544619a9d7db481..88cd992df35602c979fb72b0f95b47acadd2a854 100644 (file)
@@ -74,7 +74,7 @@ int drm_crtc_commit_wait(struct drm_crtc_commit *commit)
 
        ret = wait_for_completion_timeout(&commit->hw_done, timeout);
        if (!ret) {
-               DRM_ERROR("hw_done timed out\n");
+               drm_err(commit->crtc->dev, "hw_done timed out\n");
                return -ETIMEDOUT;
        }
 
@@ -84,7 +84,7 @@ int drm_crtc_commit_wait(struct drm_crtc_commit *commit)
         */
        ret = wait_for_completion_timeout(&commit->flip_done, timeout);
        if (!ret) {
-               DRM_ERROR("flip_done timed out\n");
+               drm_err(commit->crtc->dev, "flip_done timed out\n");
                return -ETIMEDOUT;
        }
 
@@ -140,7 +140,7 @@ drm_atomic_state_init(struct drm_device *dev, struct drm_atomic_state *state)
 
        state->dev = dev;
 
-       DRM_DEBUG_ATOMIC("Allocated atomic state %p\n", state);
+       drm_dbg_atomic(dev, "Allocated atomic state %p\n", state);
 
        return 0;
 fail:
@@ -191,7 +191,7 @@ void drm_atomic_state_default_clear(struct drm_atomic_state *state)
        struct drm_mode_config *config = &dev->mode_config;
        int i;
 
-       DRM_DEBUG_ATOMIC("Clearing atomic state %p\n", state);
+       drm_dbg_atomic(dev, "Clearing atomic state %p\n", state);
 
        for (i = 0; i < state->num_connector; i++) {
                struct drm_connector *connector = state->connectors[i].ptr;
@@ -301,7 +301,7 @@ void __drm_atomic_state_free(struct kref *ref)
 
        drm_atomic_state_clear(state);
 
-       DRM_DEBUG_ATOMIC("Freeing atomic state %p\n", state);
+       drm_dbg_atomic(state->dev, "Freeing atomic state %p\n", state);
 
        if (config->funcs->atomic_state_free) {
                config->funcs->atomic_state_free(state);
@@ -358,8 +358,8 @@ drm_atomic_get_crtc_state(struct drm_atomic_state *state,
        state->crtcs[index].ptr = crtc;
        crtc_state->state = state;
 
-       DRM_DEBUG_ATOMIC("Added [CRTC:%d:%s] %p state to %p\n",
-                        crtc->base.id, crtc->name, crtc_state, state);
+       drm_dbg_atomic(state->dev, "Added [CRTC:%d:%s] %p state to %p\n",
+                      crtc->base.id, crtc->name, crtc_state, state);
 
        return crtc_state;
 }
@@ -379,8 +379,9 @@ static int drm_atomic_crtc_check(const struct drm_crtc_state *old_crtc_state,
         */
 
        if (new_crtc_state->active && !new_crtc_state->enable) {
-               DRM_DEBUG_ATOMIC("[CRTC:%d:%s] active without enabled\n",
-                                crtc->base.id, crtc->name);
+               drm_dbg_atomic(crtc->dev,
+                              "[CRTC:%d:%s] active without enabled\n",
+                              crtc->base.id, crtc->name);
                return -EINVAL;
        }
 
@@ -390,15 +391,17 @@ static int drm_atomic_crtc_check(const struct drm_crtc_state *old_crtc_state,
         */
        if (drm_core_check_feature(crtc->dev, DRIVER_ATOMIC) &&
            WARN_ON(new_crtc_state->enable && !new_crtc_state->mode_blob)) {
-               DRM_DEBUG_ATOMIC("[CRTC:%d:%s] enabled without mode blob\n",
-                                crtc->base.id, crtc->name);
+               drm_dbg_atomic(crtc->dev,
+                              "[CRTC:%d:%s] enabled without mode blob\n",
+                              crtc->base.id, crtc->name);
                return -EINVAL;
        }
 
        if (drm_core_check_feature(crtc->dev, DRIVER_ATOMIC) &&
            WARN_ON(!new_crtc_state->enable && new_crtc_state->mode_blob)) {
-               DRM_DEBUG_ATOMIC("[CRTC:%d:%s] disabled with mode blob\n",
-                                crtc->base.id, crtc->name);
+               drm_dbg_atomic(crtc->dev,
+                              "[CRTC:%d:%s] disabled with mode blob\n",
+                              crtc->base.id, crtc->name);
                return -EINVAL;
        }
 
@@ -414,8 +417,9 @@ static int drm_atomic_crtc_check(const struct drm_crtc_state *old_crtc_state,
         */
        if (new_crtc_state->event &&
            !new_crtc_state->active && !old_crtc_state->active) {
-               DRM_DEBUG_ATOMIC("[CRTC:%d:%s] requesting event but off\n",
-                                crtc->base.id, crtc->name);
+               drm_dbg_atomic(crtc->dev,
+                              "[CRTC:%d:%s] requesting event but off\n",
+                              crtc->base.id, crtc->name);
                return -EINVAL;
        }
 
@@ -460,8 +464,9 @@ static int drm_atomic_connector_check(struct drm_connector *connector,
                return 0;
 
        if (writeback_job->fb && !state->crtc) {
-               DRM_DEBUG_ATOMIC("[CONNECTOR:%d:%s] framebuffer without CRTC\n",
-                                connector->base.id, connector->name);
+               drm_dbg_atomic(connector->dev,
+                              "[CONNECTOR:%d:%s] framebuffer without CRTC\n",
+                              connector->base.id, connector->name);
                return -EINVAL;
        }
 
@@ -470,16 +475,18 @@ static int drm_atomic_connector_check(struct drm_connector *connector,
                                                                state->crtc);
 
        if (writeback_job->fb && !crtc_state->active) {
-               DRM_DEBUG_ATOMIC("[CONNECTOR:%d:%s] has framebuffer, but [CRTC:%d] is off\n",
-                                connector->base.id, connector->name,
-                                state->crtc->base.id);
+               drm_dbg_atomic(connector->dev,
+                              "[CONNECTOR:%d:%s] has framebuffer, but [CRTC:%d] is off\n",
+                              connector->base.id, connector->name,
+                              state->crtc->base.id);
                return -EINVAL;
        }
 
        if (!writeback_job->fb) {
                if (writeback_job->out_fence) {
-                       DRM_DEBUG_ATOMIC("[CONNECTOR:%d:%s] requesting out-fence without framebuffer\n",
-                                        connector->base.id, connector->name);
+                       drm_dbg_atomic(connector->dev,
+                                      "[CONNECTOR:%d:%s] requesting out-fence without framebuffer\n",
+                                      connector->base.id, connector->name);
                        return -EINVAL;
                }
 
@@ -537,8 +544,8 @@ drm_atomic_get_plane_state(struct drm_atomic_state *state,
        state->planes[index].new_state = plane_state;
        plane_state->state = state;
 
-       DRM_DEBUG_ATOMIC("Added [PLANE:%d:%s] %p state to %p\n",
-                        plane->base.id, plane->name, plane_state, state);
+       drm_dbg_atomic(plane->dev, "Added [PLANE:%d:%s] %p state to %p\n",
+                      plane->base.id, plane->name, plane_state, state);
 
        if (plane_state->crtc) {
                struct drm_crtc_state *crtc_state;
@@ -594,12 +601,12 @@ static int drm_atomic_plane_check(const struct drm_plane_state *old_plane_state,
 
        /* either *both* CRTC and FB must be set, or neither */
        if (crtc && !fb) {
-               DRM_DEBUG_ATOMIC("[PLANE:%d:%s] CRTC set but no FB\n",
-                                plane->base.id, plane->name);
+               drm_dbg_atomic(plane->dev, "[PLANE:%d:%s] CRTC set but no FB\n",
+                              plane->base.id, plane->name);
                return -EINVAL;
        } else if (fb && !crtc) {
-               DRM_DEBUG_ATOMIC("[PLANE:%d:%s] FB set but no CRTC\n",
-                                plane->base.id, plane->name);
+               drm_dbg_atomic(plane->dev, "[PLANE:%d:%s] FB set but no CRTC\n",
+                              plane->base.id, plane->name);
                return -EINVAL;
        }
 
@@ -609,9 +616,10 @@ static int drm_atomic_plane_check(const struct drm_plane_state *old_plane_state,
 
        /* Check whether this plane is usable on this CRTC */
        if (!(plane->possible_crtcs & drm_crtc_mask(crtc))) {
-               DRM_DEBUG_ATOMIC("Invalid [CRTC:%d:%s] for [PLANE:%d:%s]\n",
-                                crtc->base.id, crtc->name,
-                                plane->base.id, plane->name);
+               drm_dbg_atomic(plane->dev,
+                              "Invalid [CRTC:%d:%s] for [PLANE:%d:%s]\n",
+                              crtc->base.id, crtc->name,
+                              plane->base.id, plane->name);
                return -EINVAL;
        }
 
@@ -619,9 +627,10 @@ static int drm_atomic_plane_check(const struct drm_plane_state *old_plane_state,
        ret = drm_plane_check_pixel_format(plane, fb->format->format,
                                           fb->modifier);
        if (ret) {
-               DRM_DEBUG_ATOMIC("[PLANE:%d:%s] invalid pixel format %p4cc, modifier 0x%llx\n",
-                                plane->base.id, plane->name,
-                                &fb->format->format, fb->modifier);
+               drm_dbg_atomic(plane->dev,
+                              "[PLANE:%d:%s] invalid pixel format %p4cc, modifier 0x%llx\n",
+                              plane->base.id, plane->name,
+                              &fb->format->format, fb->modifier);
                return ret;
        }
 
@@ -630,10 +639,11 @@ static int drm_atomic_plane_check(const struct drm_plane_state *old_plane_state,
            new_plane_state->crtc_x > INT_MAX - (int32_t) new_plane_state->crtc_w ||
            new_plane_state->crtc_h > INT_MAX ||
            new_plane_state->crtc_y > INT_MAX - (int32_t) new_plane_state->crtc_h) {
-               DRM_DEBUG_ATOMIC("[PLANE:%d:%s] invalid CRTC coordinates %ux%u+%d+%d\n",
-                                plane->base.id, plane->name,
-                                new_plane_state->crtc_w, new_plane_state->crtc_h,
-                                new_plane_state->crtc_x, new_plane_state->crtc_y);
+               drm_dbg_atomic(plane->dev,
+                              "[PLANE:%d:%s] invalid CRTC coordinates %ux%u+%d+%d\n",
+                              plane->base.id, plane->name,
+                              new_plane_state->crtc_w, new_plane_state->crtc_h,
+                              new_plane_state->crtc_x, new_plane_state->crtc_y);
                return -ERANGE;
        }
 
@@ -645,18 +655,19 @@ static int drm_atomic_plane_check(const struct drm_plane_state *old_plane_state,
            new_plane_state->src_x > fb_width - new_plane_state->src_w ||
            new_plane_state->src_h > fb_height ||
            new_plane_state->src_y > fb_height - new_plane_state->src_h) {
-               DRM_DEBUG_ATOMIC("[PLANE:%d:%s] invalid source coordinates "
-                                "%u.%06ux%u.%06u+%u.%06u+%u.%06u (fb %ux%u)\n",
-                                plane->base.id, plane->name,
-                                new_plane_state->src_w >> 16,
-                                ((new_plane_state->src_w & 0xffff) * 15625) >> 10,
-                                new_plane_state->src_h >> 16,
-                                ((new_plane_state->src_h & 0xffff) * 15625) >> 10,
-                                new_plane_state->src_x >> 16,
-                                ((new_plane_state->src_x & 0xffff) * 15625) >> 10,
-                                new_plane_state->src_y >> 16,
-                                ((new_plane_state->src_y & 0xffff) * 15625) >> 10,
-                                fb->width, fb->height);
+               drm_dbg_atomic(plane->dev,
+                              "[PLANE:%d:%s] invalid source coordinates "
+                              "%u.%06ux%u.%06u+%u.%06u+%u.%06u (fb %ux%u)\n",
+                              plane->base.id, plane->name,
+                              new_plane_state->src_w >> 16,
+                              ((new_plane_state->src_w & 0xffff) * 15625) >> 10,
+                              new_plane_state->src_h >> 16,
+                              ((new_plane_state->src_h & 0xffff) * 15625) >> 10,
+                              new_plane_state->src_x >> 16,
+                              ((new_plane_state->src_x & 0xffff) * 15625) >> 10,
+                              new_plane_state->src_y >> 16,
+                              ((new_plane_state->src_y & 0xffff) * 15625) >> 10,
+                              fb->width, fb->height);
                return -ENOSPC;
        }
 
@@ -671,9 +682,10 @@ static int drm_atomic_plane_check(const struct drm_plane_state *old_plane_state,
                    clips->y1 < 0 ||
                    clips->x2 > fb_width ||
                    clips->y2 > fb_height) {
-                       DRM_DEBUG_ATOMIC("[PLANE:%d:%s] invalid damage clip %d %d %d %d\n",
-                                        plane->base.id, plane->name, clips->x1,
-                                        clips->y1, clips->x2, clips->y2);
+                       drm_dbg_atomic(plane->dev,
+                                      "[PLANE:%d:%s] invalid damage clip %d %d %d %d\n",
+                                      plane->base.id, plane->name, clips->x1,
+                                      clips->y1, clips->x2, clips->y2);
                        return -EINVAL;
                }
                clips++;
@@ -681,8 +693,9 @@ static int drm_atomic_plane_check(const struct drm_plane_state *old_plane_state,
        }
 
        if (plane_switching_crtc(old_plane_state, new_plane_state)) {
-               DRM_DEBUG_ATOMIC("[PLANE:%d:%s] switching CRTC directly\n",
-                                plane->base.id, plane->name);
+               drm_dbg_atomic(plane->dev,
+                              "[PLANE:%d:%s] switching CRTC directly\n",
+                              plane->base.id, plane->name);
                return -EINVAL;
        }
 
@@ -846,8 +859,9 @@ drm_atomic_get_private_obj_state(struct drm_atomic_state *state,
 
        state->num_private_objs = num_objs;
 
-       DRM_DEBUG_ATOMIC("Added new private object %p state %p to %p\n",
-                        obj, obj_state, state);
+       drm_dbg_atomic(state->dev,
+                      "Added new private object %p state %p to %p\n",
+                      obj, obj_state, state);
 
        return obj_state;
 }
@@ -1027,7 +1041,7 @@ drm_atomic_get_connector_state(struct drm_atomic_state *state,
        state->connectors[index].ptr = connector;
        connector_state->state = state;
 
-       DRM_DEBUG_ATOMIC("Added [CONNECTOR:%d:%s] %p state to %p\n",
+       drm_dbg_atomic(connector->dev, "Added [CONNECTOR:%d:%s] %p state to %p\n",
                         connector->base.id, connector->name,
                         connector_state, state);
 
@@ -1160,8 +1174,9 @@ drm_atomic_add_encoder_bridges(struct drm_atomic_state *state,
        if (!encoder)
                return 0;
 
-       DRM_DEBUG_ATOMIC("Adding all bridges for [encoder:%d:%s] to %p\n",
-                        encoder->base.id, encoder->name, state);
+       drm_dbg_atomic(encoder->dev,
+                      "Adding all bridges for [encoder:%d:%s] to %p\n",
+                      encoder->base.id, encoder->name, state);
 
        drm_for_each_bridge_in_chain(encoder, bridge) {
                /* Skip bridges that don't implement the atomic state hooks. */
@@ -1213,8 +1228,9 @@ drm_atomic_add_affected_connectors(struct drm_atomic_state *state,
        if (ret)
                return ret;
 
-       DRM_DEBUG_ATOMIC("Adding all current connectors for [CRTC:%d:%s] to %p\n",
-                        crtc->base.id, crtc->name, state);
+       drm_dbg_atomic(crtc->dev,
+                      "Adding all current connectors for [CRTC:%d:%s] to %p\n",
+                      crtc->base.id, crtc->name, state);
 
        /*
         * Changed connectors are already in @state, so only need to look
@@ -1267,8 +1283,9 @@ drm_atomic_add_affected_planes(struct drm_atomic_state *state,
 
        WARN_ON(!drm_atomic_get_new_crtc_state(state, crtc));
 
-       DRM_DEBUG_ATOMIC("Adding all current planes for [CRTC:%d:%s] to %p\n",
-                        crtc->base.id, crtc->name, state);
+       drm_dbg_atomic(crtc->dev,
+                      "Adding all current planes for [CRTC:%d:%s] to %p\n",
+                      crtc->base.id, crtc->name, state);
 
        drm_for_each_plane_mask(plane, state->dev, old_crtc_state->plane_mask) {
                struct drm_plane_state *plane_state =
@@ -1308,7 +1325,7 @@ int drm_atomic_check_only(struct drm_atomic_state *state)
        unsigned int affected_crtc = 0;
        int i, ret = 0;
 
-       DRM_DEBUG_ATOMIC("checking %p\n", state);
+       drm_dbg_atomic(dev, "checking %p\n", state);
 
        for_each_new_crtc_in_state(state, crtc, new_crtc_state, i) {
                if (new_crtc_state->enable)
@@ -1318,8 +1335,8 @@ int drm_atomic_check_only(struct drm_atomic_state *state)
        for_each_oldnew_plane_in_state(state, plane, old_plane_state, new_plane_state, i) {
                ret = drm_atomic_plane_check(old_plane_state, new_plane_state);
                if (ret) {
-                       DRM_DEBUG_ATOMIC("[PLANE:%d:%s] atomic core check failed\n",
-                                        plane->base.id, plane->name);
+                       drm_dbg_atomic(dev, "[PLANE:%d:%s] atomic core check failed\n",
+                                      plane->base.id, plane->name);
                        return ret;
                }
        }
@@ -1327,8 +1344,8 @@ int drm_atomic_check_only(struct drm_atomic_state *state)
        for_each_oldnew_crtc_in_state(state, crtc, old_crtc_state, new_crtc_state, i) {
                ret = drm_atomic_crtc_check(old_crtc_state, new_crtc_state);
                if (ret) {
-                       DRM_DEBUG_ATOMIC("[CRTC:%d:%s] atomic core check failed\n",
-                                        crtc->base.id, crtc->name);
+                       drm_dbg_atomic(dev, "[CRTC:%d:%s] atomic core check failed\n",
+                                      crtc->base.id, crtc->name);
                        return ret;
                }
        }
@@ -1336,8 +1353,8 @@ int drm_atomic_check_only(struct drm_atomic_state *state)
        for_each_new_connector_in_state(state, conn, conn_state, i) {
                ret = drm_atomic_connector_check(conn, conn_state);
                if (ret) {
-                       DRM_DEBUG_ATOMIC("[CONNECTOR:%d:%s] atomic core check failed\n",
-                                        conn->base.id, conn->name);
+                       drm_dbg_atomic(dev, "[CONNECTOR:%d:%s] atomic core check failed\n",
+                                      conn->base.id, conn->name);
                        return ret;
                }
        }
@@ -1346,8 +1363,8 @@ int drm_atomic_check_only(struct drm_atomic_state *state)
                ret = config->funcs->atomic_check(state->dev, state);
 
                if (ret) {
-                       DRM_DEBUG_ATOMIC("atomic driver check for %p failed: %d\n",
-                                        state, ret);
+                       drm_dbg_atomic(dev, "atomic driver check for %p failed: %d\n",
+                                      state, ret);
                        return ret;
                }
        }
@@ -1355,8 +1372,8 @@ int drm_atomic_check_only(struct drm_atomic_state *state)
        if (!state->allow_modeset) {
                for_each_new_crtc_in_state(state, crtc, new_crtc_state, i) {
                        if (drm_atomic_crtc_needs_modeset(new_crtc_state)) {
-                               DRM_DEBUG_ATOMIC("[CRTC:%d:%s] requires full modeset\n",
-                                                crtc->base.id, crtc->name);
+                               drm_dbg_atomic(dev, "[CRTC:%d:%s] requires full modeset\n",
+                                              crtc->base.id, crtc->name);
                                return -EINVAL;
                        }
                }
@@ -1378,8 +1395,9 @@ int drm_atomic_check_only(struct drm_atomic_state *state)
         * so compositors know what's going on.
         */
        if (affected_crtc != requested_crtc) {
-               DRM_DEBUG_ATOMIC("driver added CRTC to commit: requested 0x%x, affected 0x%0x\n",
-                                requested_crtc, affected_crtc);
+               drm_dbg_atomic(dev,
+                              "driver added CRTC to commit: requested 0x%x, affected 0x%0x\n",
+                              requested_crtc, affected_crtc);
                WARN(!state->allow_modeset, "adding CRTC not allowed without modesets: requested 0x%x, affected 0x%0x\n",
                     requested_crtc, affected_crtc);
        }
@@ -1411,7 +1429,7 @@ int drm_atomic_commit(struct drm_atomic_state *state)
        if (ret)
                return ret;
 
-       DRM_DEBUG_ATOMIC("committing %p\n", state);
+       drm_dbg_atomic(state->dev, "committing %p\n", state);
 
        return config->funcs->atomic_commit(state->dev, state, false);
 }
@@ -1440,7 +1458,7 @@ int drm_atomic_nonblocking_commit(struct drm_atomic_state *state)
        if (ret)
                return ret;
 
-       DRM_DEBUG_ATOMIC("committing %p nonblocking\n", state);
+       drm_dbg_atomic(state->dev, "committing %p nonblocking\n", state);
 
        return config->funcs->atomic_commit(state->dev, state, true);
 }
@@ -1637,11 +1655,11 @@ void drm_atomic_print_new_state(const struct drm_atomic_state *state,
        int i;
 
        if (!p) {
-               DRM_ERROR("invalid drm printer\n");
+               drm_err(state->dev, "invalid drm printer\n");
                return;
        }
 
-       DRM_DEBUG_ATOMIC("checking %p\n", state);
+       drm_dbg_atomic(state->dev, "checking %p\n", state);
 
        for_each_new_plane_in_state(state, plane, plane_state, i)
                drm_atomic_plane_print_state(p, plane_state);