Received: by 2002:a05:6a11:4021:0:0:0:0 with SMTP id ky33csp4119660pxb; Mon, 27 Sep 2021 09:46:53 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyJBII4jNwIWRHhiCTC9wjnEhY6+EoPFF94JAoDtXU/lyL2z1ZnO3+2cnOC+YqCeMgXnRkP X-Received: by 2002:a05:6402:411:: with SMTP id q17mr1089651edv.35.1632761213418; Mon, 27 Sep 2021 09:46:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1632761213; cv=none; d=google.com; s=arc-20160816; b=igM/1O9irW08vCMJ3Ar8do8B+jwKcGAmHCdiQZJDvRia4b95JCBFNzrgdpbgGHXyWE pS98djZAOYs1m99Fcipodll9QCNkm0klIZaUt3a/2Y+b9xinzJqhoBTJOyur7prSh3K4 pElGYdWD4FIjQ/lBjvYsi+mIpEtwZzrvizNN2/RRSeWtqwD9cW74be7xsPHxFfOX71rw WRn7MoP5iop0akQz3I3aUwDwd2PJ9e8v9I4nwatxfpACE7oozvU7+JEFGKo22c/Zw2/Q KkMBEV4Lk3dHBdsvqxxDaOi4uHvXto1vRUEoM5azqK+CB3vZuuo/EXDO1nEpzkRP8XDI WYkA== 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=BCIaFfyAqCtZh0wUyZSMO+rmEFnD5zeAfuhAAioFjEA=; b=YqbKWnFCevjni8JiH1rzSI+2vsjmM8MtxXxl1otueSlvQdJihufwDmXMrc7BXyQfYR tR0oGx/1+xnMJmbJFAmyD/UhDA14QBO11pNGGbv0D/0QTKvMzbTBlsFGfyNF10d1YxyR 4vCPi2WzXol/RGYaXQ/2/eurMwfI1Q/lA1aLUNfI6H6vhwaU6D4yEyYhZqbFsB2uSn5v pgr+JikYeH8HFsNsSApAEBck7Z90UVOdLNda+3G8FYH5uXF87rG8exbm2gGh9V5YXM85 YV73ndRU6i+7FCk18u+a1T47SuKSEsSnDwP5bvIKrPIV3pFQKxDP3LPH1atpDys2IuRS FDmA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@goldelico.com header.s=strato-dkim-0002 header.b=QYxYvONU; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id m12si6706771ejn.240.2021.09.27.09.46.28; Mon, 27 Sep 2021 09:46:53 -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=@goldelico.com header.s=strato-dkim-0002 header.b=QYxYvONU; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235673AbhI0Qqe (ORCPT + 99 others); Mon, 27 Sep 2021 12:46:34 -0400 Received: from mo4-p03-ob.smtp.rzone.de ([85.215.255.102]:19969 "EHLO mo4-p03-ob.smtp.rzone.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235500AbhI0Qq0 (ORCPT ); Mon, 27 Sep 2021 12:46:26 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1632761073; s=strato-dkim-0002; d=goldelico.com; h=References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=BCIaFfyAqCtZh0wUyZSMO+rmEFnD5zeAfuhAAioFjEA=; b=QYxYvONUUyMF3zywlECKzqm0lgWlkZSromxFEHFC3JXgu7YGI2yXekuY1/BnDM0L78 5q9fmo16fG0qhS23Ja1k26oofHYbFtigjzbpGSlpXckTStmN0X/tZCLvx5DHTBAf1YTv sKLUHvDqfd8PZDaR60egrO5zVaylQAlhfryvlNB5O9qk0+Yv3rTnvVYjME4E97z7hdwX TZqtTAOed/3MtfM8bXdJTjNtox1EmxnoqupjFEAzvvc+zZElV+XfXrvfe7h/VSmN/9Gh WyCnIIDuyC7A2EwQaaWjIvEt6YUfwEa0G38xU5fVRcRz/LbNb2U8WKunnU6dkCM4wC/f rtQw== Authentication-Results: strato.com; dkim=none X-RZG-AUTH: ":JGIXVUS7cutRB/49FwqZ7WcJeFKiMhflhwDubTJ9o1KHeBQyh+ITDDFrDb4=" X-RZG-CLASS-ID: mo00 Received: from iMac.fritz.box by smtp.strato.de (RZmta 47.33.8 DYNA|AUTH) with ESMTPSA id I01f74x8RGiXavC (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits)) (Client did not present a certificate); Mon, 27 Sep 2021 18:44:33 +0200 (CEST) From: "H. Nikolaus Schaller" To: Paul Cercueil , Rob Herring , Mark Rutland , Thomas Bogendoerfer , "H. Nikolaus Schaller" , Geert Uytterhoeven , Kees Cook , "Eric W. Biederman" , Miquel Raynal , David Airlie , Daniel Vetter , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jernej Skrabec , Ezequiel Garcia , Harry Wentland , Sam Ravnborg , Maxime Ripard , Hans Verkuil , Liam Girdwood , Mark Brown , Paul Boddie Cc: devicetree@vger.kernel.org, linux-mips@vger.kernel.org, linux-kernel@vger.kernel.org, letux-kernel@openphoenux.org, Jonas Karlman , dri-devel@lists.freedesktop.org Subject: [PATCH v4 04/10] drm/bridge: synopsis: Add mode_fixup and bridge timings support Date: Mon, 27 Sep 2021 18:44:22 +0200 Message-Id: X-Mailer: git-send-email 2.31.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Paul Boddie The platform-specific configuration structure is augmented with mode_fixup and timings members so that specialisations of the Synopsys driver can introduce mode flags and bus flags. Signed-off-by: Paul Boddie Signed-off-by: Ezequiel Garcia Signed-off-by: H. Nikolaus Schaller --- drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 7 +++++++ include/drm/bridge/dw_hdmi.h | 5 +++++ 2 files changed, 12 insertions(+) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c index f08d0fded61f..f082e14320e1 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c @@ -2767,6 +2767,11 @@ static int dw_hdmi_bridge_atomic_check(struct drm_bridge *bridge, bridge_state->input_bus_cfg.format, bridge_state->output_bus_cfg.format); + if (hdmi->plat_data->mode_fixup) + if (!hdmi->plat_data->mode_fixup(bridge, &crtc_state->mode, + &crtc_state->adjusted_mode)) + return -EINVAL; + return 0; } @@ -3416,6 +3421,8 @@ struct dw_hdmi *dw_hdmi_probe(struct platform_device *pdev, #ifdef CONFIG_OF hdmi->bridge.of_node = pdev->dev.of_node; #endif + if (plat_data->timings) + hdmi->bridge.timings = plat_data->timings; memset(&pdevinfo, 0, sizeof(pdevinfo)); pdevinfo.parent = dev; diff --git a/include/drm/bridge/dw_hdmi.h b/include/drm/bridge/dw_hdmi.h index 2a1f85f9a8a3..743038200044 100644 --- a/include/drm/bridge/dw_hdmi.h +++ b/include/drm/bridge/dw_hdmi.h @@ -8,6 +8,7 @@ #include +struct drm_bridge; struct drm_display_info; struct drm_display_mode; struct drm_encoder; @@ -142,6 +143,10 @@ struct dw_hdmi_plat_data { enum drm_mode_status (*mode_valid)(struct dw_hdmi *hdmi, void *data, const struct drm_display_info *info, const struct drm_display_mode *mode); + bool (*mode_fixup)(struct drm_bridge *bridge, + const struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode); + const struct drm_bridge_timings *timings; /* Vendor PHY support */ const struct dw_hdmi_phy_ops *phy_ops; -- 2.31.1