Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp3858762pxj; Mon, 24 May 2021 17:04:42 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwUZYNapiMaTnopWadvoVvV/oqFRe0A5r7+3vO4RmI1w0QZqRS4MnpEwbuvoURW+z3pDKJ5 X-Received: by 2002:a05:6638:44b:: with SMTP id r11mr26477381jap.85.1621901082532; Mon, 24 May 2021 17:04:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621901082; cv=none; d=google.com; s=arc-20160816; b=hFvbOlXBYniGFS2DZJQriuUhPq7uAcq0mplEDhXPaLU8Bn50NNExbVFuT8BL4rRgEC dV8X9+3gCinovPqtOt1m4Mjcl8PSR7qdnCzzzia9IG1fbaawR6yfR+vdE0LqYblfaFca VJZkshS0WU59fFYJll+8utrbVeSrlejczyy2VEQExUTuJtRqCyiuTX+Cpn4nNpGrg73T Efnp0XQKBWPtm+fQ7WpAO1W7SH6qbr7ldZ6Fl5HhpStSoyaiFwpd6rmWDqEBdWXCYfVU t3aUZkFfBaYNg808n4rmGrkn/uzWpoOdiBaYltFIhCWKmC2CfeY7PXuJxlpqvsLSbYdW 3n9g== 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=cqAqRwR7SBxsh+J9doi3iCRwS47/W3pRYFT204VDP/E=; b=x8L4Ju5fbZfL19xFLxbQHG7HeyllDo5yLyiTHRfL40ReW+NjIyeRMke8tuau69c+H7 JXIEZcNk5/2rgw3tPgxg7B+9wsYBjfXePvsp8IrZewEHK64/WR4mGWC10C2stZOi94eC GC0Dx4D4dk0456K6xC2LwhI+hdD52Rb02S8cJHv9j2qFkOV9sXjMmAuWnRGO7gevblHF 7H+4DV59BWd7aIDnPlZZ8kOdn6yNiauBMoQaM7+mYbAaQ2SNkzvc6x3qIsHd9b1vkl1r kEulQF0XQQtrhA2ZlG5Vl+OfviAdZ8+BXAiQHpbChlWjwUb2K0IsWDDzz0K0F8liPWEL ds5Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=aky6HgwC; 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 i13si595151ilm.156.2021.05.24.17.04.29; Mon, 24 May 2021 17:04:42 -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=aky6HgwC; 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 S230240AbhEYAEu (ORCPT + 99 others); Mon, 24 May 2021 20:04:50 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49528 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230025AbhEYAES (ORCPT ); Mon, 24 May 2021 20:04:18 -0400 Received: from mail-pl1-x633.google.com (mail-pl1-x633.google.com [IPv6:2607:f8b0:4864:20::633]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 06380C06138A for ; Mon, 24 May 2021 17:02:49 -0700 (PDT) Received: by mail-pl1-x633.google.com with SMTP id e15so8818909plh.1 for ; Mon, 24 May 2021 17:02:49 -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=cqAqRwR7SBxsh+J9doi3iCRwS47/W3pRYFT204VDP/E=; b=aky6HgwCtGIDItfr6KuzoZ0upAjHVKrEh+JvfnvsApKOugQWciumDUofZfKG1VsRXq hcqM/cTRtEc4o/W1Hzg+xWqziOn9l6ZI/rxCYqWNblFGhJAVxFSSkuoKp+rcNf7bRrrk 6pon/cL1JVkTyLF4oFbq3yflzkshG8WmCaJgE= 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=cqAqRwR7SBxsh+J9doi3iCRwS47/W3pRYFT204VDP/E=; b=ttmRGRelQM7FEsVimAUy+HpuOM7WUyTsLb8ikRJVX7y9pv7R3dynVhDwCPqzj1VBtL Klkx6eOhYSnBlpi3ltCp5RQyRU/4NKD8PpE8eUx7pIa/tBz1d7pv4dvNCMmu9Ko7dq0s LDSYrrAz6yXc2CR71fNWn998ttZjctK1IsnSUpxhr25onLjf8eSjcddFmHpymIbIJZ88 OFUN7qkUjE7HAU1/SpdhzKkT4Pan9w2MNCVWdFx01Y3Ktknne6dEgsRIsEUleMzoWZJ2 MusVU/HJ1TbRCD1d+qqSjJzaNGBokaE4KJtNhlMlkTQ5E+Bxb3q1gWlfb33BY9qlzyYD wU5Q== X-Gm-Message-State: AOAM530r0WCeqO8xQbidaDz2452s8jtqY3D+gjIEUzKX+BlssXeK0EJv KJ4Cabm04q6+aYJnhyLJOZGQjA== X-Received: by 2002:a17:90b:1e43:: with SMTP id pi3mr27838723pjb.51.1621900968554; Mon, 24 May 2021 17:02:48 -0700 (PDT) Received: from tictac2.mtv.corp.google.com ([2620:15c:202:201:26d1:4df0:7cdf:ce13]) by smtp.gmail.com with ESMTPSA id f18sm10696741pjh.55.2021.05.24.17.02.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 May 2021 17:02:48 -0700 (PDT) From: Douglas Anderson To: Andrzej Hajda , Neil Armstrong , Laurent Pinchart , Jonas Karlman , Sam Ravnborg Cc: linux-arm-msm@vger.kernel.org, Linus W , Lyude Paul , Bjorn Andersson , Steev Klimaszewski , robdclark@chromium.org, Maarten Lankhorst , Thierry Reding , dri-devel@lists.freedesktop.org, Stanislav Lisovskiy , Stephen Boyd , Douglas Anderson , Daniel Vetter , David Airlie , Thierry Reding , linux-kernel@vger.kernel.org Subject: [PATCH v8 07/11] drm/panel: panel-simple: Stash DP AUX bus; allow using it for DDC Date: Mon, 24 May 2021 17:01:55 -0700 Message-Id: <20210524165920.v8.7.I18e60221f6d048d14d6c50a770b15f356fa75092@changeid> X-Mailer: git-send-email 2.31.1.818.g46aad6cb9e-goog In-Reply-To: <20210525000159.3384921-1-dianders@chromium.org> References: <20210525000159.3384921-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 Reviewed-by: Lyude Paul --- (no changes since v7) 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.818.g46aad6cb9e-goog