From mboxrd@z Thu Jan 1 00:00:00 1970 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 99929C433F5 for ; Mon, 30 May 2022 14:41:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:Cc :To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=5c/af9QCBFMiDlWNe3+XdyiaycfC7VtxgDVcRUis0Nw=; b=Fi/3SSbfPgyOB2 acoD6CgONDBwXuWmkLrNEYzZx0Q2vkadMPwmpQlJ7FengGDDQo0c9I4wzjJ4xo09uI0Rw0MZUsstq IrNkL9D6qqheex6eH2tZsyHe7O3BJqmRSbHjlLoa/48ezvueSokwdGRAcPR5eFVeChBuSPTesKuq6 iDhFN89uVa1wmSC4jFo9jrajKnIr0K13ec/ExmaoiUTzKQDCgiepnRqGhucxQEkU35gi6A0iCmIXy 6HZxyVHkitOEj0MDU+v0es2eZB+4doyJ42zZX+dcdfUCJTZz1GTYxxKBveu7MAyCg9EUVAT5th4Rp EauYV5fzUGowZKM3Yyzg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nvgad-007JYA-Ez; Mon, 30 May 2022 14:41:51 +0000 Received: from mail-wr1-x432.google.com ([2a00:1450:4864:20::432]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nvgJe-007BQw-68 for linux-mediatek@lists.infradead.org; Mon, 30 May 2022 14:24:20 +0000 Received: by mail-wr1-x432.google.com with SMTP id k16so10530298wrg.7 for ; Mon, 30 May 2022 07:24:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=rUAWdJ1Rf6hO8ecNBUpnATX0ltMJMJR8PSAH4KO8bJM=; b=LXAGdGTLAayi/VD6RlJh8cDSac2FGSYcJt/uGESSMobfyQL1XbIq81Ywa+yllK/x2E sJAS1Rtf5zCjVFmHW4pfy9Tm5dcA5ZVlkEAgvw2NGpz9WZyyL1fOivsSvW9ytr3I57tI +6fjo5tQhXgr2qaexjNggNiuq6T69aTHW9odw2YHwZzw+W6m95HcY+q9sBmorz9c0xYk bA0W/CuhgZRg2uQS5Mkr9/Y/bZpmCfybLP6mrXZw7koQ3b+VufvplHhXB5NVUCdaMUoW TCkVYinu9AA7khJHktcQJTHSDsPEUzbWColgtl13bs4lm9K4PQIRKfICpI7XOPwBSQPj 1kIw== 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=rUAWdJ1Rf6hO8ecNBUpnATX0ltMJMJR8PSAH4KO8bJM=; b=uI/AqaQF0iEBtFwc6xVw3wI/VJhv0l+mAmw0SCprrexoUgMIxjpvFoIkbGSKLXerJc EYkf1bGNxUef1itU7l339m8D45utUn7PVFUdpyjqzphSmk74PeZMLEmABbpr5Q8Jjs6F Sr9aOoJa56FP0GXj7Ld2Jh4D3knnIsId547WSCfPOweLIdY94oUzm2y6lxqFPZGadLqY q8JWEOL+mexCBYhCk/et4I7lFa3ykyFCWKje/FweILZ94ai2eyJkdLJI75EUHozI0X6v 7ZYKAdyi34+hLONd/kFKOjOziNB3VkORjloXhgKWnau2a8Bk1ZiTMQSG9225/lZldP5e I/Bw== X-Gm-Message-State: AOAM531ZQOR/6lLUmPr9qd/FbhWWXOTtyGk9j0tBCqnPloPVcH8o3KSP 019gspDDM1K32iRkdr7xEUr/dw== X-Google-Smtp-Source: ABdhPJwUdn2UEohzLhlkvTp89uivSBFAQcrCfQrdg/myp0CdGWHmaAJLOG8f0NAC612sXpmZ9kB+sw== X-Received: by 2002:a05:6000:1288:b0:210:154:ea50 with SMTP id f8-20020a056000128800b002100154ea50mr21132673wrx.213.1653920656629; Mon, 30 May 2022 07:24:16 -0700 (PDT) Received: from localhost.localdomain ([88.160.162.107]) by smtp.gmail.com with ESMTPSA id y4-20020a056000168400b0020d10a249eesm9134310wrd.13.2022.05.30.07.24.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 30 May 2022 07:24:15 -0700 (PDT) From: Fabien Parent To: Chun-Kuang Hu , Philipp Zabel , David Airlie , Daniel Vetter , Matthias Brugger Cc: Fabien Parent , dri-devel@lists.freedesktop.org, linux-mediatek@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH] drm/mediatek: fix crtc index computation Date: Mon, 30 May 2022 16:24:07 +0200 Message-Id: <20220530142407.781187-1-fparent@baylibre.com> X-Mailer: git-send-email 2.36.1 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220530_072418_302084_6C4CDF3B X-CRM114-Status: GOOD ( 13.11 ) X-BeenThere: linux-mediatek@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "Linux-mediatek" Errors-To: linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org The code always assume that the main path is enabled, which is not always the case. When the main path is not enabled, the CRTC index of the ext path is incorrect which makes the secondary path not usable. Fix the CRTC index calculation. Signed-off-by: Fabien Parent --- drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c | 46 +++++++++++++++------ 1 file changed, 34 insertions(+), 12 deletions(-) diff --git a/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c b/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c index 5d7504a72b11..6f2abfc608fb 100644 --- a/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c +++ b/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c @@ -430,25 +430,47 @@ int mtk_ddp_comp_get_id(struct device_node *node, return -EINVAL; } +static bool mtk_drm_comp_is_enabled(struct drm_device *drm, + const enum mtk_ddp_comp_id *path, + unsigned int path_len) +{ + struct mtk_drm_private *priv = drm->dev_private; + + return path && path_len && !!priv->comp_node[path[path_len - 1]]; +} + unsigned int mtk_drm_find_possible_crtc_by_comp(struct drm_device *drm, struct device *dev) { struct mtk_drm_private *private = drm->dev_private; - unsigned int ret = 0; + unsigned int index = 0; - if (mtk_drm_find_comp_in_ddp(dev, private->data->main_path, private->data->main_len, + if (mtk_drm_find_comp_in_ddp(dev, private->data->main_path, + private->data->main_len, private->ddp_comp)) - ret = BIT(0); - else if (mtk_drm_find_comp_in_ddp(dev, private->data->ext_path, - private->data->ext_len, private->ddp_comp)) - ret = BIT(1); - else if (mtk_drm_find_comp_in_ddp(dev, private->data->third_path, - private->data->third_len, private->ddp_comp)) - ret = BIT(2); - else - DRM_INFO("Failed to find comp in ddp table\n"); + return BIT(index); + + if (mtk_drm_comp_is_enabled(drm, private->data->main_path, + private->data->main_len)) + index++; - return ret; + if (mtk_drm_find_comp_in_ddp(dev, private->data->ext_path, + private->data->ext_len, + private->ddp_comp)) + return BIT(index); + + if (mtk_drm_comp_is_enabled(drm, private->data->ext_path, + private->data->ext_len)) + index++; + + if (mtk_drm_find_comp_in_ddp(dev, private->data->third_path, + private->data->third_len, + private->ddp_comp)) + return BIT(index); + + DRM_INFO("Failed to find comp in ddp table\n"); + + return 0; } int mtk_ddp_comp_init(struct device_node *node, struct mtk_ddp_comp *comp, -- 2.36.1 _______________________________________________ Linux-mediatek mailing list Linux-mediatek@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-mediatek From mboxrd@z Thu Jan 1 00:00:00 1970 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 2AF71C433F5 for ; Mon, 30 May 2022 14:42:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:Cc :To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=ru5Ev5Hsn1elD890Ilem9SQ3Ez8UXlAq6fIP6czT07k=; b=yBuTtGFL/KIdWs 1yLS7W3vaiRkgG2ghMpzGplm7730MhyOT8e7tb/dVG+q2/K7xKiXSqwBzUMCeqlbNJ6jvZgvLawAy ZC9HKNTtOADDwy+vPpmEAF+Bc34tNv/YMwoP0935jr4eDUCNs0JMN3bWbkYfbkN1sx3KthEIi6fLO WICTT0j2sjvMWxkos+Rb5SwGj+bc4Cnj/aGG/e8l81GUA/3q6lU2leBUzSIarPvwbPI2PwxlBINqK 18EyhM0MoVFwN69+sIWlDyqK8zWWhy5IHu+6TD++sBpjpSj1Q3PHiRI74WXFdIlOCS0MbSA0OztDU dBg3AGrDrKuocbqTL/4w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nvga1-007JIj-Lc; Mon, 30 May 2022 14:41:13 +0000 Received: from mail-wr1-x435.google.com ([2a00:1450:4864:20::435]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nvgJe-007BQv-40 for linux-arm-kernel@lists.infradead.org; Mon, 30 May 2022 14:24:20 +0000 Received: by mail-wr1-x435.google.com with SMTP id q7so3902661wrg.5 for ; Mon, 30 May 2022 07:24:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=rUAWdJ1Rf6hO8ecNBUpnATX0ltMJMJR8PSAH4KO8bJM=; b=LXAGdGTLAayi/VD6RlJh8cDSac2FGSYcJt/uGESSMobfyQL1XbIq81Ywa+yllK/x2E sJAS1Rtf5zCjVFmHW4pfy9Tm5dcA5ZVlkEAgvw2NGpz9WZyyL1fOivsSvW9ytr3I57tI +6fjo5tQhXgr2qaexjNggNiuq6T69aTHW9odw2YHwZzw+W6m95HcY+q9sBmorz9c0xYk bA0W/CuhgZRg2uQS5Mkr9/Y/bZpmCfybLP6mrXZw7koQ3b+VufvplHhXB5NVUCdaMUoW TCkVYinu9AA7khJHktcQJTHSDsPEUzbWColgtl13bs4lm9K4PQIRKfICpI7XOPwBSQPj 1kIw== 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=rUAWdJ1Rf6hO8ecNBUpnATX0ltMJMJR8PSAH4KO8bJM=; b=EU/VH9cgcVlOew4UhR8Fw8qG1yEJ3gZ95ynlhAsgZ6EV8Y5q0Vq2jY6G2+RIihXW+8 vZquNwU2M8t1dAyrCO2v7KmXYw+5HJ83/kGm3dCnJIJf1baKkcOlOlLV+qbmSnTlF4qG 94u/KKpR4m3bbt305l6nNl5wCwy9X5LnXe4ZvbJF1qPiJgfgruVX9Cko91JrwBtK/FJr yfze9sg9Dvrt7RWREkOrOvj64MMDU/GH1qMiJ+DzBnMFS35T5ennbVdCS6LpPXELpimY SMyzFHF09P7NrqPZCMoKPkdU4r/dSxUBTS5Gz1M+mP6d48wTkcfZxe3eTtd+0Jc1Vl58 Hi7g== X-Gm-Message-State: AOAM532UjdrY4TemuZMX+8x4i48+LsU+/NffD8b5HFwMcJAvrbwIP1KQ ewCpzewkjgkYLqa8sVp3YAe4Iw== X-Google-Smtp-Source: ABdhPJwUdn2UEohzLhlkvTp89uivSBFAQcrCfQrdg/myp0CdGWHmaAJLOG8f0NAC612sXpmZ9kB+sw== X-Received: by 2002:a05:6000:1288:b0:210:154:ea50 with SMTP id f8-20020a056000128800b002100154ea50mr21132673wrx.213.1653920656629; Mon, 30 May 2022 07:24:16 -0700 (PDT) Received: from localhost.localdomain ([88.160.162.107]) by smtp.gmail.com with ESMTPSA id y4-20020a056000168400b0020d10a249eesm9134310wrd.13.2022.05.30.07.24.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 30 May 2022 07:24:15 -0700 (PDT) From: Fabien Parent To: Chun-Kuang Hu , Philipp Zabel , David Airlie , Daniel Vetter , Matthias Brugger Cc: Fabien Parent , dri-devel@lists.freedesktop.org, linux-mediatek@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH] drm/mediatek: fix crtc index computation Date: Mon, 30 May 2022 16:24:07 +0200 Message-Id: <20220530142407.781187-1-fparent@baylibre.com> X-Mailer: git-send-email 2.36.1 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220530_072418_200649_DF505747 X-CRM114-Status: GOOD ( 14.43 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org The code always assume that the main path is enabled, which is not always the case. When the main path is not enabled, the CRTC index of the ext path is incorrect which makes the secondary path not usable. Fix the CRTC index calculation. Signed-off-by: Fabien Parent --- drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c | 46 +++++++++++++++------ 1 file changed, 34 insertions(+), 12 deletions(-) diff --git a/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c b/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c index 5d7504a72b11..6f2abfc608fb 100644 --- a/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c +++ b/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c @@ -430,25 +430,47 @@ int mtk_ddp_comp_get_id(struct device_node *node, return -EINVAL; } +static bool mtk_drm_comp_is_enabled(struct drm_device *drm, + const enum mtk_ddp_comp_id *path, + unsigned int path_len) +{ + struct mtk_drm_private *priv = drm->dev_private; + + return path && path_len && !!priv->comp_node[path[path_len - 1]]; +} + unsigned int mtk_drm_find_possible_crtc_by_comp(struct drm_device *drm, struct device *dev) { struct mtk_drm_private *private = drm->dev_private; - unsigned int ret = 0; + unsigned int index = 0; - if (mtk_drm_find_comp_in_ddp(dev, private->data->main_path, private->data->main_len, + if (mtk_drm_find_comp_in_ddp(dev, private->data->main_path, + private->data->main_len, private->ddp_comp)) - ret = BIT(0); - else if (mtk_drm_find_comp_in_ddp(dev, private->data->ext_path, - private->data->ext_len, private->ddp_comp)) - ret = BIT(1); - else if (mtk_drm_find_comp_in_ddp(dev, private->data->third_path, - private->data->third_len, private->ddp_comp)) - ret = BIT(2); - else - DRM_INFO("Failed to find comp in ddp table\n"); + return BIT(index); + + if (mtk_drm_comp_is_enabled(drm, private->data->main_path, + private->data->main_len)) + index++; - return ret; + if (mtk_drm_find_comp_in_ddp(dev, private->data->ext_path, + private->data->ext_len, + private->ddp_comp)) + return BIT(index); + + if (mtk_drm_comp_is_enabled(drm, private->data->ext_path, + private->data->ext_len)) + index++; + + if (mtk_drm_find_comp_in_ddp(dev, private->data->third_path, + private->data->third_len, + private->ddp_comp)) + return BIT(index); + + DRM_INFO("Failed to find comp in ddp table\n"); + + return 0; } int mtk_ddp_comp_init(struct device_node *node, struct mtk_ddp_comp *comp, -- 2.36.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel From mboxrd@z Thu Jan 1 00:00:00 1970 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id D32C2C433F5 for ; Mon, 30 May 2022 15:23:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238936AbiE3PXr (ORCPT ); Mon, 30 May 2022 11:23:47 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44718 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239582AbiE3PXd (ORCPT ); Mon, 30 May 2022 11:23:33 -0400 Received: from mail-wr1-x435.google.com (mail-wr1-x435.google.com [IPv6:2a00:1450:4864:20::435]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3941913392B for ; Mon, 30 May 2022 07:24:19 -0700 (PDT) Received: by mail-wr1-x435.google.com with SMTP id s24so7546705wrb.10 for ; Mon, 30 May 2022 07:24:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=rUAWdJ1Rf6hO8ecNBUpnATX0ltMJMJR8PSAH4KO8bJM=; b=LXAGdGTLAayi/VD6RlJh8cDSac2FGSYcJt/uGESSMobfyQL1XbIq81Ywa+yllK/x2E sJAS1Rtf5zCjVFmHW4pfy9Tm5dcA5ZVlkEAgvw2NGpz9WZyyL1fOivsSvW9ytr3I57tI +6fjo5tQhXgr2qaexjNggNiuq6T69aTHW9odw2YHwZzw+W6m95HcY+q9sBmorz9c0xYk bA0W/CuhgZRg2uQS5Mkr9/Y/bZpmCfybLP6mrXZw7koQ3b+VufvplHhXB5NVUCdaMUoW TCkVYinu9AA7khJHktcQJTHSDsPEUzbWColgtl13bs4lm9K4PQIRKfICpI7XOPwBSQPj 1kIw== 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=rUAWdJ1Rf6hO8ecNBUpnATX0ltMJMJR8PSAH4KO8bJM=; b=wguXXSstmbFqMlC4UYsrOBnM7Ct/0i1T4ExsHwq4UCzo2CMyYeQifTeXAiN23Zc9j7 x3Zb+2YITWhxm+az/ZVVNmCy+0kdnPvaqcGpEO0jKyKoRBHEdnV2xCuBiyFhe1kM5Srb A12KykUZUVucP2qqwYdJMH2KeinTqFtdMlfsyD2GrLEh8mnoXQa4x+Yhi8+4YhEc6d28 LKcyAaAmfyEe3dfFVGNP1v1O8e2JBrvPVb3UDPNfA0Y1yVgkeelKpAf6Bd2I+Xn9k29O JC2B1GCICPqV7FPup+lVAOi4IXcvc1d4wVFq5yCswVuZeZ7WjbeOvZhrRxVpmHGxU4/V 7JGg== X-Gm-Message-State: AOAM53226kiCf7XeZlriR/g1XWlIC8N5M1PQDMYT0WNYHces6cD74CKl q2s45J22AfLlzyd1XcrzugiNPw== X-Google-Smtp-Source: ABdhPJwUdn2UEohzLhlkvTp89uivSBFAQcrCfQrdg/myp0CdGWHmaAJLOG8f0NAC612sXpmZ9kB+sw== X-Received: by 2002:a05:6000:1288:b0:210:154:ea50 with SMTP id f8-20020a056000128800b002100154ea50mr21132673wrx.213.1653920656629; Mon, 30 May 2022 07:24:16 -0700 (PDT) Received: from localhost.localdomain ([88.160.162.107]) by smtp.gmail.com with ESMTPSA id y4-20020a056000168400b0020d10a249eesm9134310wrd.13.2022.05.30.07.24.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 30 May 2022 07:24:15 -0700 (PDT) From: Fabien Parent To: Chun-Kuang Hu , Philipp Zabel , David Airlie , Daniel Vetter , Matthias Brugger Cc: Fabien Parent , dri-devel@lists.freedesktop.org, linux-mediatek@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH] drm/mediatek: fix crtc index computation Date: Mon, 30 May 2022 16:24:07 +0200 Message-Id: <20220530142407.781187-1-fparent@baylibre.com> X-Mailer: git-send-email 2.36.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The code always assume that the main path is enabled, which is not always the case. When the main path is not enabled, the CRTC index of the ext path is incorrect which makes the secondary path not usable. Fix the CRTC index calculation. Signed-off-by: Fabien Parent --- drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c | 46 +++++++++++++++------ 1 file changed, 34 insertions(+), 12 deletions(-) diff --git a/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c b/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c index 5d7504a72b11..6f2abfc608fb 100644 --- a/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c +++ b/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c @@ -430,25 +430,47 @@ int mtk_ddp_comp_get_id(struct device_node *node, return -EINVAL; } +static bool mtk_drm_comp_is_enabled(struct drm_device *drm, + const enum mtk_ddp_comp_id *path, + unsigned int path_len) +{ + struct mtk_drm_private *priv = drm->dev_private; + + return path && path_len && !!priv->comp_node[path[path_len - 1]]; +} + unsigned int mtk_drm_find_possible_crtc_by_comp(struct drm_device *drm, struct device *dev) { struct mtk_drm_private *private = drm->dev_private; - unsigned int ret = 0; + unsigned int index = 0; - if (mtk_drm_find_comp_in_ddp(dev, private->data->main_path, private->data->main_len, + if (mtk_drm_find_comp_in_ddp(dev, private->data->main_path, + private->data->main_len, private->ddp_comp)) - ret = BIT(0); - else if (mtk_drm_find_comp_in_ddp(dev, private->data->ext_path, - private->data->ext_len, private->ddp_comp)) - ret = BIT(1); - else if (mtk_drm_find_comp_in_ddp(dev, private->data->third_path, - private->data->third_len, private->ddp_comp)) - ret = BIT(2); - else - DRM_INFO("Failed to find comp in ddp table\n"); + return BIT(index); + + if (mtk_drm_comp_is_enabled(drm, private->data->main_path, + private->data->main_len)) + index++; - return ret; + if (mtk_drm_find_comp_in_ddp(dev, private->data->ext_path, + private->data->ext_len, + private->ddp_comp)) + return BIT(index); + + if (mtk_drm_comp_is_enabled(drm, private->data->ext_path, + private->data->ext_len)) + index++; + + if (mtk_drm_find_comp_in_ddp(dev, private->data->third_path, + private->data->third_len, + private->ddp_comp)) + return BIT(index); + + DRM_INFO("Failed to find comp in ddp table\n"); + + return 0; } int mtk_ddp_comp_init(struct device_node *node, struct mtk_ddp_comp *comp, -- 2.36.1 From mboxrd@z Thu Jan 1 00:00:00 1970 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 340E4C433EF for ; Tue, 31 May 2022 07:41:36 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id D6DE810F465; Tue, 31 May 2022 07:41:23 +0000 (UTC) Received: from mail-wr1-x42e.google.com (mail-wr1-x42e.google.com [IPv6:2a00:1450:4864:20::42e]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1F25410E53E for ; Mon, 30 May 2022 14:24:18 +0000 (UTC) Received: by mail-wr1-x42e.google.com with SMTP id t6so14887938wra.4 for ; Mon, 30 May 2022 07:24:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=rUAWdJ1Rf6hO8ecNBUpnATX0ltMJMJR8PSAH4KO8bJM=; b=LXAGdGTLAayi/VD6RlJh8cDSac2FGSYcJt/uGESSMobfyQL1XbIq81Ywa+yllK/x2E sJAS1Rtf5zCjVFmHW4pfy9Tm5dcA5ZVlkEAgvw2NGpz9WZyyL1fOivsSvW9ytr3I57tI +6fjo5tQhXgr2qaexjNggNiuq6T69aTHW9odw2YHwZzw+W6m95HcY+q9sBmorz9c0xYk bA0W/CuhgZRg2uQS5Mkr9/Y/bZpmCfybLP6mrXZw7koQ3b+VufvplHhXB5NVUCdaMUoW TCkVYinu9AA7khJHktcQJTHSDsPEUzbWColgtl13bs4lm9K4PQIRKfICpI7XOPwBSQPj 1kIw== 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=rUAWdJ1Rf6hO8ecNBUpnATX0ltMJMJR8PSAH4KO8bJM=; b=b1gZZVKdXdEpNRQHlB/ddjOwC2QwgCMOTfos1W5ghBPjuYBbRyvwyhPlCV2U+bljFj lcGe+Z6XRfg9ISfpww8cXMVe78KojkaSXgsDOmIABeCbbZO4PT0TPaAPbt2cO+aOkSDo LB7bjpBFFj3Tw+GBnu4oEulFULcQ2h9y/Z9TzkEtTQP7zbJx4c9L6NYZ8c6qELCHm6w3 kp1GRSRmjyskQNNtUBaPjrgceD4F/8Lmr8U4MShCWO0Bh5dtT/bcOPYJxcopknQg6Uzn l5zVWMHND5GBxTLrUPEE7hvi14UnxGaP67claR8qwiCdRTDoJNb2mCMFRTZp4iKu3fh1 qOxQ== X-Gm-Message-State: AOAM530Ekb/Gd7LpSb4FBUKNJzKxLp8kOFmcdIII7eE6GhQfkOWIKsTz Y6rxQlN0IC29JwGqNovv5q77+Q== X-Google-Smtp-Source: ABdhPJwUdn2UEohzLhlkvTp89uivSBFAQcrCfQrdg/myp0CdGWHmaAJLOG8f0NAC612sXpmZ9kB+sw== X-Received: by 2002:a05:6000:1288:b0:210:154:ea50 with SMTP id f8-20020a056000128800b002100154ea50mr21132673wrx.213.1653920656629; Mon, 30 May 2022 07:24:16 -0700 (PDT) Received: from localhost.localdomain ([88.160.162.107]) by smtp.gmail.com with ESMTPSA id y4-20020a056000168400b0020d10a249eesm9134310wrd.13.2022.05.30.07.24.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 30 May 2022 07:24:15 -0700 (PDT) From: Fabien Parent To: Chun-Kuang Hu , Philipp Zabel , David Airlie , Daniel Vetter , Matthias Brugger Subject: [PATCH] drm/mediatek: fix crtc index computation Date: Mon, 30 May 2022 16:24:07 +0200 Message-Id: <20220530142407.781187-1-fparent@baylibre.com> X-Mailer: git-send-email 2.36.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Mailman-Approved-At: Tue, 31 May 2022 07:41:20 +0000 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: Fabien Parent , linux-mediatek@lists.infradead.org, linux-arm-kernel@lists.infradead.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" The code always assume that the main path is enabled, which is not always the case. When the main path is not enabled, the CRTC index of the ext path is incorrect which makes the secondary path not usable. Fix the CRTC index calculation. Signed-off-by: Fabien Parent --- drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c | 46 +++++++++++++++------ 1 file changed, 34 insertions(+), 12 deletions(-) diff --git a/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c b/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c index 5d7504a72b11..6f2abfc608fb 100644 --- a/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c +++ b/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c @@ -430,25 +430,47 @@ int mtk_ddp_comp_get_id(struct device_node *node, return -EINVAL; } +static bool mtk_drm_comp_is_enabled(struct drm_device *drm, + const enum mtk_ddp_comp_id *path, + unsigned int path_len) +{ + struct mtk_drm_private *priv = drm->dev_private; + + return path && path_len && !!priv->comp_node[path[path_len - 1]]; +} + unsigned int mtk_drm_find_possible_crtc_by_comp(struct drm_device *drm, struct device *dev) { struct mtk_drm_private *private = drm->dev_private; - unsigned int ret = 0; + unsigned int index = 0; - if (mtk_drm_find_comp_in_ddp(dev, private->data->main_path, private->data->main_len, + if (mtk_drm_find_comp_in_ddp(dev, private->data->main_path, + private->data->main_len, private->ddp_comp)) - ret = BIT(0); - else if (mtk_drm_find_comp_in_ddp(dev, private->data->ext_path, - private->data->ext_len, private->ddp_comp)) - ret = BIT(1); - else if (mtk_drm_find_comp_in_ddp(dev, private->data->third_path, - private->data->third_len, private->ddp_comp)) - ret = BIT(2); - else - DRM_INFO("Failed to find comp in ddp table\n"); + return BIT(index); + + if (mtk_drm_comp_is_enabled(drm, private->data->main_path, + private->data->main_len)) + index++; - return ret; + if (mtk_drm_find_comp_in_ddp(dev, private->data->ext_path, + private->data->ext_len, + private->ddp_comp)) + return BIT(index); + + if (mtk_drm_comp_is_enabled(drm, private->data->ext_path, + private->data->ext_len)) + index++; + + if (mtk_drm_find_comp_in_ddp(dev, private->data->third_path, + private->data->third_len, + private->ddp_comp)) + return BIT(index); + + DRM_INFO("Failed to find comp in ddp table\n"); + + return 0; } int mtk_ddp_comp_init(struct device_node *node, struct mtk_ddp_comp *comp, -- 2.36.1