Received: by 2002:a05:6a10:a841:0:0:0:0 with SMTP id d1csp1524658pxy; Fri, 23 Apr 2021 10:03:23 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzSL5XBrokGHkCziJVj+fSm5gCIXTsjl2Y42jK1zqN9OCfN0ALQKc+uJQslNXRi5XGwgXQG X-Received: by 2002:aa7:9108:0:b029:251:7caf:cec with SMTP id 8-20020aa791080000b02902517caf0cecmr4672381pfh.13.1619197403752; Fri, 23 Apr 2021 10:03:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1619197403; cv=none; d=google.com; s=arc-20160816; b=VJ9gzZVdEWHS+ppmsbn0U9ZTHKRHdDbzfxkkuvdDwJqg0kBisAv1wJRXHzeK1+8p/i YDGql8t8PG+Iq9HWQxdAZMXDooP18ro2OlXAhvlqk4nt/2GgmSLbc+ngBgqQzbCaIZv/ BWwSnbxODZXDE9wFj70QumNcKwxNoyO65Y4ss+PWSci0ckJxhTnCljQNhdTodXmrPzDv OArbcrKQJoGgs+XoYZUmOGpoey70yIkbZhdkQ504DYrr9vTmlIo/aSfWPaXM6AnBboGi q+KqBOeo5GkKQo0Hc+m1WbesACyDmV2X3HLLFJmileVzBSmmRzcEkSvt/Uu/4v4t/z3/ FrNA== 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=vN5od8em+5FKe5XxLDBfqxHA4H7++ijxC9/2y7ssun0=; b=b3XQaweXS8ktTrdufGQYp+vF9p8pogbw53xzqNroMptGqDuhwIPZCQIu3TmvwqrKMt NcypaU3ptUXhJNYMewjOJX5O6FColaIl35c3pHvtPvXqHuSlkHxVCo8J5Z35ytIF1M9L uK5kVxlJ4UReWYsO9CpYnrM421qlXIKr3TGOPGhrdIXzWTWJ5g11LyhHF7xcM808t8E4 0kUxTnkVtr9wCC5YC52o0ffbApd/40RQrpBHU/agYUYxvm8wVrCKfcKihuoGZbN7YD5v EGSmiQdRplxncl65JHJr0aAMRVW0ATcHdp1DvHGqGBEOofgWED9RRKZFVjnrPh6s7+vR Q3AQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=PbMi+Tmz; 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 lk18si8550966pjb.69.2021.04.23.10.03.11; Fri, 23 Apr 2021 10:03:23 -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=PbMi+Tmz; 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 S243375AbhDWRBc (ORCPT + 99 others); Fri, 23 Apr 2021 13:01:32 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47614 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243353AbhDWRAj (ORCPT ); Fri, 23 Apr 2021 13:00:39 -0400 Received: from mail-pg1-x532.google.com (mail-pg1-x532.google.com [IPv6:2607:f8b0:4864:20::532]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C30BCC061358 for ; Fri, 23 Apr 2021 10:00:00 -0700 (PDT) Received: by mail-pg1-x532.google.com with SMTP id y32so35590927pga.11 for ; Fri, 23 Apr 2021 10:00:00 -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=vN5od8em+5FKe5XxLDBfqxHA4H7++ijxC9/2y7ssun0=; b=PbMi+Tmz6a3EpvJ9X3Y9FXr95RRXZ4WgYEkkFrYH8DG3I9WXhyCde+nuxI9ZYVJL5m dpxwDpU6JhRXyHgwP6P4TkEmQCsf7BHAh+TtGCZr51NdhdfE7GjjXZtF76870E8VeXbG RSiv0/YdYeqcTbVH9s2F5nMI8pbO99Lz5yBp4= 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=vN5od8em+5FKe5XxLDBfqxHA4H7++ijxC9/2y7ssun0=; b=QBh6Iyx+eTRfOEJA5VQ54+KR1giogKdZNbSNhJz2sxr+dS/pURtT9sR78qlVB4yTz0 U6gZ9PzBo/BY5iDQFz0vFIjPmNv9da3b1SvEzy9WjXz3i5frLw0/hf955kUjLuQAt8Ke I4NGBAEOQ43mF5RnmJ0LDaD/YqtsYfyrEdIkXXi0vyYIGBrm5+BotmA6bxXu/YuubBMU 3rSK2gT+uOncgXBY/UVpxkD0UMU+cuxlLjyM7ijmuIFGCmxSC7KYzE3ADBXwjZrGH61E MorCseM9t0N6bUx7b6ApFHRlHoRG7tI8D8bmiqgMMNtiiAaxTlJh+4KFLYPtqYaATjy+ w3zA== X-Gm-Message-State: AOAM533tufinTwWQJl5D7gdbcCfGTrszjVqhQvN3pPvu7ctaPoX5GKQY R9rUtMjuIbd6KxzsKWCnxGD7Zg== X-Received: by 2002:a63:f303:: with SMTP id l3mr4753122pgh.263.1619197200372; Fri, 23 Apr 2021 10:00:00 -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.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 Apr 2021 10:00:00 -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 18/20] drm/panel: panel-simple: Cache the EDID as long as we retain power Date: Fri, 23 Apr 2021 09:59:04 -0700 Message-Id: <20210423095743.v5.18.If050957eaa85cf45b10bcf61e6f7fa61c9750ebf@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 It doesn't make sense to go out to the bus and read the EDID over and over again. Let's cache it and throw away the cache when we turn power off from the panel. Autosuspend means that even if there are several calls to read the EDID before we officially turn the power on then we should get good use out of this cache. Signed-off-by: Douglas Anderson Reviewed-by: Bjorn Andersson --- (no changes since v1) drivers/gpu/drm/panel/panel-simple.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/panel/panel-simple.c b/drivers/gpu/drm/panel/panel-simple.c index a12dfe8b8d90..9be050ab372f 100644 --- a/drivers/gpu/drm/panel/panel-simple.c +++ b/drivers/gpu/drm/panel/panel-simple.c @@ -189,6 +189,8 @@ struct panel_simple { struct gpio_desc *enable_gpio; struct gpio_desc *hpd_gpio; + struct edid *edid; + struct drm_display_mode override_mode; enum drm_panel_orientation orientation; @@ -345,6 +347,9 @@ static int panel_simple_suspend(struct device *dev) regulator_disable(p->supply); p->unprepared_time = ktime_get(); + kfree(p->edid); + p->edid = NULL; + return 0; } @@ -510,15 +515,13 @@ static int panel_simple_get_modes(struct drm_panel *panel, /* probe EDID if a DDC bus is available */ if (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); - } + if (!p->edid) + p->edid = drm_get_edid(connector, p->ddc); + + if (p->edid) + num += drm_add_edid_modes(connector, p->edid); pm_runtime_mark_last_busy(panel->dev); pm_runtime_put_autosuspend(panel->dev); -- 2.31.1.498.g6c1eba8ee3d-goog