Received: by 2002:a05:6358:16cc:b0:ea:6187:17c9 with SMTP id r12csp834730rwl; Thu, 5 Jan 2023 05:20:56 -0800 (PST) X-Google-Smtp-Source: AMrXdXutnW0LY1UuSkMbxkuS5M2DSweuvRxxmyyLcum9zSCZGv2s9/GYoC+yOeiUfgil7LvlHbk7 X-Received: by 2002:aa7:ca55:0:b0:468:38e5:f233 with SMTP id j21-20020aa7ca55000000b0046838e5f233mr45227238edt.24.1672924855970; Thu, 05 Jan 2023 05:20:55 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1672924855; cv=none; d=google.com; s=arc-20160816; b=VZm/Jmez07yI2wxExNz1Y1z/7iLjhmzQLsd5X8zDKP//bNsXXbbzP3OD6JwLAGaDZe lrI3cU79owsOQA/jyaG/f3M0j7l4gYQuLAiStfnidQ6+H+onLzPyK1pqemBRsJLxa0Vh VLrjhnPFcacaPPl1O0Q1WmONiimE/jx/IUn7X0NewMtTsjK/vQZsyaXBPEQooRnRukKh MI/Fx6poiyuCHwXP6jIrclUg+DW510swJZnIgUYMcGOuQGH9MPwYSEOIGRIGHfksmpzF 3TA8Wnx2evVFYF6xT1OT51UQ+/+9S3u2S0583iJMP4Hkwy1X8NEKRF1Y+xYYrgTkKbM8 vtHg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:mail-followup-to:message-id:subject:cc:to:from:date :dkim-signature; bh=epo4NuCr+R0WCc3ZS+TmM2VQF2a+mloAFRnhMBihugE=; b=C48m16PnCkTboKNe44q76NqNdoj9Y4vE849fs9zp+l4IwFrOtrWzJp2uz74TC7ZMkF RS1n1kd8ahnegZe4po1PMsYRARc8La4yY5dV/HPryvqttKHd3eX5DPmlXghyOsXhSFPh 8RnCx2xpReVfDCIbdmMVq9B1qQ/EPw/WdycPqyheh58Ps7fjwE/ap9pvGAgjjRea2vsE Btxd/7u/qcgvwgBJH9oIzvxk6cj/pS/MbXRtn3XjmgrsX25Mvj7MFEpBT0jq865Z7oJm 0mG+sYmmpLll2JWUUMWJ/vUsRqTvSt5xtyW64fU45IhKqZltZNOAVfQrCC0hHwHW707/ xHhw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ffwll.ch header.s=google header.b=duzWfuia; 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 Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id y19-20020a056402441300b004763231785asi37308650eda.33.2023.01.05.05.20.42; Thu, 05 Jan 2023 05:20:55 -0800 (PST) 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=@ffwll.ch header.s=google header.b=duzWfuia; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230475AbjAENLc (ORCPT + 56 others); Thu, 5 Jan 2023 08:11:32 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33498 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231844AbjAENLS (ORCPT ); Thu, 5 Jan 2023 08:11:18 -0500 Received: from mail-wm1-x32e.google.com (mail-wm1-x32e.google.com [IPv6:2a00:1450:4864:20::32e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E57C92F7B6 for ; Thu, 5 Jan 2023 05:11:16 -0800 (PST) Received: by mail-wm1-x32e.google.com with SMTP id ja17so27969418wmb.3 for ; Thu, 05 Jan 2023 05:11:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=in-reply-to:content-disposition:mime-version:references :mail-followup-to:message-id:subject:cc:to:from:date:from:to:cc :subject:date:message-id:reply-to; bh=epo4NuCr+R0WCc3ZS+TmM2VQF2a+mloAFRnhMBihugE=; b=duzWfuiaiDnHSzdqXc0CHu1JETDMs23u6PwEyxrReeZ2pcHD7wg36yyPob3yPiqF79 p54dRd8VgvKhNpXBOqzbFJi/g/7LyHax6lWVK1NSkr/W7Ij8PDWdyUJy/MzUqA5quR/p C2lyEJ1rIOxvNJHCw636pxMWbETY1v5kfnHM8= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references :mail-followup-to:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=epo4NuCr+R0WCc3ZS+TmM2VQF2a+mloAFRnhMBihugE=; b=0L+o0amQziTIb8/lrvPWbYgWgfPq/FCJd2H4ZV6hGZ5yHO6PSQtT/38LXkaPcXN2cw 6R2yQqA44LB5HqqPiooaDrQph/qMh/qYKCH3T4ZDUf3OTJNrkscRG0yIcO1Lk+0KxFjp wUNayTMx2S92/Zx/6qv8zdro6jP/EWVdeSceHCQO4jX8DycRP+xvWmficBpxNXfdvkrE CW8mr5s6tYBTHIeIU0WcO0pxACuVriYPcQFqB0HS1/p2zEaKuH3WX+6u0vxnDJlNRUw8 OVFT1kDDjcCn2jSJ6GbMysiE4CF4xglEkqBTGCYP1D8UMMU4RpmVi94Pp2sQcc+M+xk8 C8wA== X-Gm-Message-State: AFqh2kpSWEAVxjzE37L/8T62s3FwFUXHmSque6OI4lQw6XGekSZRK3k2 6ePFJrgX1dS2tPYZyHjPTiFgYA== X-Received: by 2002:a05:600c:1f0e:b0:3cf:497c:c59e with SMTP id bd14-20020a05600c1f0e00b003cf497cc59emr37030168wmb.6.1672924275463; Thu, 05 Jan 2023 05:11:15 -0800 (PST) Received: from phenom.ffwll.local ([2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa]) by smtp.gmail.com with ESMTPSA id p3-20020a05600c358300b003d1f2c3e571sm2634955wmq.33.2023.01.05.05.11.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Jan 2023 05:11:14 -0800 (PST) Date: Thu, 5 Jan 2023 14:11:12 +0100 From: Daniel Vetter To: Vinod Polimera Cc: dri-devel@lists.freedesktop.org, linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org, devicetree@vger.kernel.org, quic_kalyant@quicinc.com, quic_sbillaka@quicinc.com, quic_bjorande@quicinc.com, quic_abhinavk@quicinc.com, quic_vproddut@quicinc.com, quic_khsieh@quicinc.com, dianders@chromium.org, linux-kernel@vger.kernel.org, dmitry.baryshkov@linaro.org, quic_aravindh@quicinc.com, swboyd@chromium.org Subject: Re: [PATCH v9 08/15] drm/bridge: add psr support for panel bridge callbacks Message-ID: Mail-Followup-To: Vinod Polimera , dri-devel@lists.freedesktop.org, linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org, devicetree@vger.kernel.org, quic_kalyant@quicinc.com, quic_sbillaka@quicinc.com, quic_bjorande@quicinc.com, quic_abhinavk@quicinc.com, quic_vproddut@quicinc.com, quic_khsieh@quicinc.com, dianders@chromium.org, linux-kernel@vger.kernel.org, dmitry.baryshkov@linaro.org, quic_aravindh@quicinc.com, swboyd@chromium.org References: <1671012352-1825-1-git-send-email-quic_vpolimer@quicinc.com> <1671012352-1825-9-git-send-email-quic_vpolimer@quicinc.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1671012352-1825-9-git-send-email-quic_vpolimer@quicinc.com> X-Operating-System: Linux phenom 5.19.0-2-amd64 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_NONE, SPF_HELO_NONE,SPF_NONE 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 On Wed, Dec 14, 2022 at 03:35:45PM +0530, Vinod Polimera wrote: > This change will handle the psr entry exit cases in the panel > bridge atomic callback functions. For example, the panel power > should not turn off if the panel is entering psr. > > Signed-off-by: Sankeerth Billakanti > Signed-off-by: Vinod Polimera I think this is all a nice integration of the sr helpers and bridge stuff and makes sense to me. For the 2 bridge patches and the drm core atomic patch: Reviewed-by: Daniel Vetter > --- > drivers/gpu/drm/bridge/panel.c | 48 ++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 48 insertions(+) > > diff --git a/drivers/gpu/drm/bridge/panel.c b/drivers/gpu/drm/bridge/panel.c > index 3558cbf..5e77e38 100644 > --- a/drivers/gpu/drm/bridge/panel.c > +++ b/drivers/gpu/drm/bridge/panel.c > @@ -113,6 +113,18 @@ static void panel_bridge_atomic_pre_enable(struct drm_bridge *bridge, > struct drm_bridge_state *old_bridge_state) > { > struct panel_bridge *panel_bridge = drm_bridge_to_panel_bridge(bridge); > + struct drm_atomic_state *atomic_state = old_bridge_state->base.state; > + struct drm_encoder *encoder = bridge->encoder; > + struct drm_crtc *crtc; > + struct drm_crtc_state *old_crtc_state; > + > + crtc = drm_atomic_get_new_crtc_for_encoder(atomic_state, encoder); > + if (!crtc) > + return; > + > + old_crtc_state = drm_atomic_get_old_crtc_state(atomic_state, crtc); > + if (old_crtc_state && old_crtc_state->self_refresh_active) > + return; > > drm_panel_prepare(panel_bridge->panel); > } > @@ -121,6 +133,18 @@ static void panel_bridge_atomic_enable(struct drm_bridge *bridge, > struct drm_bridge_state *old_bridge_state) > { > struct panel_bridge *panel_bridge = drm_bridge_to_panel_bridge(bridge); > + struct drm_atomic_state *atomic_state = old_bridge_state->base.state; > + struct drm_encoder *encoder = bridge->encoder; > + struct drm_crtc *crtc; > + struct drm_crtc_state *old_crtc_state; > + > + crtc = drm_atomic_get_new_crtc_for_encoder(atomic_state, encoder); > + if (!crtc) > + return; > + > + old_crtc_state = drm_atomic_get_old_crtc_state(atomic_state, crtc); > + if (old_crtc_state && old_crtc_state->self_refresh_active) > + return; > > drm_panel_enable(panel_bridge->panel); > } > @@ -129,6 +153,18 @@ static void panel_bridge_atomic_disable(struct drm_bridge *bridge, > struct drm_bridge_state *old_bridge_state) > { > struct panel_bridge *panel_bridge = drm_bridge_to_panel_bridge(bridge); > + struct drm_atomic_state *atomic_state = old_bridge_state->base.state; > + struct drm_encoder *encoder = bridge->encoder; > + struct drm_crtc *crtc; > + struct drm_crtc_state *new_crtc_state; > + > + crtc = drm_atomic_get_old_crtc_for_encoder(atomic_state, encoder); > + if (!crtc) > + return; > + > + new_crtc_state = drm_atomic_get_new_crtc_state(atomic_state, crtc); > + if (new_crtc_state && new_crtc_state->self_refresh_active) > + return; > > drm_panel_disable(panel_bridge->panel); > } > @@ -137,6 +173,18 @@ static void panel_bridge_atomic_post_disable(struct drm_bridge *bridge, > struct drm_bridge_state *old_bridge_state) > { > struct panel_bridge *panel_bridge = drm_bridge_to_panel_bridge(bridge); > + struct drm_atomic_state *atomic_state = old_bridge_state->base.state; > + struct drm_encoder *encoder = bridge->encoder; > + struct drm_crtc *crtc; > + struct drm_crtc_state *new_crtc_state; > + > + crtc = drm_atomic_get_old_crtc_for_encoder(atomic_state, encoder); > + if (!crtc) > + return; > + > + new_crtc_state = drm_atomic_get_new_crtc_state(atomic_state, crtc); > + if (new_crtc_state && new_crtc_state->self_refresh_active) > + return; > > drm_panel_unprepare(panel_bridge->panel); > } > -- > 2.7.4 > -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch