From patchwork Fri Dec 9 15:23:31 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jagan Teki X-Patchwork-Id: 2525 Return-Path: X-Original-To: linux-amarula@patchwork.amarulasolutions.com Delivered-To: linux-amarula@patchwork.amarulasolutions.com Received: from mail-pg1-f199.google.com (mail-pg1-f199.google.com [209.85.215.199]) by ganimede.amarulasolutions.com (Postfix) with ESMTPS id 99E683F039 for ; Fri, 9 Dec 2022 16:26:07 +0100 (CET) Received: by mail-pg1-f199.google.com with SMTP id a33-20020a630b61000000b00429d91cc649sf3215995pgl.8 for ; Fri, 09 Dec 2022 07:26:07 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1670599566; cv=pass; d=google.com; s=arc-20160816; b=EOANOKG5T9hhD4QVKmX+bbSFT+GUWbWGw/t7Vn016+YWZRNguLDMrOK32leWa62v7C fJFmb8fizfGtmgxleCyC/nQ8gPxOBCpSxps5kcSdV+4witiTJgt774DPBCZeB3w4AfTv C7ceKkZnrnsiw2Xogjv8bkLcXKZTNcPDQq1JogEKiHCKguEGiQ6nbvHx06Jt4yrXiDYG KhNIoMivfydCkVToDDWFHVH7ADrLzNZsx5sRnwv3cZwNn3lMl/uq7kEexqxoJ1kwRcmU hJsMODwcGDt9en/CbyiVOrUD3k75JFD+7UaMxSm8/KsNss5mgWFMKsofboH02cFY2s3a 7GVA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-unsubscribe:list-archive:list-help:list-post:list-id :mailing-list:precedence:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=O7J4Cqe1ccyL9UGJ2B0eI5RcO8bW3TbUrAfUZxwUk9M=; b=W0x2ieshezDjYS0IEvC7FMcLKaOsDFc4ePOqloIADgR4phH5K8utHoptYTXnGS2w2L OjbT6Eg4nqA3/q1nrACQ+xV10IFi4D0VGfa+Bz+bDQBiruO0dZEOSD967XeGAnjMu+Nc 8U7+bV0CZUOlxuoyr9Yx/iE0TjJJi/HsbuRtqmovVpjUYxdx1PdIRdwheDsnQQzvea8o BlrMvSLyE3VkXXXHe3qt/lVIAdwgmr1GHelLu1VgWV9wCnr2upPp5X4+k+xQJpwIL+Pv n0giAT76wgKc/xLljhMu3RIZ7NKsxoqp2xPlIB3LjQlZB/YRtmSbGsM+rMsAHQbI/iYg TrLA== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=igKnf4vT; spf=pass (google.com: domain of jagan@amarulasolutions.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=jagan@amarulasolutions.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=amarulasolutions.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; h=list-unsubscribe:list-archive:list-help:list-post:list-id :mailing-list:precedence:x-original-authentication-results :x-original-sender:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to; bh=O7J4Cqe1ccyL9UGJ2B0eI5RcO8bW3TbUrAfUZxwUk9M=; b=nN3WRe/t0LDPNMDGb36Fe0JwzQicbLnurdrqw4gfLC61mI+mWPusr0xStmrPXnoNM3 EHRbHwlYL2b5t2Qg+YjK+ERY/MOu934j/se+9WT9VfBsuCm8B0YikxfCPQt/9QF1fydJ SH/WqtCntPH6IUjZPW+cyrgEQ4wlqwAB6TxeU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=list-unsubscribe:list-archive:list-help:list-post :x-spam-checked-in-group:list-id:mailing-list:precedence :x-original-authentication-results:x-original-sender:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=O7J4Cqe1ccyL9UGJ2B0eI5RcO8bW3TbUrAfUZxwUk9M=; b=y7s2uAXpu9FFAFZZSUAVJRDfh7Cevf3hZqMfk8YZCquaGeKTyvwH29oRWJhiy4MJNl EYny5hb2Q1LLV3Ji8JFTd3NOkw/Ykp6S92IZrs9II7680A9mtzoInBhBZQmB8aFOV2D8 m/wvlaEDiBpV1uNB/eq2ccXaetaUEuZlvwfFljLyCXITnuPwhXJBOUrqPTQ0QRxjpzxi ucZPEuHRMTlEg5NfgjG7DGTyvDpuwKUv8XwqmJ62JHlc8El0irPzMvKfaTBuv5mLOqXS uZjTF2ta32vfGb8NE7GYoIgJeOYTeqkAN0aXtpM4UAYnXHNj7EpLZRnVc8wBPCzoSp7E fiWQ== X-Gm-Message-State: ANoB5plf1fUUhCAroYb9btQJc03Gqjx8l4lR37WW6UNCTFruq5bl0L0V FcrK1Ekib6H8cs1X0jOVi9lmkUN5 X-Google-Smtp-Source: AA0mqf6Cfy0tERDGYhR/tO2Kytyx3fBagri1r162d6/uMjX6MVtP1yeyV/Q03msxFduxq4nBT/cKAg== X-Received: by 2002:a63:5c65:0:b0:478:d6da:85d with SMTP id n37-20020a635c65000000b00478d6da085dmr11530664pgm.60.1670599566309; Fri, 09 Dec 2022 07:26:06 -0800 (PST) X-BeenThere: linux-amarula@amarulasolutions.com Received: by 2002:a17:902:7b86:b0:188:62b8:814f with SMTP id w6-20020a1709027b8600b0018862b8814fls8511447pll.1.-pod-prod-gmail; Fri, 09 Dec 2022 07:26:05 -0800 (PST) X-Received: by 2002:a17:902:e04b:b0:189:b6af:ab22 with SMTP id x11-20020a170902e04b00b00189b6afab22mr5591726plx.43.1670599565054; Fri, 09 Dec 2022 07:26:05 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670599565; cv=none; d=google.com; s=arc-20160816; b=N8W6X/kpY1vq9tyEtqOwL18uaCBqWAB4w9A5N59pqPoA3c+Nx9W6M0aTfUWjQJTF/5 8JuN2U9mIO7ns3Op8JaFH02/RaFqEsLKrRNhY998rwqYfx9PP2/gHrLIzu9O7OVBN2lf O3NIdhsmGbeZvvVOmLE7vsI4hPF9b7YO4yFaWioflKpAWFWU+sWhk9rbEkJghIkQLJD0 BPBKGRfYNmyJBBxoRXCvgi+bluwn9jAPSXFkGrwpC8SrpqRZzB6KPL89WpXMOH4E6QYg 8TK0o+Dbk5eAlzt79aGmUxWZbr81J07wFquqficltWYip7Gwv1DolYXNvPTRZ3tVfCWq dnvg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=r0GiuO1bGIhUx6aqMBPYCESC09+BB+9++Mb9QdFk6SQ=; b=Wnf2JHvwzbGooDv0V5ZyGYpYqIEM1ttfs+Qeq66zfwhnJPXCkDqQmhRyfroTZEgwKq LzvcnBVJJBgssG4Y6kHdYI+0y/eVjcpMnWNJveoAW0fXU/gPDg2aHcjLAKgXvyp7aAV8 gulVCYqrqQ6JebeeavbL0OLHYN9jqVsAGRgpmJrkEXt5IJ40Om4HdIvXWPpVrIzPvitJ 6Iir0eSgO55cjRIK209lT4/R+/KsEtOFV/S9Cci0bnlwDM83WeN/oQ9npM0aL5+s3Ogi Dy1kCF+6mGHKhTgVTMAQMHa70+FqgXXserY8JW5+OrhtOfcd3vladTWjCDlnDePFr9CY Wuwg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=igKnf4vT; spf=pass (google.com: domain of jagan@amarulasolutions.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=jagan@amarulasolutions.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=amarulasolutions.com Received: from mail-sor-f41.google.com (mail-sor-f41.google.com. [209.85.220.41]) by mx.google.com with SMTPS id x5-20020a170902ec8500b00189c2cc5142sor1041981plg.70.2022.12.09.07.26.05 for (Google Transport Security); Fri, 09 Dec 2022 07:26:05 -0800 (PST) Received-SPF: pass (google.com: domain of jagan@amarulasolutions.com designates 209.85.220.41 as permitted sender) client-ip=209.85.220.41; X-Received: by 2002:a17:902:aa97:b0:186:cbf0:24c7 with SMTP id d23-20020a170902aa9700b00186cbf024c7mr5865426plr.12.1670599563713; Fri, 09 Dec 2022 07:26:03 -0800 (PST) Received: from localhost.localdomain ([2405:201:c00a:a809:6ba1:bbda:c542:ba0b]) by smtp.gmail.com with ESMTPSA id x14-20020a170902ec8e00b00188c5f0f9e9sm1477587plg.199.2022.12.09.07.25.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 09 Dec 2022 07:26:02 -0800 (PST) From: Jagan Teki To: Andrzej Hajda , Inki Dae , Marek Szyprowski , Joonyoung Shim , Seung-Woo Kim , Kyungmin Park , Frieder Schrempf , Fancy Fang , Tim Harvey , Michael Nazzareno Trimarchi , Adam Ford , Neil Armstrong , Robert Foss , Laurent Pinchart , Tommaso Merciai , Marek Vasut Cc: Matteo Lisi , dri-devel@lists.freedesktop.org, linux-samsung-soc@vger.kernel.org, linux-arm-kernel@lists.infradead.org, NXP Linux Team , linux-amarula , Jagan Teki Subject: [PATCH v9 06/18] drm: bridge: Generalize Exynos-DSI driver into a Samsung DSIM bridge Date: Fri, 9 Dec 2022 20:53:31 +0530 Message-Id: <20221209152343.180139-7-jagan@amarulasolutions.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221209152343.180139-1-jagan@amarulasolutions.com> References: <20221209152343.180139-1-jagan@amarulasolutions.com> MIME-Version: 1.0 X-Original-Sender: jagan@amarulasolutions.com X-Original-Authentication-Results: mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=igKnf4vT; spf=pass (google.com: domain of jagan@amarulasolutions.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=jagan@amarulasolutions.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=amarulasolutions.com Content-Type: text/plain; charset="UTF-8" Precedence: list Mailing-list: list linux-amarula@amarulasolutions.com; contact linux-amarula+owners@amarulasolutions.com List-ID: X-Spam-Checked-In-Group: linux-amarula@amarulasolutions.com X-Google-Group-Id: 476853432473 List-Post: , List-Help: , List-Archive: List-Unsubscribe: , Samsung MIPI DSIM controller is common DSI IP that can be used in various SoCs like Exynos, i.MX8M Mini/Nano. In order to access this DSI controller between various platform SoCs, the ideal way to incorporate this in the drm stack is via the drm bridge driver. This patch is trying to differentiate platform-specific and bridge driver code by maintaining exynos platform glue code in exynos_drm_dsi.c driver and common bridge driver code in samsung-dsim.c providing that the new platform-specific glue should be supported in the bridge driver, unlike exynos platform drm drivers. - Add samsung_dsim_plat_data for keeping platform-specific attributes like host_ops, irq_ops, and hw_type. - Initialize the plat_data hooks for exynos platform in exynos_drm_dsi.c. - samsung_dsim_probe is the common probe call across exynos_drm_dsi.c and samsung-dsim.c. - plat_data hooks like host_ops and irq_ops are invoked during the respective bridge call chains. v9: * drop the bridge attach fix for Exynos v8: * update the commit message head v7: * fix the drm bridge attach chain for exynos drm dsi driver * fix the hw_type checking logic v6: * handle previous bridge pointer for exynos dsi v5: * [mszyprow] reworked driver initialization using the same approach as in drivers/gpu/drm/{exynos/exynos_dp.c, bridge/analogix/analogix_dp_core.c}, removed weak functions, moved exynos_dsi_driver back to exynos_drm_dsi.c and restored integration with exynos_drm custom initialization. * updated the commit message [Jagan] v4: * include Inki Dae in MAINTAINERS * remove dsi_driver probe in exynos_drm_drv to support multi-arch build v3: * restore gpio related fixes * restore proper bridge chain * rework initialization issue * fix header includes in proper way v2: * fixed exynos dsi driver conversion (Marek Szyprowski) * updated commit message * updated MAINTAINERS file v1: * don't maintain component_ops in bridge driver * don't maintain platform glue code in bridge driver * add platform-specific glue code and make a common bridge Signed-off-by: Marek Szyprowski Signed-off-by: Jagan Teki --- MAINTAINERS | 9 + drivers/gpu/drm/bridge/Kconfig | 12 + drivers/gpu/drm/bridge/Makefile | 1 + drivers/gpu/drm/bridge/samsung-dsim.c | 1703 ++++++++++++++++++++++ drivers/gpu/drm/exynos/Kconfig | 1 + drivers/gpu/drm/exynos/exynos_drm_dsi.c | 1784 ++--------------------- include/drm/bridge/samsung-dsim.h | 113 ++ 7 files changed, 1952 insertions(+), 1671 deletions(-) create mode 100644 drivers/gpu/drm/bridge/samsung-dsim.c create mode 100644 include/drm/bridge/samsung-dsim.h diff --git a/MAINTAINERS b/MAINTAINERS index f3edff6b1cad..9a37cce05062 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -6675,6 +6675,15 @@ T: git git://anongit.freedesktop.org/drm/drm-misc F: Documentation/devicetree/bindings/display/panel/samsung,lms397kf04.yaml F: drivers/gpu/drm/panel/panel-samsung-db7430.c +DRM DRIVER FOR SAMSUNG MIPI DSIM BRIDGE +M: Jagan Teki +M: Marek Szyprowski +M: Inki Dae S: Maintained diff --git a/drivers/gpu/drm/bridge/Kconfig b/drivers/gpu/drm/bridge/Kconfig index 57946d80b02d..8e85dac9f53e 100644 --- a/drivers/gpu/drm/bridge/Kconfig +++ b/drivers/gpu/drm/bridge/Kconfig @@ -231,6 +231,18 @@ config DRM_PARADE_PS8640 The PS8640 is a high-performance and low-power MIPI DSI to eDP converter +config DRM_SAMSUNG_DSIM + tristate "Samsung MIPI DSIM bridge driver" + depends on COMMON_CLK + depends on OF && HAS_IOMEM + select DRM_KMS_HELPER + select DRM_MIPI_DSI + select DRM_PANEL_BRIDGE + help + The Samsung MIPI DSIM bridge controller driver. + This MIPI DSIM bridge can be found it on Exynos SoCs and + NXP's i.MX8M Mini/Nano. + config DRM_SIL_SII8620 tristate "Silicon Image SII8620 HDMI/MHL bridge" depends on OF diff --git a/drivers/gpu/drm/bridge/Makefile b/drivers/gpu/drm/bridge/Makefile index 1884803c6860..dae843723991 100644 --- a/drivers/gpu/drm/bridge/Makefile +++ b/drivers/gpu/drm/bridge/Makefile @@ -15,6 +15,7 @@ obj-$(CONFIG_DRM_MEGACHIPS_STDPXXXX_GE_B850V3_FW) += megachips-stdpxxxx-ge-b850v obj-$(CONFIG_DRM_NXP_PTN3460) += nxp-ptn3460.o obj-$(CONFIG_DRM_PARADE_PS8622) += parade-ps8622.o obj-$(CONFIG_DRM_PARADE_PS8640) += parade-ps8640.o +obj-$(CONFIG_DRM_SAMSUNG_DSIM) += samsung-dsim.o obj-$(CONFIG_DRM_SIL_SII8620) += sil-sii8620.o obj-$(CONFIG_DRM_SII902X) += sii902x.o obj-$(CONFIG_DRM_SII9234) += sii9234.o diff --git a/drivers/gpu/drm/bridge/samsung-dsim.c b/drivers/gpu/drm/bridge/samsung-dsim.c new file mode 100644 index 000000000000..baad09b2daeb --- /dev/null +++ b/drivers/gpu/drm/bridge/samsung-dsim.c @@ -0,0 +1,1703 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Samsung MIPI DSIM bridge driver. + * + * Copyright (C) 2021 Amarula Solutions(India) + * Copyright (c) 2014 Samsung Electronics Co., Ltd + * Author: Jagan Teki + * + * Based on exynos_drm_dsi from + * Tomasz Figa + */ + +#include + +#include +#include +#include +#include +#include + +#include