Received: by 2002:ad5:4acb:0:0:0:0:0 with SMTP id n11csp3306899imw; Mon, 11 Jul 2022 06:15:51 -0700 (PDT) X-Google-Smtp-Source: AGRyM1tSUnqdvvOouQFX3/+kh+b27+A/iEyqLQ1V12bNSC3vB8xE+BeA9y0uwqoRmoCrXKhhNEJO X-Received: by 2002:a17:902:e54a:b0:16a:3e90:3cdc with SMTP id n10-20020a170902e54a00b0016a3e903cdcmr17847083plf.38.1657545351359; Mon, 11 Jul 2022 06:15:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1657545351; cv=none; d=google.com; s=arc-20160816; b=r+m0+LhdZaGCyk/eco1grdYLqtCmYMARiBC8UQLkm5f+2FNWen500ONp2gerW+bKp7 8tSK2rCoLNAMLU94XSj/ayYWQkxOcjuWfTyjvYHJSZ3+cesXHas1BjXSE4SgtZBwlZhp Ls8MDs8APYl412gYJA92PxpsF7n+XAIkOF3C0yOygihEuUp5ddemjLIec2lwC7qzYbic puJ6I9ckFxyhBBwGtFqRqun7sndArPLZPGmKH8KaGPrwT8YuLmgwYW9lmzrD5wgIkyrv bk28Dw7KaWQXVp1TjbDxJRoVXq4J0tJzY0ycn/cls56XoQCvh4NA2qaQ5r9Z5/6AisdL xBtw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:references:in-reply-to:message-id:date:subject :cc:to:from:dkim-signature; bh=MNeDAxnXQfipcSD834nu51vTb5T/I9gJyiXyWDx9IL4=; b=xGbeIG5CqNYYqx9Wx+eNDIngJw/gmnuApZAyqUNIZ8Yw177JPmgTElUP6b0a6pOlEy 5V1ByYPYYczG5NTm0U7zfjC5HH/ne1OlcmT9FEkbCs2HrVrCB5e4SgXthudhayhY5CEH /+h34WSTJVp+AruikpyfQQ4wRsVFOvckDSK2ZMjw80daLkgIMDgUcuVjrOc7mLI4D4Lb NsaWZwkBH1vqMlvWRctCyGSRGN6/VLXU3fUaqULzZGFcv1hTOIpQ5zzZkvuWA6780K+y HdHY7hkfYqxFmfZGVuYJwIlrkb60nKEAU7OEWnZAQolyAVf+TramUZNv5pM03boQEIVT +7vg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcdkim header.b=uBtiWQmj; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id t16-20020a634610000000b00408b735eff4si7020895pga.467.2022.07.11.06.15.39; Mon, 11 Jul 2022 06:15:51 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcdkim header.b=uBtiWQmj; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232207AbiGKM5n (ORCPT + 99 others); Mon, 11 Jul 2022 08:57:43 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59582 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230158AbiGKM5g (ORCPT ); Mon, 11 Jul 2022 08:57:36 -0400 Received: from alexa-out.qualcomm.com (alexa-out.qualcomm.com [129.46.98.28]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 313F24AD4A; Mon, 11 Jul 2022 05:57:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1657544255; x=1689080255; h=from:to:cc:subject:date:message-id:in-reply-to: references; bh=MNeDAxnXQfipcSD834nu51vTb5T/I9gJyiXyWDx9IL4=; b=uBtiWQmjBdsNfYptSPMDPmTSuUCpX9wQIYb6KmpX3nrKbuaYCO6f8S9n oNfUy6L+IMPA8nE2OOW96M9azn+FvjLlOnJeVrNDUq8vgdjGVZlPDDK0V ZIHlWifQJx+LCOwa5ev/naMZPwzTGXXfPff+xtmPy/b4Lnhs9fyXPMpav A=; Received: from ironmsg09-lv.qualcomm.com ([10.47.202.153]) by alexa-out.qualcomm.com with ESMTP; 11 Jul 2022 05:57:35 -0700 X-QCInternal: smtphost Received: from ironmsg02-blr.qualcomm.com ([10.86.208.131]) by ironmsg09-lv.qualcomm.com with ESMTP/TLS/AES256-SHA; 11 Jul 2022 05:57:33 -0700 X-QCInternal: smtphost Received: from vpolimer-linux.qualcomm.com ([10.204.67.235]) by ironmsg02-blr.qualcomm.com with ESMTP; 11 Jul 2022 18:27:11 +0530 Received: by vpolimer-linux.qualcomm.com (Postfix, from userid 463814) id 25E483E49; Mon, 11 Jul 2022 18:27:07 +0530 (IST) From: Vinod Polimera To: dri-devel@lists.freedesktop.org, linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org, devicetree@vger.kernel.org Cc: Vinod Polimera , linux-kernel@vger.kernel.org, robdclark@gmail.com, dianders@chromium.org, swboyd@chromium.org, quic_kalyant@quicinc.com, dmitry.baryshkov@linaro.org, quic_khsieh@quicinc.com, quic_vproddut@quicinc.com, bjorn.andersson@linaro.org, quic_aravindh@quicinc.com, quic_abhinavk@quicinc.com, quic_sbillaka@quicinc.com Subject: [PATCH v6 05/10] drm/msm/dp: use the eDP bridge ops to validate eDP modes Date: Mon, 11 Jul 2022 18:26:59 +0530 Message-Id: <1657544224-10680-6-git-send-email-quic_vpolimer@quicinc.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1657544224-10680-1-git-send-email-quic_vpolimer@quicinc.com> References: <1657544224-10680-1-git-send-email-quic_vpolimer@quicinc.com> X-Spam-Status: No, score=-4.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, RCVD_IN_DNSWL_MED,SPF_HELO_NONE,SPF_NONE,T_SCC_BODY_TEXT_LINE 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 The eDP and DP interfaces shared the bridge operations and the eDP specific changes were implemented under is_edp check. To add psr support for eDP, we started using a new set of eDP bridge ops. We are moving the eDP specific code in the dp_bridge_mode_valid function to a new eDP function, edp_bridge_mode_valid under the eDP bridge ops. Signed-off-by: Sankeerth Billakanti Signed-off-by: Vinod Polimera --- drivers/gpu/drm/msm/dp/dp_display.c | 8 -------- drivers/gpu/drm/msm/dp/dp_drm.c | 34 +++++++++++++++++++++++++++++++++- 2 files changed, 33 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/dp_display.c index 64a6254..2b3ec6b 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.c +++ b/drivers/gpu/drm/msm/dp/dp_display.c @@ -986,14 +986,6 @@ enum drm_mode_status dp_bridge_mode_valid(struct drm_bridge *bridge, return -EINVAL; } - /* - * The eDP controller currently does not have a reliable way of - * enabling panel power to read sink capabilities. So, we rely - * on the panel driver to populate only supported modes for now. - */ - if (dp->is_edp) - return MODE_OK; - if (mode->clock > DP_MAX_PIXEL_CLK_KHZ) return MODE_BAD; diff --git a/drivers/gpu/drm/msm/dp/dp_drm.c b/drivers/gpu/drm/msm/dp/dp_drm.c index 8ca0b37..2bf8c8d 100644 --- a/drivers/gpu/drm/msm/dp/dp_drm.c +++ b/drivers/gpu/drm/msm/dp/dp_drm.c @@ -181,12 +181,44 @@ static void edp_bridge_atomic_post_disable(struct drm_bridge *drm_bridge, dp_bridge_atomic_post_disable(drm_bridge, old_bridge_state); } +/** + * edp_bridge_mode_valid - callback to determine if specified mode is valid + * @bridge: Pointer to drm bridge structure + * @info: display info + * @mode: Pointer to drm mode structure + * Returns: Validity status for specified mode + */ +static enum drm_mode_status edp_bridge_mode_valid(struct drm_bridge *bridge, + const struct drm_display_info *info, + const struct drm_display_mode *mode) +{ + struct msm_dp *dp; + int mode_pclk_khz = mode->clock; + + dp = to_dp_bridge(bridge)->dp_display; + + if (!dp || !mode_pclk_khz || !dp->connector) { + DRM_ERROR("invalid params\n"); + return -EINVAL; + } + + if (mode->clock > DP_MAX_PIXEL_CLK_KHZ) + return MODE_CLOCK_HIGH; + + /* + * The eDP controller currently does not have a reliable way of + * enabling panel power to read sink capabilities. So, we rely + * on the panel driver to populate only supported modes for now. + */ + return MODE_OK; +} + static const struct drm_bridge_funcs edp_bridge_ops = { .atomic_enable = edp_bridge_atomic_enable, .atomic_disable = edp_bridge_atomic_disable, .atomic_post_disable = edp_bridge_atomic_post_disable, .mode_set = dp_bridge_mode_set, - .mode_valid = dp_bridge_mode_valid, + .mode_valid = edp_bridge_mode_valid, .atomic_reset = drm_atomic_helper_bridge_reset, .atomic_duplicate_state = drm_atomic_helper_bridge_duplicate_state, .atomic_destroy_state = drm_atomic_helper_bridge_destroy_state, -- 2.7.4