Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp814472rwd; Thu, 15 Jun 2023 02:22:46 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ6NV7cSiAapqtnpuealsc/x9f+Zq7GpmzwxLA73EkXheCVdCTo96A8XVhMRaJL+S8xQyeSn X-Received: by 2002:a17:90a:186:b0:256:675f:1d49 with SMTP id 6-20020a17090a018600b00256675f1d49mr5583457pjc.0.1686820966043; Thu, 15 Jun 2023 02:22:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1686820966; cv=none; d=google.com; s=arc-20160816; b=O22C/EBwCRIl9O0r+e+ACzT1h4EErdx4EDdXQPZGXoET4GSbXNslqT+Flh7Szay+r0 j8NCycAirdg5/+3yo3Kag7nX0s5PNIZE+CHJDhxAmRTcrLZVC1EHJVHsBvSHp2l7ujBb ucMy1iQc5ZauMsPPzQNy4TjvGvOgUTVXZHuepbmkwWt/Ry02M4chuS1Etf6S4q33dzaF Kj1RS1Qg04m8spxRRkfHLWutWk0kcKcRB0i54tioN/2JHckfChPnIJvBn5Gcwmo/wrPA G9vw/X5+oaNTfN6OtFYHglE7RhFfhbhv90H45/N86hZG7A8VogBQYAhovBqa70mFAR5c s+GQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=M3N4xS19iiNzAfZG6+oX0xz2hD15R8Izsc9S3234U/0=; b=HQnHTUq3lBgUlnkQgCYHdDhEvq3PgdKiuhZ6tJw/9llVM7z3+EIDFGIPYy69QJ0mEM JKBlj2/Q5KcFh8Z3VeCdL1PnFUDQiePBtykBbAITqr6Lu9OFN22sI1eP3YbTXrmv/0L3 +TDxFF2oWIGX6gClCkKYH81eVGs1z5IzgRO1KdqZvoHmbXhHgkyN77IdePfkkB04pBNi yPugg2WsYYLXIqU8rWpNjHcXQkWH54wV484uUN5Iwf2mVEX17VJnmCeJTlpzqthNQudj vBt9qk4gPDnvL0Dp79nK+aoqzBOgihMWNtQkZpkzmdkqzyPZdwTsfVCvOvgF9Wz6hc3P fNcA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=CHTPa0h6; 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=chromium.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id k71-20020a63844a000000b0054fb9ff8f17si3265779pgd.519.2023.06.15.02.22.33; Thu, 15 Jun 2023 02:22:46 -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=@chromium.org header.s=google header.b=CHTPa0h6; 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=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S245363AbjFOIsb (ORCPT + 99 others); Thu, 15 Jun 2023 04:48:31 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33912 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S244000AbjFOIsE (ORCPT ); Thu, 15 Jun 2023 04:48:04 -0400 Received: from mail-il1-x135.google.com (mail-il1-x135.google.com [IPv6:2607:f8b0:4864:20::135]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1CA8A30D2 for ; Thu, 15 Jun 2023 01:46:59 -0700 (PDT) Received: by mail-il1-x135.google.com with SMTP id e9e14a558f8ab-34051bd5b6aso1389745ab.1 for ; Thu, 15 Jun 2023 01:46:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1686818818; x=1689410818; 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=M3N4xS19iiNzAfZG6+oX0xz2hD15R8Izsc9S3234U/0=; b=CHTPa0h6ltc+yR3piAhuVoU4l/6tQJGLjGnvKlLXVtnB8ky9yeCFEnkiDBB9u7M6iI TXT0k5apmt9i69eZ+JwiWh5FtQzZ4gk2geEk5MaqJCBn0vtzor6BkrxZX2JtT9OacDGZ aUR6CpIMp96OR6xnRwrBmPpKCYG5KdLb6lTdc= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686818818; x=1689410818; 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=M3N4xS19iiNzAfZG6+oX0xz2hD15R8Izsc9S3234U/0=; b=bhKYOdtGzP+0HqIzgRmBp0JgMuDPAnDOhTxnEzTuzgTlOH9W+dtjPfyGZNQKbBtr5p RnWzRQaj83Dxx91rhQyqyk4txJh8y+Gg0GV7mk+cAkRBeFJ+VzTsncbWaVeTBzDiXoK3 UUGzr/N/wS7g62Bs0IBoX8LZ7pgMsEODK4SvC+Tn2cYWGketwb1bTAdt4E6WAiRoE4r6 5JYzOxB4YK7LjSZCtcM4TaK0/HOc6TQTUS7jQXH9zt8XUroj4W7aWPulJIFZn1fiVLr3 /ju0wUGWPUzHOZ2tMF+vUpdQJv9WCQvAC8UTXlAydBRmz2u2P3axlamiQKw6WIfQO0H5 raGw== X-Gm-Message-State: AC+VfDxtNDkeswX7akCfDeqcm41OTwV3goJOltwNwJCZtpz+oCgVbdEV doLHOUq9D+LwHHTnF/CUThfLW7ZAs6doLy2gcG+fyw== X-Received: by 2002:a92:ce85:0:b0:340:81af:7c2c with SMTP id r5-20020a92ce85000000b0034081af7c2cmr3371382ilo.10.1686818818367; Thu, 15 Jun 2023 01:46:58 -0700 (PDT) MIME-Version: 1.0 References: <20230612163256.1.I7b8f60b3fbfda068f9bf452d584dc934494bfbfa@changeid> <86ad3ffb-fbe2-9bed-751d-684994b71e9d@collabora.com> In-Reply-To: From: Pin-yen Lin Date: Thu, 15 Jun 2023 16:46:47 +0800 Message-ID: Subject: Re: [PATCH] drm/bridge: ps8640: Drop the ability of ps8640 to fetch the EDID To: Doug Anderson Cc: AngeloGioacchino Del Regno , dri-devel@lists.freedesktop.org, Maxime Ripard , Laurent Pinchart , Sam Ravnborg , Icenowy Zheng , linux-mediatek@lists.infradead.org, Andrzej Hajda , Daniel Vetter , Dave Stevenson , David Airlie , Jernej Skrabec , Jonas Karlman , Matthias Brugger , Neil Armstrong , Robert Foss , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,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 Hi Doug, On Thu, Jun 15, 2023 at 5:31=E2=80=AFAM Doug Anderson wrote: > > Hi, > > On Wed, Jun 14, 2023 at 1:22=E2=80=AFAM AngeloGioacchino Del Regno > wrote: > > > > Il 13/06/23 01:32, Douglas Anderson ha scritto: > > > In order to read the EDID from an eDP panel, you not only need to > > > power on the bridge chip itself but also the panel. In the ps8640 > > > driver, this was made to work by having the bridge chip manually powe= r > > > the panel on by calling pre_enable() on everything connectorward on > > > the bridge chain. This worked OK, but... > > > > > > ...when trying to do the same thing on ti-sn65dsi86, feedback was tha= t > > > this wasn't a great idea. As a result, we designed the "DP AUX" > > > bus. With the design we ended up with the panel driver itself was in > > > charge of reading the EDID. The panel driver could power itself on an= d > > > the bridge chip was able to power itself on because it implemented th= e > > > DP AUX bus. > > > > > > Despite the fact that we came up with a new scheme, implemented in on > > > ti-sn65dsi86, and even implemented it on parade-ps8640, we still kept > > > the old code around. This was because the new scheme required a DT > > > change. Previously the panel was a simple "platform_device" and in DT > > > at the top level. With the new design the panel needs to be listed in > > > DT under the DP controller node. The old code allowed us to properly > > > fetch EDIDs with ps8640 with the old DTs. > > > > > > Unfortunately, the old code stopped working as of commit 102e80d1fa2c > > > ("drm/bridge: ps8640: Use atomic variants of drm_bridge_funcs"). Ther= e > > > are cases at bootup where connector->state->state is NULL and the > > > kernel crashed at: > > > * drm_atomic_bridge_chain_pre_enable > > > * drm_atomic_get_old_bridge_state > > > * drm_atomic_get_old_private_obj_state > > > > > > A bit of digging was done to see if there was an easy fix but there > > > was nothing obvious. Instead, the only device using ps8640 the "old" > > > way had its DT updated so that the panel was no longer a simple > > > "platform_deice". See commit c2d94f72140a ("arm64: dts: mediatek: > > > mt8173-elm: Move display to ps8640 auxiliary bus") and commit > > > 113b5cc06f44 ("arm64: dts: mediatek: mt8173-elm: remove panel model > > > number in DT"). > > > > > > Let's delete the old, crashing code so nobody gets tempted to copy it > > > or figure out how it works (since it doesn't). > > > > > > NOTE: from a device tree "purist" point of view, we're supposed to > > > keep old device trees working and this patch is technically "against > > > policy". Reasons I'm still proposing it anyway: > > > 1. Officially, old mt8173-elm device trees worked via the "little > > > white lie" approach. The DT would list an arbitrary/representativ= e > > > panel that would be used for power sequencing. The mode informati= on > > > in the panel driver would then be ignored / overridden by the EDI= D > > > reading code in ps8640. I don't feel too terrible breaking DTs th= at > > > contained the wrong "compatible" string to begin with. NOTE that > > > any old device trees that _didn't_ lie about their compatible wil= l > > > still work because the mode information will come from the > > > hardcoded panels in panel-edp. > > > 2. The only users of the old code were Chromebooks and Chromebooks > > > don't bake their DTs into the BIOS (they are bundled with the > > > kernel). Thus we don't need to worry about breaking someone using > > > an old DT with a new kernel. > > > 3. The old code was crashing anyway. If someone wants to fix the old > > > code instead of deleting it then they have my blessing, but witho= ut > > > a proper fix the old code isn't useful. > > > > > > I'll list this as "Fixing" the code that made the old code start > > > failing. There's not lots of reason to bring this back any further > > > than that. > > > > Hoping to see removal of non-aux EDID reading code from all drivers tha= t can > > support aux-bus is exactly why I moved Elm to the proper... aux-bus.. s= o... > > > > Yes! Let's go! > > > > > > > > Fixes: 102e80d1fa2c ("drm/bridge: ps8640: Use atomic variants of drm_= bridge_funcs") > > > > ...but this Fixes tag will cause this commit to be backported to kernel= versions > > before my commit moving Elm to aux-bus, and break display on those. > > > > I would suggest to either find a different Fixes tag, or don't add any,= since > > technically this is a deprecation commit. We could imply that the old t= echnique > > is deprecated since kernel version X.Y and get away with it. > > > > Otherwise, if you want it backported *anyway*, the safest way would be = to Cc it > > to stable and explicitly say which versions should it be backported to. > > The problem is that, as I understand it, as of commit 102e80d1fa2c > ("drm/bridge: ps8640: Use atomic variants of drm_bridge_funcs"), > things are broken anyway and you'll get a crash at bootup. However, if > you start at that commit and apply ${SUBJECT} patch, things actually > end up being less broken. It won't crash anymore and on any boards > that actually have the display that's specified in the DT compatible > the screen should actually work. Thus even without your patch to move > things over to the aux-bus it's still an improvement to take > ${SUBJECT} patch on any kernels that have that commit. > > I don't have an 'elm' device easily accessible, but I can figure out > how to get one if needed to confirm that's true. However, maybe it's > easy for you or Pin-Yen to confirm. The crash was there, but then commit 4fb912e5e190 ("drm/bridge: Introduce pre_enable_prev_first to alter bridge init order") added a NULL check on the state object in drm_atomic_bridge_chain_pre_enable(), which prevents the kernel crash on the latest kernel. And now the panel on "elm" Chromebook is actually working without an "aux-bus" node seemingly because the userspace is patient enough to keep retrying until the connector gets its state initialized. My elm device crashes again after reverting commit 4fb912e5e190. However commit 4fb912e5e190 does not contain any fixes tag, so older branches without it should be experiencing crashes without the "aux-bus" node now. Pin-yen > > If my understanding is incorrect, I have no objection to removing the > Fixes tag. I'd probably have to update the commit message a bunch too > because that was part of my justification for landing the patch in the > first place.