From patchwork Fri Jun 17 17:50:18 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Baryshkov X-Patchwork-Id: 12885862 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id C53C3C433EF for ; Fri, 17 Jun 2022 17:50:25 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id F025710E6A3; Fri, 17 Jun 2022 17:50:24 +0000 (UTC) Received: from mail-lf1-x12f.google.com (mail-lf1-x12f.google.com [IPv6:2a00:1450:4864:20::12f]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9CD6610E6A3 for ; Fri, 17 Jun 2022 17:50:23 +0000 (UTC) Received: by mail-lf1-x12f.google.com with SMTP id c4so7973180lfj.12 for ; Fri, 17 Jun 2022 10:50:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=v5Xfd/lShJ436Gkh8UHXXgQps7qSsu2XxGEcqIQNHeg=; b=wtB0Bo7MIsJ7+OPzpfl05X+sDYAE+gl8xK15W2twX4nyEyKCKgCt7fizZOsyqZGes7 VMe0bI0baS12/w9GMjCh6GoCsR7jsc4R+A6piCspN8IFwTigTwow1oNqqx/2uXWtrApg pOKTX+zmCDBGfP0Ll80Emf6jaOnnOcY/ko9Se+HGfgh3EAMZ34P+CQX1B3yg0A4SMuxc XF0toEgLfiu3GbcUsTKSa6w6KmQ4YOZxL2iark/0P9By6eCVVF0nqD6HL4EAV6OER0R0 emVdtdbCqacDKLAiX1Wt9SpeTAfRfcdPXHsYxanqdrqr318qLVe363/wG9mELFm/eF9n crkQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=v5Xfd/lShJ436Gkh8UHXXgQps7qSsu2XxGEcqIQNHeg=; b=Q7BbQh8DS49nocGHeDdvXMKcZS/kB6vK5G+5wp34oXYTllUdlZySA+cpbZ4zs9KHFj 4gf1yyku0uUF9W7KWePidggZEiDPqeuA14Gnf4dwi36dvLv2Q4sXLuPqoViRVZWX/ExT XaYmMLIXk/Ly+e67JmPQcIcxq68HzveMpMWZaIgK8Kupc+VGceY6sak2Ub2IjtGHu78x s/eH31LSSiHUiLmIsl06paVy/n1Y+kjD9DGHNlzIMNCf0lEmAeEqQagRIXv/gHc620LT /jA2wOibG5dRRIkzv2VuoExdBc0EBZgDLafgs8EkXPvrNpiD86vQlLZm7h6EPrKDu3jV 3J2Q== X-Gm-Message-State: AJIora+ffKJqh1xPySYZtxhPYTDCN8xwQhH9/7SoX4MpJHq3ucAtQLwk 7wuK7PE0Y/x/tCDzYv7ddcCbwg== X-Google-Smtp-Source: AGRyM1sVWbcs49gGGE8BJpLz9BHq37J9II5hNgIZISFkmv9Xdm/bGWIWiEiUnwNPcSZ1LXFS3UFuBQ== X-Received: by 2002:a05:6512:4015:b0:479:cb6:f8da with SMTP id br21-20020a056512401500b004790cb6f8damr6447901lfb.484.1655488221904; Fri, 17 Jun 2022 10:50:21 -0700 (PDT) Received: from eriador.lan ([37.153.55.125]) by smtp.gmail.com with ESMTPSA id y24-20020a199158000000b0047255d21128sm713399lfj.87.2022.06.17.10.50.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 Jun 2022 10:50:20 -0700 (PDT) From: Dmitry Baryshkov To: Rob Clark , Sean Paul , Abhinav Kumar Subject: [PATCH v3 1/3] drm/msm/mdp4: convert to drm_crtc_handle_vblank() Date: Fri, 17 Jun 2022 20:50:18 +0300 Message-Id: <20220617175020.1080118-1-dmitry.baryshkov@linaro.org> X-Mailer: git-send-email 2.35.1 MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: David Airlie , linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, Bjorn Andersson , Stephen Boyd , freedreno@lists.freedesktop.org Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Stop using deprecated drm_handle_vblank(), use drm_crtc_handle_vblank() instead. Reviewed-by: Abhinav Kumar Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/disp/mdp4/mdp4_irq.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/mdp4/mdp4_irq.c b/drivers/gpu/drm/msm/disp/mdp4/mdp4_irq.c index 4d49f3ba6a96..ddcdd5e87853 100644 --- a/drivers/gpu/drm/msm/disp/mdp4/mdp4_irq.c +++ b/drivers/gpu/drm/msm/disp/mdp4/mdp4_irq.c @@ -69,8 +69,7 @@ irqreturn_t mdp4_irq(struct msm_kms *kms) struct mdp_kms *mdp_kms = to_mdp_kms(kms); struct mdp4_kms *mdp4_kms = to_mdp4_kms(mdp_kms); struct drm_device *dev = mdp4_kms->dev; - struct msm_drm_private *priv = dev->dev_private; - unsigned int id; + struct drm_crtc *crtc; uint32_t status, enable; enable = mdp4_read(mdp4_kms, REG_MDP4_INTR_ENABLE); @@ -81,9 +80,9 @@ irqreturn_t mdp4_irq(struct msm_kms *kms) mdp_dispatch_irqs(mdp_kms, status); - for (id = 0; id < priv->num_crtcs; id++) - if (status & mdp4_crtc_vblank(priv->crtcs[id])) - drm_handle_vblank(dev, id); + drm_for_each_crtc(crtc, dev) + if (status & mdp4_crtc_vblank(crtc)) + drm_crtc_handle_vblank(crtc); return IRQ_HANDLED; } From patchwork Fri Jun 17 17:50:19 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Baryshkov X-Patchwork-Id: 12885864 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 4FB15C43334 for ; Fri, 17 Jun 2022 17:50:31 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id AC5E910E6A9; Fri, 17 Jun 2022 17:50:26 +0000 (UTC) Received: from mail-lf1-x136.google.com (mail-lf1-x136.google.com [IPv6:2a00:1450:4864:20::136]) by gabe.freedesktop.org (Postfix) with ESMTPS id 982B710E6A3 for ; Fri, 17 Jun 2022 17:50:24 +0000 (UTC) Received: by mail-lf1-x136.google.com with SMTP id p18so8032810lfr.1 for ; Fri, 17 Jun 2022 10:50:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ByYz0vZByrH5ZeGoDfGbZOJgTHhBJ8/LzLyyFMFujSk=; b=CKvz/GriIH+hEOT15P8Uh4F/FUDSVlCSm+i9tRYV/fjdnz4TFyeW7fbrHm1fqOS7jJ HG2M8wmSY1plXlfrzBSUzbDQPRahn8RSMQLKJ0vt2tP1Bt5cW0dWc/0LQa+8VF5Qt9CS bb/6AgCcuWDr5IEMJ/1VJTh7yvJ6OJU5YAwYHCYPFeMCcCWA+J1RTgtnhzWQdB9JCydW CA+V1N03UNuuKakVylvMQzWdYb7hmk02hGsuqesjLPzfwGLWjaN/wqa/cb+a2cQ6A8yF 59HhFhQPfdNQ4y+G2jF4OWG7yv/v/cP7AYqzej+PlJm3TjusswXr4oK6Aqv3YVCwNLk4 ORlg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ByYz0vZByrH5ZeGoDfGbZOJgTHhBJ8/LzLyyFMFujSk=; b=zsa+5mnIw8LJ6HPqtRW5O2Jl6/lJ1hytTO8bF0CuhA+PldIA5prDdwjmk37Hr3k+Hz OCHYjCOuRUc1RlxOeMnw8Ahf2XS+6lE815e9abH9sbF9q/3owZkL3I+eQZOQg9aN9yHp 9XG5QVzOZrKK7KFeZl+dgyeVZhpakxA6CwDDXUAHdvkE2GVrKcHzEwSjkWeMjHSK+XCx Q21iyAUINsVRIZhoL6V4AGOtNLepalKrK4fVO0hWRsno5IlaMiC9cPi8pTn6CnMYz5P2 hzPxyNxyT5sbCblML1Xkfvd+Usb8VkYpBcPluk3yh1Jk86fwgGTGy8XOS0D5K0n7eqve 0dYA== X-Gm-Message-State: AJIora+0yFD+0ANOY3YClVknD7l0emn78naiEO0haXotC6Pq7OZACXm1 3Jhy4/uZOjKaz9Zrr2FOiBBsGg== X-Google-Smtp-Source: AGRyM1tZhFrKVRy9m5OskQvHdrD2PyFdD3h0DVSSQJE/IcEpF+CX33+qcx9o1UVkt07CxgaPADFeug== X-Received: by 2002:a05:6512:108f:b0:479:48b0:b650 with SMTP id j15-20020a056512108f00b0047948b0b650mr6264516lfg.33.1655488222770; Fri, 17 Jun 2022 10:50:22 -0700 (PDT) Received: from eriador.lan ([37.153.55.125]) by smtp.gmail.com with ESMTPSA id y24-20020a199158000000b0047255d21128sm713399lfj.87.2022.06.17.10.50.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 Jun 2022 10:50:22 -0700 (PDT) From: Dmitry Baryshkov To: Rob Clark , Sean Paul , Abhinav Kumar Subject: [PATCH v3 2/3] drm/msm/mdp5: convert to drm_crtc_handle_vblank() Date: Fri, 17 Jun 2022 20:50:19 +0300 Message-Id: <20220617175020.1080118-2-dmitry.baryshkov@linaro.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220617175020.1080118-1-dmitry.baryshkov@linaro.org> References: <20220617175020.1080118-1-dmitry.baryshkov@linaro.org> MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: David Airlie , linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, Bjorn Andersson , Stephen Boyd , freedreno@lists.freedesktop.org Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Stop using deprecated drm_handle_vblank(), use drm_crtc_handle_vblank() instead. Reviewed-by: Abhinav Kumar Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/disp/mdp5/mdp5_irq.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/mdp5/mdp5_irq.c b/drivers/gpu/drm/msm/disp/mdp5/mdp5_irq.c index 9b4c8d92ff32..43443a435d59 100644 --- a/drivers/gpu/drm/msm/disp/mdp5/mdp5_irq.c +++ b/drivers/gpu/drm/msm/disp/mdp5/mdp5_irq.c @@ -82,8 +82,7 @@ irqreturn_t mdp5_irq(struct msm_kms *kms) struct mdp_kms *mdp_kms = to_mdp_kms(kms); struct mdp5_kms *mdp5_kms = to_mdp5_kms(mdp_kms); struct drm_device *dev = mdp5_kms->dev; - struct msm_drm_private *priv = dev->dev_private; - unsigned int id; + struct drm_crtc *crtc; uint32_t status, enable; enable = mdp5_read(mdp5_kms, REG_MDP5_INTR_EN); @@ -94,9 +93,9 @@ irqreturn_t mdp5_irq(struct msm_kms *kms) mdp_dispatch_irqs(mdp_kms, status); - for (id = 0; id < priv->num_crtcs; id++) - if (status & mdp5_crtc_vblank(priv->crtcs[id])) - drm_handle_vblank(dev, id); + drm_for_each_crtc(crtc, dev) + if (status & mdp5_crtc_vblank(crtc)) + drm_crtc_handle_vblank(crtc); return IRQ_HANDLED; } From patchwork Fri Jun 17 17:50:20 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Baryshkov X-Patchwork-Id: 12885863 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 7E413C43334 for ; Fri, 17 Jun 2022 17:50:28 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 52EE710E6A8; Fri, 17 Jun 2022 17:50:26 +0000 (UTC) Received: from mail-lf1-x136.google.com (mail-lf1-x136.google.com [IPv6:2a00:1450:4864:20::136]) by gabe.freedesktop.org (Postfix) with ESMTPS id CB5EE10E6A9 for ; Fri, 17 Jun 2022 17:50:25 +0000 (UTC) Received: by mail-lf1-x136.google.com with SMTP id h36so7982251lfv.9 for ; Fri, 17 Jun 2022 10:50:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=6HPiyEKWyVgYa7DfI+Bgdho1ktlismeKYV7+W7sDTdk=; b=EbbJqZi85VKK916+WF0witP1hruwdxOcvrvR8zP/cfcE5Pe0tCxxgVM3sy5X2veM6h chLwKqw9kSbUFVXuWIBFes8MP42jB481XYv/BYkF8zDnvQmq65+kcYXO5/uW2cTiGdkR GvEplmwm8tPEf0iabybMqWwI1AAfx7fvvEDlhHXcmuT8ZdNMClaEy751d65QI3cqGYnu JaFid2QqnMbj57uq17VkOR2hBueLa0Iwb3l8O8Ey8hqr1R911gDUVEjsTa8CqQ0P6uT9 e1c7ZIATRTVHNQKOp6mQLf0rCsoeah/w9TBP1J1VoMysmUuuVmIa2iJDYWdh4JbAkKFE M+FQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=6HPiyEKWyVgYa7DfI+Bgdho1ktlismeKYV7+W7sDTdk=; b=6urnkKOxI6kaUhMlsvu8dqTA9AokIzxsx54RiMEnmT7eRb+MzKAyYLXewNty4RuNvu uWDeOPn7VRH8yjVEzw+fPNhjrzjD1Ro1SWr3ag+Xt0NKYNUKP2MwrBCk8I5kIu4Ffkfc IJY3UaKx0gKSjLg0INQJq8bHDXGNg26ZKve/zb6UUaONEmEo/EOvwOH8JlineK1I3rif sepriyb5Xg0MDeHT6Dzye69hAuh5y02SgSTf0c8hQnjHgEw+cxE0op7s+WOflFqXJmP0 JoUGulmeUaGX8/2vPs6DsC/jgFDOvPqG6TB6X9p8QlAYOTjq6uxj15varRiVtYtLt5vy rA7Q== X-Gm-Message-State: AJIora/nZhE1HacipD90vs9fw7AFXuqvbyjvyCKtyEZGd3y81iBkEaCP dPPt6D2auaf+2rUQVStpCHEuDQ== X-Google-Smtp-Source: AGRyM1vHDr5NW0EkSK8xyrusw3yaj/TOoeeaThA5Sh0OWE2nM99la6oc8X96QTO9Yz1IlDBOmije+Q== X-Received: by 2002:a05:6512:3d27:b0:478:f60f:7e8a with SMTP id d39-20020a0565123d2700b00478f60f7e8amr6258612lfv.294.1655488224119; Fri, 17 Jun 2022 10:50:24 -0700 (PDT) Received: from eriador.lan ([37.153.55.125]) by smtp.gmail.com with ESMTPSA id y24-20020a199158000000b0047255d21128sm713399lfj.87.2022.06.17.10.50.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 Jun 2022 10:50:23 -0700 (PDT) From: Dmitry Baryshkov To: Rob Clark , Sean Paul , Abhinav Kumar Subject: [PATCH v3 3/3] drm/msm: stop storing the array of CRTCs in struct msm_drm_private Date: Fri, 17 Jun 2022 20:50:20 +0300 Message-Id: <20220617175020.1080118-3-dmitry.baryshkov@linaro.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220617175020.1080118-1-dmitry.baryshkov@linaro.org> References: <20220617175020.1080118-1-dmitry.baryshkov@linaro.org> MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kernel test robot , David Airlie , linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, Bjorn Andersson , Stephen Boyd , freedreno@lists.freedesktop.org Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Handling the array of CRTC duplicate the struct msm_drm_private duplicates a list of CRTCs in the drm_device. Drop it and use the existing list for CRTC enumeration. Reported-by: kernel test robot Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 2 +- drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c | 2 +- drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c | 2 +- drivers/gpu/drm/msm/msm_drv.c | 29 ++++++++++++------------ drivers/gpu/drm/msm/msm_drv.h | 3 +-- 5 files changed, 19 insertions(+), 19 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c index e23e2552e802..e79f0a8817ac 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c @@ -806,7 +806,7 @@ static int _dpu_kms_drm_obj_init(struct dpu_kms *dpu_kms) ret = PTR_ERR(crtc); return ret; } - priv->crtcs[priv->num_crtcs++] = crtc; + priv->num_crtcs++; } /* All CRTCs are compatible with all encoders */ diff --git a/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c b/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c index fb48c8c19ec3..7449c1693e45 100644 --- a/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c +++ b/drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c @@ -337,7 +337,7 @@ static int modeset_init(struct mdp4_kms *mdp4_kms) goto fail; } - priv->crtcs[priv->num_crtcs++] = crtc; + priv->num_crtcs++; } /* diff --git a/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c b/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c index 3d5621a68f85..36808990f840 100644 --- a/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c +++ b/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c @@ -497,7 +497,7 @@ static int modeset_init(struct mdp5_kms *mdp5_kms) DRM_DEV_ERROR(dev->dev, "failed to construct crtc %d (%d)\n", i, ret); goto fail; } - priv->crtcs[priv->num_crtcs++] = crtc; + priv->num_crtcs++; } /* diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c index 44485363f37a..29e508f69e19 100644 --- a/drivers/gpu/drm/msm/msm_drv.c +++ b/drivers/gpu/drm/msm/msm_drv.c @@ -149,7 +149,7 @@ static void msm_irq_uninstall(struct drm_device *dev) struct msm_vblank_work { struct work_struct work; - int crtc_id; + struct drm_crtc *crtc; bool enable; struct msm_drm_private *priv; }; @@ -162,15 +162,15 @@ static void vblank_ctrl_worker(struct work_struct *work) struct msm_kms *kms = priv->kms; if (vbl_work->enable) - kms->funcs->enable_vblank(kms, priv->crtcs[vbl_work->crtc_id]); + kms->funcs->enable_vblank(kms, vbl_work->crtc); else - kms->funcs->disable_vblank(kms, priv->crtcs[vbl_work->crtc_id]); + kms->funcs->disable_vblank(kms, vbl_work->crtc); kfree(vbl_work); } static int vblank_ctrl_queue_work(struct msm_drm_private *priv, - int crtc_id, bool enable) + struct drm_crtc *crtc, bool enable) { struct msm_vblank_work *vbl_work; @@ -180,7 +180,7 @@ static int vblank_ctrl_queue_work(struct msm_drm_private *priv, INIT_WORK(&vbl_work->work, vblank_ctrl_worker); - vbl_work->crtc_id = crtc_id; + vbl_work->crtc = crtc; vbl_work->enable = enable; vbl_work->priv = priv; @@ -354,6 +354,7 @@ static int msm_drm_init(struct device *dev, const struct drm_driver *drv) struct msm_drm_private *priv = dev_get_drvdata(dev); struct drm_device *ddev; struct msm_kms *kms; + struct drm_crtc *crtc; int ret, i; if (drm_firmware_drivers_only()) @@ -427,12 +428,14 @@ static int msm_drm_init(struct device *dev, const struct drm_driver *drv) ddev->mode_config.funcs = &mode_config_funcs; ddev->mode_config.helper_private = &mode_config_helper_funcs; - for (i = 0; i < priv->num_crtcs; i++) { + drm_for_each_crtc(crtc, ddev) { + i = drm_crtc_index(crtc); + /* initialize event thread */ - priv->event_thread[i].crtc_id = priv->crtcs[i]->base.id; + priv->event_thread[i].crtc = crtc; priv->event_thread[i].dev = ddev; priv->event_thread[i].worker = kthread_create_worker(0, - "crtc_event:%d", priv->event_thread[i].crtc_id); + "crtc_event:%d", priv->event_thread[i].crtc->base.id); if (IS_ERR(priv->event_thread[i].worker)) { ret = PTR_ERR(priv->event_thread[i].worker); DRM_DEV_ERROR(dev, "failed to create crtc_event kthread\n"); @@ -563,25 +566,23 @@ static void msm_postclose(struct drm_device *dev, struct drm_file *file) int msm_crtc_enable_vblank(struct drm_crtc *crtc) { struct drm_device *dev = crtc->dev; - unsigned int pipe = crtc->index; struct msm_drm_private *priv = dev->dev_private; struct msm_kms *kms = priv->kms; if (!kms) return -ENXIO; - drm_dbg_vbl(dev, "crtc=%u", pipe); - return vblank_ctrl_queue_work(priv, pipe, true); + drm_dbg_vbl(dev, "crtc=%u", crtc->base.id); + return vblank_ctrl_queue_work(priv, crtc, true); } void msm_crtc_disable_vblank(struct drm_crtc *crtc) { struct drm_device *dev = crtc->dev; - unsigned int pipe = crtc->index; struct msm_drm_private *priv = dev->dev_private; struct msm_kms *kms = priv->kms; if (!kms) return; - drm_dbg_vbl(dev, "crtc=%u", pipe); - vblank_ctrl_queue_work(priv, pipe, false); + drm_dbg_vbl(dev, "crtc=%u", crtc->base.id); + vblank_ctrl_queue_work(priv, crtc, false); } /* diff --git a/drivers/gpu/drm/msm/msm_drv.h b/drivers/gpu/drm/msm/msm_drv.h index 08388d742d65..0e98b6f161df 100644 --- a/drivers/gpu/drm/msm/msm_drv.h +++ b/drivers/gpu/drm/msm/msm_drv.h @@ -102,7 +102,7 @@ struct msm_display_topology { /* Commit/Event thread specific structure */ struct msm_drm_thread { struct drm_device *dev; - unsigned int crtc_id; + struct drm_crtc *crtc; struct kthread_worker *worker; }; @@ -178,7 +178,6 @@ struct msm_drm_private { struct workqueue_struct *wq; unsigned int num_crtcs; - struct drm_crtc *crtcs[MAX_CRTCS]; struct msm_drm_thread event_thread[MAX_CRTCS];