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 EC0B9C433F5 for ; Thu, 31 Mar 2022 23:30:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239770AbiCaXcj (ORCPT ); Thu, 31 Mar 2022 19:32:39 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48404 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239338AbiCaXci (ORCPT ); Thu, 31 Mar 2022 19:32:38 -0400 Received: from mail-lf1-x12a.google.com (mail-lf1-x12a.google.com [IPv6:2a00:1450:4864:20::12a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4AC28181B2B for ; Thu, 31 Mar 2022 16:30:50 -0700 (PDT) Received: by mail-lf1-x12a.google.com with SMTP id bu29so1966043lfb.0 for ; Thu, 31 Mar 2022 16:30:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=oU/P0lUIzx1uZfbuXoLmvC/k7etlrfD8HbND/4uBtMs=; b=CVm3r8sEiJHudIn3wBe5psgjEjOXEvg7kAXV5xw19t+3DbObpkYUHppzcz6qWIyEKC iD+uGmLJdXzgNCcEVX3/o2rL3pH35aBBGYvKh1WC1iiWOWhQglndY1DyhfDoBvDHciUT HKdhiizGnGLfo9pL1ZqNneKf5bIxKreY/JwCs= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=oU/P0lUIzx1uZfbuXoLmvC/k7etlrfD8HbND/4uBtMs=; b=GgI45Ghlxlidf8zo11Is+TToZey9xXpmu+PmSRmO0kV2o4yOSpOnTisHh9LBzqF4D8 OSEW6gYAi/M2/AbXpLRGcHMrnrqxGZ1/dyMwuLx5xsBqi8dRsAks6cJkyF4yEMmU71I6 pb2VE6ZGtJJhBtwXayvlPHz6R6Tvlm+sRutkR2eZyr5cb7hjANCb0MJYX/UUpd7KM+Fy wrYe3HSLiHF4Nit0tmxCu2MJ0NDaLxAsFTL3fcM1ygFnmFgZWZ8x3+DvMWN4l5CtQBdc NjCdJvG0tpGcEKstDAKMuvxJVCi5Qw490SpwrPDQO/nd69qdpfXUC6+1Qa2iu/PrGBBh VJfQ== X-Gm-Message-State: AOAM5317a0TdHJgfvIO8FAPmgjWr2kFjeOFjgXJLYWplinhMUz0p6qSA qh7ZAHHOe1DvVOT93OZ1BAvPjiH5PUwFZQMjbbw= X-Google-Smtp-Source: ABdhPJwxM71GtSaSAJG0PieXE3M1Sr4WKAOKb7G6/uI/FvKBmlmIUUHLPgaK7hWjuLjy4NUHszaNJg== X-Received: by 2002:a05:6512:4006:b0:44a:7434:9829 with SMTP id br6-20020a056512400600b0044a74349829mr11912731lfb.661.1648769448195; Thu, 31 Mar 2022 16:30:48 -0700 (PDT) Received: from mail-lf1-f49.google.com (mail-lf1-f49.google.com. [209.85.167.49]) by smtp.gmail.com with ESMTPSA id a20-20020a194f54000000b0044a9afab7e7sm68966lfk.290.2022.03.31.16.30.47 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 31 Mar 2022 16:30:47 -0700 (PDT) Received: by mail-lf1-f49.google.com with SMTP id p15so1841838lfk.8 for ; Thu, 31 Mar 2022 16:30:47 -0700 (PDT) X-Received: by 2002:a5d:4491:0:b0:203:f63a:e89b with SMTP id j17-20020a5d4491000000b00203f63ae89bmr5618171wrq.342.1648769032444; Thu, 31 Mar 2022 16:23:52 -0700 (PDT) MIME-Version: 1.0 References: <1648656179-10347-1-git-send-email-quic_sbillaka@quicinc.com> <1648656179-10347-8-git-send-email-quic_sbillaka@quicinc.com> In-Reply-To: <1648656179-10347-8-git-send-email-quic_sbillaka@quicinc.com> From: Doug Anderson Date: Thu, 31 Mar 2022 16:23:40 -0700 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v6 7/8] drm/msm/dp: Support edp/dp without hpd To: Sankeerth Billakanti Cc: dri-devel , linux-arm-msm , freedreno , LKML , "open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" , Rob Clark , Sean Paul , Stephen Boyd , quic_kalyant , "Abhinav Kumar (QUIC)" , "Kuogee Hsieh (QUIC)" , Bjorn Andersson , Sean Paul , David Airlie , Daniel Vetter , Dmitry Baryshkov , quic_vproddut , quic_aravindh@quicinc.com Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org Hi, On Wed, Mar 30, 2022 at 9:04 AM Sankeerth Billakanti wrote: > > Some eDP sinks or platform boards will not support hpd. > This patch adds support for those cases. You could say more, like: If we're not using HPD then _both_ the panel node and the eDP controller node will have "no-hpd". This tells the eDP panel code to hardcode the maximum possible delay for a panel to power up and tells the eDP driver that it should continue to do transfers even if HPD isn't asserted. > Signed-off-by: Sankeerth Billakanti > --- > drivers/gpu/drm/msm/dp/dp_catalog.c | 15 ++++++++++++--- > 1 file changed, 12 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/msm/dp/dp_catalog.c b/drivers/gpu/drm/msm/dp/dp_catalog.c > index 1809ce2..8f1fc71 100644 > --- a/drivers/gpu/drm/msm/dp/dp_catalog.c > +++ b/drivers/gpu/drm/msm/dp/dp_catalog.c > @@ -244,10 +244,17 @@ void dp_catalog_aux_update_cfg(struct dp_catalog *dp_catalog) > > int dp_catalog_aux_wait_for_hpd_connect_state(struct dp_catalog *dp_catalog) > { > - u32 state; > + u32 state, hpd_en; > struct dp_catalog_private *catalog = container_of(dp_catalog, > struct dp_catalog_private, dp_catalog); > > + hpd_en = dp_read_aux(catalog, REG_DP_DP_HPD_CTRL); > + hpd_en &= DP_DP_HPD_CTRL_HPD_EN; > + > + /* no-hpd case */ > + if (!hpd_en) > + return 0; > + > /* poll for hpd connected status every 2ms and timeout after 500ms */ > return readl_poll_timeout(catalog->io->dp_controller.aux.base + > REG_DP_DP_HPD_INT_STATUS, > @@ -586,8 +593,10 @@ void dp_catalog_ctrl_hpd_config(struct dp_catalog *dp_catalog) > reftimer |= DP_DP_HPD_REFTIMER_ENABLE; > dp_write_aux(catalog, REG_DP_DP_HPD_REFTIMER, reftimer); > > - /* Enable HPD */ > - dp_write_aux(catalog, REG_DP_DP_HPD_CTRL, DP_DP_HPD_CTRL_HPD_EN); > + /* Enable HPD if supported*/ > + if (!of_property_read_bool(catalog->dev->of_node, "no-hpd")) I don't think this is a particularly lightweight operation. It's literally iterating through all of our device tree properties and doing string compares on them. ...but this function is called somewhat often, isn't it? It feels like the kind of thing that should happen at probe time and be stored in a boolean. ...and then you can use that same boolean in dp_catalog_aux_wait_for_hpd_connect_state() rather than reading the register value, right? -Doug 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 1CED0C433F5 for ; Thu, 31 Mar 2022 23:29:22 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 3AAB810E18F; Thu, 31 Mar 2022 23:29:21 +0000 (UTC) Received: from mail-ej1-x62f.google.com (mail-ej1-x62f.google.com [IPv6:2a00:1450:4864:20::62f]) by gabe.freedesktop.org (Postfix) with ESMTPS id 40FFA10E18F for ; Thu, 31 Mar 2022 23:29:20 +0000 (UTC) Received: by mail-ej1-x62f.google.com with SMTP id bh17so2384191ejb.8 for ; Thu, 31 Mar 2022 16:29:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=oU/P0lUIzx1uZfbuXoLmvC/k7etlrfD8HbND/4uBtMs=; b=CVm3r8sEiJHudIn3wBe5psgjEjOXEvg7kAXV5xw19t+3DbObpkYUHppzcz6qWIyEKC iD+uGmLJdXzgNCcEVX3/o2rL3pH35aBBGYvKh1WC1iiWOWhQglndY1DyhfDoBvDHciUT HKdhiizGnGLfo9pL1ZqNneKf5bIxKreY/JwCs= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=oU/P0lUIzx1uZfbuXoLmvC/k7etlrfD8HbND/4uBtMs=; b=oQq9Ex2BxJz64vNUJ2onZBJOySJiQ5lmAzb3bkmY6wD+mZQucqP1mTrX8zD0Dk8Xse xvFjycHTEyND2aMz4LbxmEnQ2zKnBL5I/cClio4EgU6ECiNFjbJtHEk7R0uWnTnJAB7y FR68B9C+2EuVA4scAVw2zy4aQ8rDKbeiWe9dLQU2vcOgwlONoa5dU6ubPHmJWvxKfzH0 uVmb2V8uSQ++nkW6+QALWFpUr/s0+iq4Ty104ewQmqhgtajCexSU28bhzB7J8aL+XTnc jARG9zYoPbruNwL1WfH2uh1v3ZJKbNluSl4x2KR2tjnf2wPLY6mhcEAHGmT574NczAT9 Xe7A== X-Gm-Message-State: AOAM531oF9102mrg8MXHhpI6hrx3LLsxDaAlsD/2HPI4+BokG3ouYiC3 6xwwVzTB5LB66ewlNnemik+0Nri7QlYVmg3z0zs= X-Google-Smtp-Source: ABdhPJwhsPcr72vq+2mXLHNvYqQc35K8ZoCANpPdjm+4iVUZNouyu+MBxXhMt0usuTm2DEXd7KGdOA== X-Received: by 2002:a17:906:4787:b0:6e1:409f:8deb with SMTP id cw7-20020a170906478700b006e1409f8debmr6922478ejc.80.1648769358445; Thu, 31 Mar 2022 16:29:18 -0700 (PDT) Received: from mail-ej1-f51.google.com (mail-ej1-f51.google.com. [209.85.218.51]) by smtp.gmail.com with ESMTPSA id w6-20020a170906d20600b006ca00cb99e0sm324653ejz.34.2022.03.31.16.29.18 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 31 Mar 2022 16:29:18 -0700 (PDT) Received: by mail-ej1-f51.google.com with SMTP id o10so2462825ejd.1 for ; Thu, 31 Mar 2022 16:29:18 -0700 (PDT) X-Received: by 2002:a5d:4491:0:b0:203:f63a:e89b with SMTP id j17-20020a5d4491000000b00203f63ae89bmr5618171wrq.342.1648769032444; Thu, 31 Mar 2022 16:23:52 -0700 (PDT) MIME-Version: 1.0 References: <1648656179-10347-1-git-send-email-quic_sbillaka@quicinc.com> <1648656179-10347-8-git-send-email-quic_sbillaka@quicinc.com> In-Reply-To: <1648656179-10347-8-git-send-email-quic_sbillaka@quicinc.com> From: Doug Anderson Date: Thu, 31 Mar 2022 16:23:40 -0700 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v6 7/8] drm/msm/dp: Support edp/dp without hpd To: Sankeerth Billakanti Content-Type: text/plain; charset="UTF-8" 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: quic_kalyant , "open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" , Bjorn Andersson , "Abhinav Kumar \(QUIC\)" , quic_vproddut , David Airlie , linux-arm-msm , LKML , dri-devel , Stephen Boyd , Sean Paul , Sean Paul , Dmitry Baryshkov , quic_aravindh@quicinc.com, "Kuogee Hsieh \(QUIC\)" , freedreno Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Hi, On Wed, Mar 30, 2022 at 9:04 AM Sankeerth Billakanti wrote: > > Some eDP sinks or platform boards will not support hpd. > This patch adds support for those cases. You could say more, like: If we're not using HPD then _both_ the panel node and the eDP controller node will have "no-hpd". This tells the eDP panel code to hardcode the maximum possible delay for a panel to power up and tells the eDP driver that it should continue to do transfers even if HPD isn't asserted. > Signed-off-by: Sankeerth Billakanti > --- > drivers/gpu/drm/msm/dp/dp_catalog.c | 15 ++++++++++++--- > 1 file changed, 12 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/msm/dp/dp_catalog.c b/drivers/gpu/drm/msm/dp/dp_catalog.c > index 1809ce2..8f1fc71 100644 > --- a/drivers/gpu/drm/msm/dp/dp_catalog.c > +++ b/drivers/gpu/drm/msm/dp/dp_catalog.c > @@ -244,10 +244,17 @@ void dp_catalog_aux_update_cfg(struct dp_catalog *dp_catalog) > > int dp_catalog_aux_wait_for_hpd_connect_state(struct dp_catalog *dp_catalog) > { > - u32 state; > + u32 state, hpd_en; > struct dp_catalog_private *catalog = container_of(dp_catalog, > struct dp_catalog_private, dp_catalog); > > + hpd_en = dp_read_aux(catalog, REG_DP_DP_HPD_CTRL); > + hpd_en &= DP_DP_HPD_CTRL_HPD_EN; > + > + /* no-hpd case */ > + if (!hpd_en) > + return 0; > + > /* poll for hpd connected status every 2ms and timeout after 500ms */ > return readl_poll_timeout(catalog->io->dp_controller.aux.base + > REG_DP_DP_HPD_INT_STATUS, > @@ -586,8 +593,10 @@ void dp_catalog_ctrl_hpd_config(struct dp_catalog *dp_catalog) > reftimer |= DP_DP_HPD_REFTIMER_ENABLE; > dp_write_aux(catalog, REG_DP_DP_HPD_REFTIMER, reftimer); > > - /* Enable HPD */ > - dp_write_aux(catalog, REG_DP_DP_HPD_CTRL, DP_DP_HPD_CTRL_HPD_EN); > + /* Enable HPD if supported*/ > + if (!of_property_read_bool(catalog->dev->of_node, "no-hpd")) I don't think this is a particularly lightweight operation. It's literally iterating through all of our device tree properties and doing string compares on them. ...but this function is called somewhat often, isn't it? It feels like the kind of thing that should happen at probe time and be stored in a boolean. ...and then you can use that same boolean in dp_catalog_aux_wait_for_hpd_connect_state() rather than reading the register value, right? -Doug