Received: by 2002:a05:6a10:a841:0:0:0:0 with SMTP id d1csp1524586pxy; Fri, 23 Apr 2021 10:03:18 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxD1ZnWleu/aTxdN9yXUmYsZo/nPhOCXn9SI902gSuscx+5ZcrnkwKjSoJP80Ibmnor1qP9 X-Received: by 2002:a63:b915:: with SMTP id z21mr4654995pge.424.1619197398654; Fri, 23 Apr 2021 10:03:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1619197398; cv=none; d=google.com; s=arc-20160816; b=GwaSQyBdJ5eHCdeU6dO4owEpUnCQsOd/GS7Dmhou4+5y04ya2YpYeUMCyuQWMxaRQY LzBpDWCVG6OxTR4k1q0NpHBTRL/OhhchoqFaDHgXKjcLKIFeB6nMVBavk8MvCio+mEhq ApkSv/IclUa1jmb9BOQfGN6Q+nbxNP0LUsaNkQ+gMpD78QofbHNvVey/x85fKSsoZm8y nzIoV+opl2Nx0jcs96DbfYkG/uoT0/SH5L6bExZzVuNLdLhbDO8lM7w50YWj0ywEPdnZ gSEbBlfUSV/ZAHw2JH6QfkBDYhY9XmCA4jyRKsCf68ta9kTD5EwVII/IYQKdRtNtOy2s Y5MQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=2irDBnkqmM3wv0GuRvBUKKKvXT4OqqpqCxXsJUDi0yY=; b=Hh9PAkgIuDaA69QGy8zYPf6C8z9Yzf5Ml6ODxQ6y0r+hj0SCadc2RoWXvCR1tyCP0m tWxIgtfPDJopgQV5G6rYr92qXXSLcW9eMnY7r5KzpNU5u/WH63W9PPlJz8u8EDWYzFm0 qrAfNqh20DEKkdqcxLcrZYzjiP1l5zsJMjXUQow/IFo7g6Jg94nu90Uu3t94xSyOhXol rf44hF6n0icNDqt2Csn10NgocZjWWyqKUMk/xq7PTjjMWgSDgvA2dx/GF/25upo1dGQ2 fMusac6Yx87P1HfSSoyHOJebpjW7o1RMT41yK4oEwXVlGrS6ZJD9NrSqHy9AvbC7QOvz 41gA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=nY3NEiJj; 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 r17si7074868pjp.165.2021.04.23.10.03.06; Fri, 23 Apr 2021 10:03:18 -0700 (PDT) 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=nY3NEiJj; 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 S243582AbhDWRBX (ORCPT + 99 others); Fri, 23 Apr 2021 13:01:23 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47626 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243442AbhDWRAi (ORCPT ); Fri, 23 Apr 2021 13:00:38 -0400 Received: from mail-pf1-x430.google.com (mail-pf1-x430.google.com [IPv6:2607:f8b0:4864:20::430]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B37F0C06134F for ; Fri, 23 Apr 2021 09:59:59 -0700 (PDT) Received: by mail-pf1-x430.google.com with SMTP id h11so3430616pfn.0 for ; Fri, 23 Apr 2021 09:59:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=2irDBnkqmM3wv0GuRvBUKKKvXT4OqqpqCxXsJUDi0yY=; b=nY3NEiJjTVhYaqtF4JkoIDdonIMHogVty/rQuAsexe9F4i2Uhwz/XdA3pTBItC0bzq O62ca7z8DZ8y/Bjr8vjTyiwT2cmF4NCXYoGPgFaSCni0Y68OlxdULfQFsPTmFEEZP/mK NcMkrdksVuMVbn9LSzJ4n66ujsp1NyKYNVX1M= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=2irDBnkqmM3wv0GuRvBUKKKvXT4OqqpqCxXsJUDi0yY=; b=msZNqHLAfS5a0RznQIJfG5hNQ6/FYckuNERhk604bLxGrVFBzC7kUQzWeSF2NInpHG DWF3jiDOO/XujU7jTq7MT309jDd+BWpyQrD5a8LmmoSLaoDMgM/AhvAw2Ujkrn0ZD2qc gXiBqUNro5yk1uK2TAzJ7qjGlAO3YvOp7e2ZFNOH9ad++mSo7oXAqV4Q2ZHNrwm5jnJK ++bIDXAfMx6zEgaQhjeH0xmJHQnrAIJDLe227RDQw259lqW+TvYMmeUj+z0QZMPWKOJ0 8jk+DbtWi3xFSTHx4SC8di4lYrDAnr7b7D6shRc2crZqlhySaFsndq31inT8qjrvQfHp VCfQ== X-Gm-Message-State: AOAM531Szy/C+ZMMK4CBJ4e5PuX/iidvX6SzB7wjlJsMrnYOnWkb/rSA LUetWt9wZ33zBBds/kCdQSnpcA== X-Received: by 2002:a05:6a00:2bb:b029:25d:92b:bf3b with SMTP id q27-20020a056a0002bbb029025d092bbf3bmr4694708pfs.52.1619197199276; Fri, 23 Apr 2021 09:59:59 -0700 (PDT) Received: from tictac2.mtv.corp.google.com ([2620:15c:202:201:6d86:663d:71f8:6a11]) by smtp.gmail.com with ESMTPSA id v8sm5123607pfm.128.2021.04.23.09.59.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 Apr 2021 09:59:58 -0700 (PDT) From: Douglas Anderson To: Andrzej Hajda , Neil Armstrong , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Sam Ravnborg , Wolfram Sang Cc: linux-arm-msm@vger.kernel.org, robdclark@chromium.org, Stanislav Lisovskiy , Stephen Boyd , Steev Klimaszewski , Linus W , Maarten Lankhorst , linux-i2c@vger.kernel.org, Bjorn Andersson , dri-devel@lists.freedesktop.org, Douglas Anderson , Daniel Vetter , David Airlie , Thierry Reding , linux-kernel@vger.kernel.org Subject: [PATCH v5 17/20] drm/panel: panel-simple: Power the panel when reading the EDID Date: Fri, 23 Apr 2021 09:59:03 -0700 Message-Id: <20210423095743.v5.17.Ibd31b8f7c73255d68c5c9f5b611b4bfaa036f727@changeid> X-Mailer: git-send-email 2.31.1.498.g6c1eba8ee3d-goog In-Reply-To: <20210423165906.2504169-1-dianders@chromium.org> References: <20210423165906.2504169-1-dianders@chromium.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org I don't believe that it ever makes sense to read the EDID when a panel is not powered and the powering on of the panel is the job of prepare(). Let's make sure that this happens before we try to read the EDID. We use the pm_runtime functions directly rather than directly calling the normal prepare() function because the pm_runtime functions are definitely refcounted whereas it's less clear if the prepare() one is. NOTE: I'm not 100% sure how EDID reading was working for folks in the past, but I can only assume that it was failing on the initial attempt and then working only later. This patch, presumably, will fix that. If some panel out there really can read the EDID without powering up and it's a big advantage to preserve the old behavior we can add a per-panel flag. It appears that providing the DDC bus to the panel in the past was somewhat uncommon in any case. Signed-off-by: Douglas Anderson Reviewed-by: Bjorn Andersson --- (no changes since v1) drivers/gpu/drm/panel/panel-simple.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/panel/panel-simple.c b/drivers/gpu/drm/panel/panel-simple.c index 4de33c929a59..a12dfe8b8d90 100644 --- a/drivers/gpu/drm/panel/panel-simple.c +++ b/drivers/gpu/drm/panel/panel-simple.c @@ -510,12 +510,18 @@ static int panel_simple_get_modes(struct drm_panel *panel, /* probe EDID if a DDC bus is available */ if (p->ddc) { - struct edid *edid = drm_get_edid(connector, p->ddc); + struct edid *edid; + pm_runtime_get_sync(panel->dev); + + edid = drm_get_edid(connector, p->ddc); if (edid) { num += drm_add_edid_modes(connector, edid); kfree(edid); } + + pm_runtime_mark_last_busy(panel->dev); + pm_runtime_put_autosuspend(panel->dev); } /* add hard-coded panel modes */ -- 2.31.1.498.g6c1eba8ee3d-goog