Received: by 2002:a05:7412:b995:b0:f9:9502:5bb8 with SMTP id it21csp704724rdb; Fri, 22 Dec 2023 02:29:47 -0800 (PST) X-Google-Smtp-Source: AGHT+IGZa2a5U3We2Rb+dMhXq6rAb0r3oHHLLMrqLYe6EeMVem4M4uEt9zXm1sL+gLeQ88Lz/zQH X-Received: by 2002:a05:622a:1494:b0:425:a58c:6974 with SMTP id t20-20020a05622a149400b00425a58c6974mr1125295qtx.63.1703240986786; Fri, 22 Dec 2023 02:29:46 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1703240986; cv=none; d=google.com; s=arc-20160816; b=atYSWYsCDQeAIM1FybHOYdENSQ6mei9jb/8rKBVhPKzGDwq+8zrdaTL+zWXHVVcFDu ThRKbmBBCBh7Qy0jJubdoVBuOBLvL68OjaJ8seqdAaJYTH5J9xIwLfP30lGinxcJyp76 /lvch+fI4s4hXZGTuxrXvunSm3xin/HZQRl6qdxCNIcM2ekZpQONFl3R01mNTKHC8QqG PJK3mdggw9O63TL9NWL6uzs+JxTy6AurIXoHuZe2EsNSaEiiATZYpsx5rNF33cAbETfq n4/sNRqPHZF9bH40GXmvi3QhHkw2gnxVrYAaFKMwU7MniKe4hEly5/mDLh7BjFBIfDRo vbkw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:list-unsubscribe:list-subscribe :list-id:precedence:dkim-signature; bh=brq1T/lyerRADPyPeuRz+yr9zN9tHk+LiXSNCxx5F14=; fh=yCmOKg6grJmkHArNnHp2KPZvKi8ID97tcTud1COXv1w=; b=WhJyUgjPmaubcmlqK8nR+p8AO/bpKwKM2Awzeg/S4LL/jLgJhs6QixPUrXgoUUyKfS tn1cXYw8eoVumwRHXhVyagStg8wAQKV3fh8VP8Zinc9SRKs9aEX0j5+RYZdr1T0ksYnX IfsbzsNqDvGsghK3VEewpbeeAP8ImYdoik8hT7Wc5Tp2AFyCSzxzxouHdW2s0laPtUEr pbEu+kwpDkPP7RX3+RkdeRmqdHuC68+X1ZjFxMkLGwLFS+nlhffswChHYK/xssCKJ+T0 WNdRgZQcAOEmjxQrZIH1wNo9T+sf07rWvFfBpBbboRg8U4WQUaDI3VgLE1Pp8FDUjh8r R6EA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=T9kFsVta; spf=pass (google.com: domain of linux-kernel+bounces-9594-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-9594-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Return-Path: Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [147.75.199.223]) by mx.google.com with ESMTPS id 22-20020ac85756000000b00423950eac8fsi3919832qtx.560.2023.12.22.02.29.46 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 22 Dec 2023 02:29:46 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-9594-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) client-ip=147.75.199.223; Authentication-Results: mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=T9kFsVta; spf=pass (google.com: domain of linux-kernel+bounces-9594-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-9594-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id CDA8D1C21870 for ; Fri, 22 Dec 2023 10:29:43 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 66D8E12E67; Fri, 22 Dec 2023 10:29:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="T9kFsVta" X-Original-To: linux-kernel@vger.kernel.org Received: from mail-il1-f171.google.com (mail-il1-f171.google.com [209.85.166.171]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 258A31171B for ; Fri, 22 Dec 2023 10:29:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Received: by mail-il1-f171.google.com with SMTP id e9e14a558f8ab-35fe06eaa98so1072875ab.0 for ; Fri, 22 Dec 2023 02:29:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1703240973; x=1703845773; darn=vger.kernel.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=brq1T/lyerRADPyPeuRz+yr9zN9tHk+LiXSNCxx5F14=; b=T9kFsVtaKth+COG+Rq2lKFvDzDEFyergW5AufQqcQhivKnwKtePiVgY95Zy5hyvXGp 3MXswS57AnqeCSzj3QqJKjixzbhp7hWEJVa+Hlu8qxZoiWALl9pYBjfNY83NFhwh5B4v vAB/f7YpQ8dJN7IoIs8Yl3eBQTG6ioADE1nFs= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1703240973; x=1703845773; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=brq1T/lyerRADPyPeuRz+yr9zN9tHk+LiXSNCxx5F14=; b=FOmEawClq3kSo0mZOBapaZuftKNbNjOqLjDTj2hNNTAYgoEATBnbINguVKNXv7fF10 QEfOiXt/JGatqTMB04BDMAo4DxR5XRZR8swaWmJTtsM8TxxOsFeBNoOBFC+CjJGapF4k NBda1hrmzQeiB+G86TwoRrEgs/Xb8x1wSg9sypVpTv9xCFAkAAtBeNVvNzumG2D1OEPq Lof/sGcnKVClhfStatg5KVFbWiSDNODGgaKgE3pqIAYg4S4i08NYS2BTP0UYqAUYApW4 UlSzAAhCWDBQb7Iuw5igkvCN4I6f32GxVJZGn7ySgKlqV45+p0sNif2hIJTlh+ZYH1bl 85wg== X-Gm-Message-State: AOJu0YwNThl3f7gj1/g/FI77PTdQxDdi/uqNkqsVaMbt2oa12475k5XY 0FqMPD874W9SB/q8+AL0bUQwGMUZIkMmqXefSOlHy71oNxiF X-Received: by 2002:a05:6e02:1a09:b0:35f:b3d8:4568 with SMTP id s9-20020a056e021a0900b0035fb3d84568mr1279180ild.20.1703240973184; Fri, 22 Dec 2023 02:29:33 -0800 (PST) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 References: <20231221135548.1.I10f326a9305d57ad32cee7f8d9c60518c8be20fb@changeid> In-Reply-To: <20231221135548.1.I10f326a9305d57ad32cee7f8d9c60518c8be20fb@changeid> From: Pin-yen Lin Date: Fri, 22 Dec 2023 18:29:22 +0800 Message-ID: Subject: Re: [PATCH] drm/bridge: parade-ps8640: Wait for HPD when doing an AUX transfer To: Douglas Anderson Cc: dri-devel@lists.freedesktop.org, hsinyi@chromium.org, Andrzej Hajda , Daniel Vetter , David Airlie , Dmitry Baryshkov , Jernej Skrabec , Jonas Karlman , Laurent Pinchart , Maarten Lankhorst , Maxime Ripard , Neil Armstrong , Robert Foss , Thomas Zimmermann , linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Douglas, On Fri, Dec 22, 2023 at 5:56=E2=80=AFAM Douglas Anderson wrote: > > Unlike what is claimed in commit f5aa7d46b0ee ("drm/bridge: > parade-ps8640: Provide wait_hpd_asserted() in struct drm_dp_aux"), if > someone manually tries to do an AUX transfer (like via `i2cdump ${bus} > 0x50 i`) while the panel is off we don't just get a simple transfer > error. Instead, the whole ps8640 gets thrown for a loop and goes into > a bad state. > > Let's put the function to wait for the HPD (and the magical 50 ms > after first reset) back in when we're doing an AUX transfer. This > shouldn't actually make things much slower (assuming the panel is on) > because we should immediately poll and see the HPD high. Mostly this > is just an extra i2c transfer to the bridge. > > Fixes: f5aa7d46b0ee ("drm/bridge: parade-ps8640: Provide wait_hpd_asserte= d() in struct drm_dp_aux") > Signed-off-by: Douglas Anderson > --- > > drivers/gpu/drm/bridge/parade-ps8640.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/drivers/gpu/drm/bridge/parade-ps8640.c b/drivers/gpu/drm/bri= dge/parade-ps8640.c > index 541e4f5afc4c..fb5e9ae9ad81 100644 > --- a/drivers/gpu/drm/bridge/parade-ps8640.c > +++ b/drivers/gpu/drm/bridge/parade-ps8640.c > @@ -346,6 +346,11 @@ static ssize_t ps8640_aux_transfer(struct drm_dp_aux= *aux, > int ret; > > pm_runtime_get_sync(dev); > + ret =3D _ps8640_wait_hpd_asserted(ps_bridge, 200 * 1000); > + if (ret) { > + pm_runtime_put_sync_suspend(dev); > + return ret; > + } > ret =3D ps8640_aux_transfer_msg(aux, msg); > pm_runtime_mark_last_busy(dev); > pm_runtime_put_autosuspend(dev); > -- > 2.43.0.472.g3155946c3a-goog > I think commit 9294914dd550 ("drm/bridge: parade-ps8640: Link device to ensure suspend/resume order") is trying to address the same problem, but we see this issue here because the device link is missing DL_FLAG_PM_RUNTIME. I prefer to add DL_FLAG_PM_RUNTIME here so we don't need to add a _ps8640_wait_hpd_asserted() after every pm_runtime_get_*() call. As a side note, I've verified both this patch and DL_FLAG_PM_RUNTIME in our downstream v5.15 kernel and panel-edp driver. Both of them successfully wait for HPD asserted when the timeout used to happen, but the panel is black in that situation. That being said, this patch still brings us to a better state. Originally, panel_edp_resume() would return an error when the timeout occurs, so the panel-edp driver is stuck at an unexpected state. With this patch or DL_FLAG_PM_RUNTIME, the runtime PM callbacks won't fail and a system suspend/resume brings the panel back. Regards, Pin-yen