Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp1106753pxj; Tue, 18 May 2021 21:53:58 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyKrVn4ZUKoQ31YSmOIG9O4ef+ArWj5rqTY+ovXFTZndb71npAEDXqsQZ+hpjalfW/zYVVB X-Received: by 2002:a17:906:a1d2:: with SMTP id bx18mr10076280ejb.423.1621400037966; Tue, 18 May 2021 21:53:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621400037; cv=none; d=google.com; s=arc-20160816; b=Sbr/nho/pcCx2bRPQ0Bts9jnonDhiMzqTp3iu5bUkfylrssrnSMyBnueG3rk2U01vY wJBVYDL8w/xT1MYBfzUr3uaMln+oFSrR284A+KUsWJ9dRJW8Q8Tf6Og072HomghH76+A NZelpZMjFIGtAH3b1rl2A0OMbmwscAPUgfuiU3ZZL2fkB80D08QUKlRFgRbJT/WenyrY v89oxAckdHZ6ec/o8P077FBJvt+8/Yzigw1BtPZqdP+PDi85JU4Af0Qi5R70skTqk33k 7f7BUeM/SYxHclsObrcPNR3bXXARuObOAbSnhWw9MCq5ZP+Mlaiby7wB3/cppzp1NWvS fSQw== 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=L1nKDGF6pGJe0IpKS5C/RodzguTsVg0ZIzYR3jS4u4k=; b=LEwGAa/kTUdrEE1LeIkn9S/X1Q+Mxw7SktrgLfra0RZZ3hnJIecZm3h3A2SzNvc3uc wzNfrka2sJK37X7al2mkb/JCkawHyjDYBwf8FM49UEXRvZupH3SlDKUEx3rfZ7JxVd6t G7LfmBrwb0uTzYYWO8N75u0ohV4pJ+QjWkxZBwkRT5+wOhW5nNVd/ez2FzFHACMz+EIe Ywi2/ctM7OhUhDxQo3HPxRIyfrhB4Jd+uWStnOfsDlr2GHYGwoKbtutI3qC/VTApisg/ ZhJfMNrD4NZxa6QQzxlHuD9iNnnEH00huzQGqLZs6riDwIz3EdANTLlvVhtg4mu907uE 9CpQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b="fWtS/TP4"; 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 cw3si18857642ejb.264.2021.05.18.21.53.35; Tue, 18 May 2021 21:53:57 -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="fWtS/TP4"; 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 S238428AbhEQULb (ORCPT + 99 others); Mon, 17 May 2021 16:11:31 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32988 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238045AbhEQULM (ORCPT ); Mon, 17 May 2021 16:11:12 -0400 Received: from mail-pg1-x52f.google.com (mail-pg1-x52f.google.com [IPv6:2607:f8b0:4864:20::52f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 05838C06138B for ; Mon, 17 May 2021 13:09:55 -0700 (PDT) Received: by mail-pg1-x52f.google.com with SMTP id v14so2670308pgi.6 for ; Mon, 17 May 2021 13:09:55 -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=L1nKDGF6pGJe0IpKS5C/RodzguTsVg0ZIzYR3jS4u4k=; b=fWtS/TP40LqAlfZ78nEJ1PtGoPOzEu9gxI8cBuKOzb3ckduQ8M34kJrg774jQAOf/y JIQLcpDk8HU/9Fu1vgLxJk+O0CxqxE8UNHL0YKIpuErycVwSIn+InsXfScFEg6ztd0Ru tAuBqLmQGLn3HJF6PdAncObwhOeO1jWcf5rMA= 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=L1nKDGF6pGJe0IpKS5C/RodzguTsVg0ZIzYR3jS4u4k=; b=kSWwJo+kuva7DwsYE3PUMuG/QrYGzJfEw68rQXZ65V1n9jqLbPpJmzinU9jcitolW9 uWkyhpFtSTlggynK1e60dQxR0Z9knmUdE+Mckj0kFvBq2cPmxvJuaWPoh+b6Han7OmXg MWVaKOJfYy08eQo+t6PBuIpZH2qlbWr2DOAzPxWtw7GneMLZl/oMi8JBufmW/tvAXah4 UL9wa+rbNHso86Y03QHhAos85s5zYuodAcy2s/jkOh0fXAvtx1hItZqAB26F9iefR+8Y mNFGNbV6ZafbNR/jU3S28MuHGSkhCARw2sNE4idbHdwjHo7NWe5cMlZ0OYod/b3LJdqI zIig== X-Gm-Message-State: AOAM533BT7nC5YTI0aKvuz3p4PHoNbZtFodoVrR/iXevZiMATyDu5wMx 5M+VlUwq54l+kuy2WKO8UulOBw== X-Received: by 2002:a63:8f15:: with SMTP id n21mr1212991pgd.366.1621282194627; Mon, 17 May 2021 13:09:54 -0700 (PDT) Received: from tictac2.mtv.corp.google.com ([2620:15c:202:201:bc91:c597:ded0:7930]) by smtp.gmail.com with ESMTPSA id x19sm9078941pgj.66.2021.05.17.13.09.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 May 2021 13:09:53 -0700 (PDT) From: Douglas Anderson To: Andrzej Hajda , Neil Armstrong , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Sam Ravnborg Cc: Stanislav Lisovskiy , Lyude Paul , Thierry Reding , Stephen Boyd , Bjorn Andersson , linux-arm-msm@vger.kernel.org, Maarten Lankhorst , Linus W , dri-devel@lists.freedesktop.org, robdclark@chromium.org, Steev Klimaszewski , Douglas Anderson , Daniel Vetter , David Airlie , Thierry Reding , linux-kernel@vger.kernel.org Subject: [PATCH v7 06/10] drm/panel: panel-simple: Stash DP AUX bus; allow using it for DDC Date: Mon, 17 May 2021 13:09:03 -0700 Message-Id: <20210517130450.v7.6.I18e60221f6d048d14d6c50a770b15f356fa75092@changeid> X-Mailer: git-send-email 2.31.1.751.gd2f1c929bd-goog In-Reply-To: <20210517200907.1459182-1-dianders@chromium.org> References: <20210517200907.1459182-1-dianders@chromium.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org If panel-simple is instantiated as a DP AUX bus endpoint then we have access to the DP AUX bus. Let's stash it in the panel-simple structure, leaving it NULL for the cases where the panel is instantiated in other ways. If we happen to have access to the DP AUX bus and we weren't provided the ddc-i2c-bus in some other manner, let's use the DP AUX bus for it. Signed-off-by: Douglas Anderson --- Changes in v7: - Patch using the DP AUX for DDC new for v7. drivers/gpu/drm/panel/panel-simple.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/panel/panel-simple.c b/drivers/gpu/drm/panel/panel-simple.c index d3b5ae22d939..b09be6e5e147 100644 --- a/drivers/gpu/drm/panel/panel-simple.c +++ b/drivers/gpu/drm/panel/panel-simple.c @@ -37,6 +37,7 @@ #include #include #include +#include #include #include @@ -186,6 +187,7 @@ struct panel_simple { struct regulator *supply; struct i2c_adapter *ddc; + struct drm_dp_aux *aux; struct gpio_desc *enable_gpio; struct gpio_desc *hpd_gpio; @@ -658,7 +660,8 @@ static void panel_simple_parse_panel_timing_node(struct device *dev, dev_err(dev, "Reject override mode: No display_timing found\n"); } -static int panel_simple_probe(struct device *dev, const struct panel_desc *desc) +static int panel_simple_probe(struct device *dev, const struct panel_desc *desc, + struct drm_dp_aux *aux) { struct panel_simple *panel; struct display_timing dt; @@ -674,6 +677,7 @@ static int panel_simple_probe(struct device *dev, const struct panel_desc *desc) panel->enabled = false; panel->prepared_time = 0; panel->desc = desc; + panel->aux = aux; panel->no_hpd = of_property_read_bool(dev->of_node, "no-hpd"); if (!panel->no_hpd) { @@ -708,6 +712,8 @@ static int panel_simple_probe(struct device *dev, const struct panel_desc *desc) if (!panel->ddc) return -EPROBE_DEFER; + } else if (aux) { + panel->ddc = &aux->ddc; } if (desc == &panel_dpi) { @@ -4633,7 +4639,7 @@ static int panel_simple_platform_probe(struct platform_device *pdev) if (!id) return -ENODEV; - return panel_simple_probe(&pdev->dev, id->data); + return panel_simple_probe(&pdev->dev, id->data, NULL); } static int panel_simple_platform_remove(struct platform_device *pdev) @@ -4913,7 +4919,7 @@ static int panel_simple_dsi_probe(struct mipi_dsi_device *dsi) desc = id->data; - err = panel_simple_probe(&dsi->dev, &desc->desc); + err = panel_simple_probe(&dsi->dev, &desc->desc, NULL); if (err < 0) return err; @@ -4966,7 +4972,7 @@ static int panel_simple_dp_aux_ep_probe(struct dp_aux_ep_device *aux_ep) if (!id) return -ENODEV; - return panel_simple_probe(&aux_ep->dev, id->data); + return panel_simple_probe(&aux_ep->dev, id->data, aux_ep->aux); } static void panel_simple_dp_aux_ep_remove(struct dp_aux_ep_device *aux_ep) -- 2.31.1.751.gd2f1c929bd-goog