From nobody Sun Nov 24 09:15:58 2024 Received: from gloria.sntech.de (gloria.sntech.de [185.11.138.130]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A4B2D1DFDB1; Wed, 6 Nov 2024 12:34:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.11.138.130 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1730896490; cv=none; b=pCKwjKyEF+1mKH7ArzLBEwJABHgLljZuzqUZsFj8zUNVGgk5on0BxJN+mNJmayassFrcC6U2xJ1vzx8UCLxlEMS+hONfIxiDmtFHjDhAGp7NBnUAYA7Una3GSFuSNWIksKAnJi7hsFwTMB83Ybe0afK/leKttuktwh41z/4GRsw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1730896490; c=relaxed/simple; bh=GsUqmZ5ZUi52WwdjqTnsD5aUsm8U0mmw2MNGhWRpp34=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ia3CBbdz6y6Y1oruNchwn1FFZT5fCrPg1N4ybrEH+kiScJ3HLUpNYypJi4SXzY5gLulxcK6l7TCXGDTdkaYrVdn5jXmB9Y1hZpqAKrR5bLQG5FAxiRNmgSLw8SDSxihliTQLB+xOB74UUeABoc+SKyDG6MbP29CLbywfE9WDN2A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=sntech.de; spf=pass smtp.mailfrom=sntech.de; dkim=pass (2048-bit key) header.d=sntech.de header.i=@sntech.de header.b=ldo25XF7; arc=none smtp.client-ip=185.11.138.130 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=sntech.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sntech.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=sntech.de header.i=@sntech.de header.b="ldo25XF7" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sntech.de; s=gloria202408; h=Content-Transfer-Encoding:MIME-Version:References: In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Sender:Reply-To:Content-Type: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=5mP5vPSB7lj6KEcYRNlcFbIWqijPXPAhvPLnSS85M1Y=; b=ldo25XF7Vdy7pyXrmDHTTYimAh m+APd0ECPyQ/WheI5ggFwil8ZisGnOj7VbEzWpjdalNRqy4PuH1v4k7iqOArfoVhAN36r7u/mUMcH lRj2QBVu39gf2YsWdcliX7pB960JkKUWgISwquoPaPj/6YMdm88q019tkfdrGG4tiVf0kjBMMlHwY RhqVDscuxzyzDF2ojeXU0J3cP3xMMxBPf6NTegXDEUwrvRW7u8UaYhfVfy2w/Fc05cnrgu6Cz/SRX 9XeDBE3130nZYT2IAwHo1HIrUqEEVmsPBzp2Pb0uS4Q3K9FJtLGpxiUpuzzCK5kb4vxFEF44uQI2e ZX5JMuPg==; Received: from i53875b28.versanet.de ([83.135.91.40] helo=localhost.localdomain) by gloria.sntech.de with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1t8fEo-00076s-Hs; Wed, 06 Nov 2024 13:34:18 +0100 From: Heiko Stuebner To: heiko@sntech.de Cc: andy.yan@rock-chips.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, andrzej.hajda@intel.com, neil.armstrong@linaro.org, rfoss@kernel.org, Laurent.pinchart@ideasonboard.com, jonas@kwiboo.se, jernej.skrabec@gmail.com, dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, quentin.schulz@cherry.de, Heiko Stuebner Subject: [PATCH 1/3] drm/bridge/synopsys: Add MIPI DSI2 host controller bridge Date: Wed, 6 Nov 2024 13:33:02 +0100 Message-ID: <20241106123304.422854-2-heiko@sntech.de> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20241106123304.422854-1-heiko@sntech.de> References: <20241106123304.422854-1-heiko@sntech.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Heiko Stuebner Add a Synopsys Designware MIPI DSI host DRM bridge driver for their DSI2 host controller, based on the Rockchip version from the driver rockchip/dw-mipi-dsi2.c in their vendor-kernel with phy & bridge APIs. While the driver is heavily modelled after the previous IP, the register set of this DSI2 controller is completely different and there are also additional properties like the variable-width phy interface. Signed-off-by: Heiko Stuebner --- drivers/gpu/drm/bridge/synopsys/Kconfig | 6 + drivers/gpu/drm/bridge/synopsys/Makefile | 1 + .../gpu/drm/bridge/synopsys/dw-mipi-dsi2.c | 1034 +++++++++++++++++ include/drm/bridge/dw_mipi_dsi2.h | 94 ++ 4 files changed, 1135 insertions(+) create mode 100644 drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi2.c create mode 100644 include/drm/bridge/dw_mipi_dsi2.h diff --git a/drivers/gpu/drm/bridge/synopsys/Kconfig b/drivers/gpu/drm/brid= ge/synopsys/Kconfig index ca416dab156d..f3ab2f985f8c 100644 --- a/drivers/gpu/drm/bridge/synopsys/Kconfig +++ b/drivers/gpu/drm/bridge/synopsys/Kconfig @@ -59,3 +59,9 @@ config DRM_DW_MIPI_DSI select DRM_KMS_HELPER select DRM_MIPI_DSI select DRM_PANEL_BRIDGE + +config DRM_DW_MIPI_DSI2 + tristate + select DRM_KMS_HELPER + select DRM_MIPI_DSI + select DRM_PANEL_BRIDGE diff --git a/drivers/gpu/drm/bridge/synopsys/Makefile b/drivers/gpu/drm/bri= dge/synopsys/Makefile index 9869d9651ed1..9dc376d220ad 100644 --- a/drivers/gpu/drm/bridge/synopsys/Makefile +++ b/drivers/gpu/drm/bridge/synopsys/Makefile @@ -8,3 +8,4 @@ obj-$(CONFIG_DRM_DW_HDMI_CEC) +=3D dw-hdmi-cec.o obj-$(CONFIG_DRM_DW_HDMI_QP) +=3D dw-hdmi-qp.o =20 obj-$(CONFIG_DRM_DW_MIPI_DSI) +=3D dw-mipi-dsi.o +obj-$(CONFIG_DRM_DW_MIPI_DSI2) +=3D dw-mipi-dsi2.o diff --git a/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi2.c b/drivers/gpu/d= rm/bridge/synopsys/dw-mipi-dsi2.c new file mode 100644 index 000000000000..43738fe3cb93 --- /dev/null +++ b/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi2.c @@ -0,0 +1,1034 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (c) 2024, Fuzhou Rockchip Electronics Co., Ltd + * + * Modified by Heiko Stuebner + * This generic Synopsys DesignWare MIPI DSI2 host driver is based on the + * Rockchip version from rockchip/dw-mipi-dsi2.c converted to use bridge A= PIs. + */ + +#include +#include +#include +#include +#include +#include +#include + +#include