Received: by 2002:a05:7412:da14:b0:e2:908c:2ebd with SMTP id fe20csp652020rdb; Fri, 6 Oct 2023 14:39:15 -0700 (PDT) X-Google-Smtp-Source: AGHT+IF+JlQXg7LFdWvNtYgheFCFqFNNJ+4MWqrMFfyn0RG4ZYRWuGXu2ejd4LgQJaidecbJSRI3 X-Received: by 2002:a05:6358:618c:b0:145:6e16:fa86 with SMTP id w12-20020a056358618c00b001456e16fa86mr11417996rww.22.1696628355279; Fri, 06 Oct 2023 14:39:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1696628355; cv=none; d=google.com; s=arc-20160816; b=uHFSeu52Mkf0vGkyfpJbdinHOLlvVnTCrwdxuHbdU2zDt6VbqFRPz2Y8lAEOUMzm51 0FaocZ9XszpE6NLU9rwAevL6o4nq1p+TTiwvmM2t2OOTOfCcapsgQkyg8VDpyYZWXB7a L0AA/4SmgTOrIPWRbAJ5GFOePY4m0EKgYHtBokmDtW5Y7O8rvK2TRJf4LSL1a/Ujxidp 2tBAU9WE1M5Sh5lx/4jT1Uk1UQ0zElmkY23g0zmykE7xhaUxzZBoCej7oNAtwXHcFAue PF7uISxVBNiP6PSP8SO93dvoujROWE1dzV1tjvF6O3LbwKmQyuD6dIT6udRa8cIpp0Cr m3ug== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=rSfOOEAHUp7IkiL3whg3HprH49cBXOFwODO14gYbgrY=; fh=WdvorNt9W2LCUPiGPsn75/bW5381IkpXRxF82JgZV7c=; b=Ex2itRqX4j5Sh54BEmaWXa03tIfySufYQRQjLpxKWe+DjMREamEUibl77feBS1+gw7 dizbd23EyB48czLEC5DAWM0oG57kZhFtIgLjabK5TzBlHlGdBuLKdlQkbN/sOt5xLAvk erU+lnlGAjUACnoeIALt5kCZl/PfI1kq9c/RXM1qj+/mGpNhhObay+TvEYWrjpVDkkew 3+M8MYc31DUR21HfaIZP5XPfnhFY/vMIsQf1Dpu73msyQkUurI6J0IImfYUuQzIevSAR uZ1PjXFArNMcM9VW6YjmXFspUEzAsB3Xdb0Yc26QY4sVBGAlfILVHlo9jVqaGMIXucES e1QQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=ZqLCq6ps; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Return-Path: Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id c75-20020a63354e000000b005852a35aff4si4304285pga.227.2023.10.06.14.39.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Oct 2023 14:39:15 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=ZqLCq6ps; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 2BF0A826767E; Fri, 6 Oct 2023 14:39:14 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233709AbjJFVjH (ORCPT + 99 others); Fri, 6 Oct 2023 17:39:07 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54152 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233697AbjJFVjE (ORCPT ); Fri, 6 Oct 2023 17:39:04 -0400 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3C876F9; Fri, 6 Oct 2023 14:39:01 -0700 (PDT) Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 396LOKCt002749; Fri, 6 Oct 2023 21:38:52 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-type; s=qcppdkim1; bh=rSfOOEAHUp7IkiL3whg3HprH49cBXOFwODO14gYbgrY=; b=ZqLCq6psImuaZ4flu0qJWZQfznqFsEphhGOmth2/BQwl93NGK6LBe3eVfEt+liDQ3zOc jQGkMYgshmUIOd+eAfj1lqZ0+9MvN5YYp5rc2hh4Dpg2eYrbKgZ9tan4Q5eeJtjONuo7 Gd8myJe1cnwc5TdVAAVSZXIuPAtZIPptpxIbNHTp4aANE+DCU8FhKot00dnsFiCjoKg6 an+t7wDBHnPFQxqNZCx2utkcfoQkJ/W0C34+3JzCNh5FSBk8fCK0/2MT31k5I50I8775 kzhD0HWR79RelKW+Q7uv4u72gQbA60fHLQJlD0YFv+CHjmDs1V4/LP0t44TABGV1t1F3 Sw== Received: from nalasppmta01.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3tjnddgnke-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 06 Oct 2023 21:38:52 +0000 Received: from nalasex01a.na.qualcomm.com (nalasex01a.na.qualcomm.com [10.47.209.196]) by NALASPPMTA01.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id 396LcoeK026415 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 6 Oct 2023 21:38:50 GMT Received: from khsieh-linux1.qualcomm.com (10.80.80.8) by nalasex01a.na.qualcomm.com (10.47.209.196) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.36; Fri, 6 Oct 2023 14:38:50 -0700 From: Kuogee Hsieh To: , , , , , , , , , , CC: Kuogee Hsieh , , , , , , , Subject: [PATCH v6 1/7] drm/msm/dp: tie dp_display_irq_handler() with dp driver Date: Fri, 6 Oct 2023 14:38:32 -0700 Message-ID: <1696628318-15095-2-git-send-email-quic_khsieh@quicinc.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1696628318-15095-1-git-send-email-quic_khsieh@quicinc.com> References: <1696628318-15095-1-git-send-email-quic_khsieh@quicinc.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.80.80.8] X-ClientProxiedBy: nasanex01b.na.qualcomm.com (10.46.141.250) To nalasex01a.na.qualcomm.com (10.47.209.196) X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-ORIG-GUID: phUS4seDXWks6RQ_frVUYgDFV7LwYmja X-Proofpoint-GUID: phUS4seDXWks6RQ_frVUYgDFV7LwYmja X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.267,Aquarius:18.0.980,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2023-10-06_15,2023-10-06_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 lowpriorityscore=0 phishscore=0 clxscore=1015 mlxscore=0 adultscore=0 bulkscore=0 mlxlogscore=999 spamscore=0 suspectscore=0 malwarescore=0 priorityscore=1501 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2309180000 definitions=main-2310060166 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Fri, 06 Oct 2023 14:39:14 -0700 (PDT) Currently the dp_display_request_irq() is executed at msm_dp_modeset_init() which ties irq registering to the DPU device's life cycle, while depending on resources that are released as the DP device is torn down. Move register DP driver irq handler to dp_display_probe() to have dp_display_irq_handler() IRQ tied with DP device. In addition, use platform_get_irq() to retrieve irq number from platform device directly. Changes in v5: -- reworded commit text as review comments at change #4 -- tear down component if failed at dp_display_request_irq() Changes in v4: -- delete dp->irq check at dp_display_request_irq() Changes in v3: -- move calling dp_display_irq_handler() to probe Signed-off-by: Kuogee Hsieh Reviewed-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/dp/dp_display.c | 32 +++++++++++++------------------- drivers/gpu/drm/msm/dp/dp_display.h | 1 - 2 files changed, 13 insertions(+), 20 deletions(-) diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/dp_display.c index 76f1395..940da48 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.c +++ b/drivers/gpu/drm/msm/dp/dp_display.c @@ -1193,26 +1193,18 @@ static irqreturn_t dp_display_irq_handler(int irq, void *dev_id) return ret; } -int dp_display_request_irq(struct msm_dp *dp_display) +static int dp_display_request_irq(struct dp_display_private *dp) { int rc = 0; - struct dp_display_private *dp; - - if (!dp_display) { - DRM_ERROR("invalid input\n"); - return -EINVAL; - } - - dp = container_of(dp_display, struct dp_display_private, dp_display); + struct device *dev = &dp->pdev->dev; - dp->irq = irq_of_parse_and_map(dp->pdev->dev.of_node, 0); + dp->irq = platform_get_irq(dp->pdev, 0); if (!dp->irq) { DRM_ERROR("failed to get irq\n"); return -EINVAL; } - rc = devm_request_irq(dp_display->drm_dev->dev, dp->irq, - dp_display_irq_handler, + rc = devm_request_irq(dev, dp->irq, dp_display_irq_handler, IRQF_TRIGGER_HIGH, "dp_display_isr", dp); if (rc < 0) { DRM_ERROR("failed to request IRQ%u: %d\n", @@ -1287,13 +1279,21 @@ static int dp_display_probe(struct platform_device *pdev) platform_set_drvdata(pdev, &dp->dp_display); + rc = dp_display_request_irq(dp); + if (rc) + goto err; + rc = component_add(&pdev->dev, &dp_display_comp_ops); if (rc) { DRM_ERROR("component add failed, rc=%d\n", rc); - dp_display_deinit_sub_modules(dp); + goto err; } return rc; + +err: + dp_display_deinit_sub_modules(dp); + return rc; } static int dp_display_remove(struct platform_device *pdev) @@ -1549,12 +1549,6 @@ int msm_dp_modeset_init(struct msm_dp *dp_display, struct drm_device *dev, dp_priv = container_of(dp_display, struct dp_display_private, dp_display); - ret = dp_display_request_irq(dp_display); - if (ret) { - DRM_ERROR("request_irq failed, ret=%d\n", ret); - return ret; - } - ret = dp_display_get_next_bridge(dp_display); if (ret) return ret; diff --git a/drivers/gpu/drm/msm/dp/dp_display.h b/drivers/gpu/drm/msm/dp/dp_display.h index 1e9415a..b3c08de 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.h +++ b/drivers/gpu/drm/msm/dp/dp_display.h @@ -35,7 +35,6 @@ struct msm_dp { int dp_display_set_plugged_cb(struct msm_dp *dp_display, hdmi_codec_plugged_cb fn, struct device *codec_dev); int dp_display_get_modes(struct msm_dp *dp_display); -int dp_display_request_irq(struct msm_dp *dp_display); bool dp_display_check_video_test(struct msm_dp *dp_display); int dp_display_get_test_bpp(struct msm_dp *dp_display); void dp_display_signal_audio_start(struct msm_dp *dp_display); -- 2.7.4