Received: by 2002:a05:6a10:16a7:0:0:0:0 with SMTP id gp39csp3503498pxb; Mon, 16 Nov 2020 17:05:06 -0800 (PST) X-Google-Smtp-Source: ABdhPJxBS4jnvFbVXCgD4cc6g1IrYAyxn3Jkn+/vWhooIm6rAuwDghbcYPY91Johpi336fFwHryg X-Received: by 2002:aa7:d717:: with SMTP id t23mr18093969edq.286.1605575105901; Mon, 16 Nov 2020 17:05:05 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1605575105; cv=none; d=google.com; s=arc-20160816; b=OmDcv+Ree5JFbO2DpQwvlouPxw9cCk0irRaSfHKdveU5SQfHULH5yV9sMhajxUXmdb TfyJC2yaH2P49i4nt0SbRKlB2hBZNWFDokOZtaFd798YoE32dtTG8huM+BGVjNAg1pFS SBBaE43D9IsgAvSvuSt9wGK+rCan9x3sWZghIOFeBik7RkK3cRSsJERpOmZWDlMccEsV 7CJQGyrpGkb0AdCMqnfzjlzlc15t8HOOBe90991/0jsh+EftwQc6qjEs1mLpSA8mi2c9 SAnQpOyOgXLp98N7I5FycWTMatZMUfWBt+WoRJdPXgnhfN11CnQ0Y6Otq0AdPeVKTWwU D0MA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:user-agent:message-id:date:to:cc:from:subject :references:in-reply-to:content-transfer-encoding:mime-version :dkim-signature; bh=PuExbIj6CoeitWmQQjoOETDlqV6PNYzOVzDyJ83+bUM=; b=jTA/Ijc9XvqrQPcW9pX2mM1cpmbBVAZmbloUmTi0KQqu6gwlN8dVhRaCzEm63nFhtz 4k2lVs6JZ0YNVHFYiRCAZVoxtC7/+p0qTtVOEHnjiSuEF9EWbfoM+2UT3bn6nlwTj5UM LZZFFHl3P/lkqY6u5is7qlRNe1f1BfiNqNGtVWBr7FZF+mnBJJhSSmKCQS1ihfcDExFr WfWFYa6dgNpmqsbWptTD4bJqX9Lgx+1F+MU+NcQsrqtWYA9tCZF01caOxCZMZbqESjpD hgQvfeB7BHLeZ769lqso8++dZN4AoIhK8WX5P5IidurJNO03s2u/xMlLz7V42rE80vJ3 0fGQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=QIK29EeQ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id u23si13253291edq.36.2020.11.16.17.04.41; Mon, 16 Nov 2020 17:05:05 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=QIK29EeQ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731427AbgKQBAR (ORCPT + 99 others); Mon, 16 Nov 2020 20:00:17 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58430 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730988AbgKQBAQ (ORCPT ); Mon, 16 Nov 2020 20:00:16 -0500 Received: from mail-pf1-x443.google.com (mail-pf1-x443.google.com [IPv6:2607:f8b0:4864:20::443]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1BD3FC0613D2 for ; Mon, 16 Nov 2020 17:00:16 -0800 (PST) Received: by mail-pf1-x443.google.com with SMTP id c66so15855124pfa.4 for ; Mon, 16 Nov 2020 17:00:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=mime-version:content-transfer-encoding:in-reply-to:references :subject:from:cc:to:date:message-id:user-agent; bh=PuExbIj6CoeitWmQQjoOETDlqV6PNYzOVzDyJ83+bUM=; b=QIK29EeQBxKfUcrXB/o0zASZ0enH3DTfkTyOtmZv/6Kul0xepHNOrP6vcXrexOXTZr Jf7WPzyY+x36w8kkS6fijV02icwrKxoMEsT1/hK/7Xh4GJpYHbrJ1Lqf4YHYmRAKzw+2 pQRmRF1jExMSGgLX1pwTHAY5KixKcCiArNfhA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:content-transfer-encoding :in-reply-to:references:subject:from:cc:to:date:message-id :user-agent; bh=PuExbIj6CoeitWmQQjoOETDlqV6PNYzOVzDyJ83+bUM=; b=ffNvUqV3MPjD/WQ1cbokPEp6wKvuc9BWJYFHL/Hu48tCae33ZtQRQ0Uop9l4fyne5b uNA9whP7Nx0lrl1xq0H2ilzuF3YRC6H3PjJgkP+CIbI2h364609ZxwOjyhMGGfGtE+Cx St0/SJUKYmmmAgNg/DfNRDfu25GNhtubmnX8Fcwodult0y28Avt/G9/yvFaSHAVf4SOv kMT2rlNOzN50FxfMycmeobHLpo9+Y8B/yCYwOeMJIORkJuuQbRnzQ0aHoj+kjApXbgj1 DIkz+BIB686mseA6lVM7wj8c/DygCpfQfBAeXYQHwGCW7HAOuEINXMNiYe6XVB2Hn0da NueA== X-Gm-Message-State: AOAM533hfefu6ucnaiIJC56rv3HHdyd+Itypn5rVxAZpjGMHRr+jQu+W Lro24TPC9ZDyQ0WXh7inQmqGuw== X-Received: by 2002:a63:565d:: with SMTP id g29mr1448743pgm.249.1605574815376; Mon, 16 Nov 2020 17:00:15 -0800 (PST) Received: from chromium.org ([100.99.132.239]) by smtp.gmail.com with ESMTPSA id i6sm641469pjt.49.2020.11.16.17.00.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 16 Nov 2020 17:00:14 -0800 (PST) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable In-Reply-To: <20201113222639.18786-1-khsieh@codeaurora.org> References: <20201113222639.18786-1-khsieh@codeaurora.org> Subject: Re: [PATCH] drm/msm/dp: fix connect/disconnect handled at ir_hdp From: Stephen Boyd Cc: tanmay@codeaurora.org, abhinavk@codeaurora.org, aravindh@codeaurora.org, khsieh@codeaurora.org, airlied@linux.ie, daniel@ffwll.ch, linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org To: Kuogee Hsieh , robdclark@gmail.com, sean@poorly.run Date: Mon, 16 Nov 2020 17:00:12 -0800 Message-ID: <160557481298.60232.17821932910000059522@swboyd.mtv.corp.google.com> User-Agent: alot/0.9.1 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Quoting Kuogee Hsieh (2020-11-13 14:26:39) > diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp= /dp_display.c > index 27e7e27b8b90..4e84f500b721 100644 > --- a/drivers/gpu/drm/msm/dp/dp_display.c > +++ b/drivers/gpu/drm/msm/dp/dp_display.c > @@ -279,13 +279,25 @@ static void dp_display_send_hpd_event(struct msm_dp= *dp_display) > drm_helper_hpd_irq_event(connector->dev); > } > =20 > -static int dp_display_send_hpd_notification(struct dp_display_private *d= p, > - bool hpd) > + > +static void dp_display_set_encoder_mode(struct dp_display_private *dp) > { > - static bool encoder_mode_set; > struct msm_drm_private *priv =3D dp->dp_display.drm_dev->dev_priv= ate; > struct msm_kms *kms =3D priv->kms; > + static bool encoder_mode_set; Can this be stored in the dp_display_private structure instead? No singletons please. > + > + if (!encoder_mode_set && dp->dp_display.encoder && > + kms->funcs->set_encoder_mode) { > + kms->funcs->set_encoder_mode(kms, > + dp->dp_display.encoder, false); > =20 > + encoder_mode_set =3D true; > + } > +} > + > +static int dp_display_send_hpd_notification(struct dp_display_private *d= p, > + bool hpd) > +{ > if ((hpd && dp->dp_display.is_connected) || > (!hpd && !dp->dp_display.is_connected)) { > DRM_DEBUG_DP("HPD already %s\n", (hpd ? "on" : "off")); > @@ -491,17 +487,29 @@ static int dp_display_usbpd_attention_cb(struct dev= ice *dev) > if (!rc) { > sink_request =3D dp->link->sink_request; > if (sink_request & DS_PORT_STATUS_CHANGED) { > - /* same as unplugged */ > - hpd->hpd_high =3D 0; > - dp->hpd_state =3D ST_DISCONNECT_PENDING; > - dp_add_event(dp, EV_USER_NOTIFICATION, false, 0); > - } > - > - rc =3D dp_display_handle_irq_hpd(dp); > - > - if (!rc && (sink_request & DS_PORT_STATUS_CHANGED)) { > - hpd->hpd_high =3D 1; > - dp->hpd_state =3D ST_CONNECT_PENDING; > + if (dp_display_is_sink_count_zero(dp)) { > + DRM_DEBUG_DP("sink count is zero, nothing= to do\n"); > + if (dp->hpd_state !=3D ST_DISCONNECTED) { > + hpd->hpd_high =3D 0; > + dp->hpd_state =3D ST_DISCONNECT_P= ENDING; > + dp_add_event(dp, EV_USER_NOTIFICA= TION, false, 0); > + } > + rc =3D -ENOTCONN; > + } else { > + if (dp->hpd_state =3D=3D ST_DISCONNECTED)= { > + hpd->hpd_high =3D 1; This else and then if can be an else if, right? > + dp->hpd_state =3D ST_CONNECT_PEND= ING; > + > + rc =3D dp_display_process_hpd_hig= h(dp); > + if (rc) { > + hpd->hpd_high =3D 0; > + dp->hpd_state =3D ST_DISC= ONNECTED; > + } > + } > + } > + } else { > + if (!dp_display_is_ds_bridge(dp->panel)) > + rc =3D dp_display_handle_irq_hpd(dp); > } > } >