From patchwork Wed Oct 5 15:13:00 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Jagan Teki X-Patchwork-Id: 2418 Return-Path: X-Original-To: linux-amarula@patchwork.amarulasolutions.com Delivered-To: linux-amarula@patchwork.amarulasolutions.com Received: from mail-io1-f72.google.com (mail-io1-f72.google.com [209.85.166.72]) by ganimede.amarulasolutions.com (Postfix) with ESMTPS id 5B9C73F1F7 for ; Wed, 5 Oct 2022 17:13:24 +0200 (CEST) Received: by mail-io1-f72.google.com with SMTP id l84-20020a6b3e57000000b006a3fe90910csf11225530ioa.16 for ; Wed, 05 Oct 2022 08:13:24 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1664982803; cv=pass; d=google.com; s=arc-20160816; b=OaxXeESqutgO7rsTeLuoaZESJuZV/0vmsxJV8SdFJhAIa5ZyKYOv2DvskuagBdtSU6 Q87hCt8w1hqAkvNJtno5v51G2Ba0ipTolK1Q+WY0mA6x8msotY1OkqUJOk4zfxU3eutB 5UbyL0U00N43+T/6ZQA/lpuFqfGW4PxxzAE3QOtbCxDmOU6MPa7jdkYSl04Mb7OPxHN4 TYGePgCitxN6CtGyg/Ue8j5l3oDQ5fWC+B+vJnivWaNMhvWRRSjU/jw1Z9J+/z70s/+e 1Ey9mT68XwQLYGwduH/xx1EcQUxV1+7VKG1tC1uvm99bbBiG9JcRLgeuYw3nDkDMVmIq 22LQ== 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:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=H0jj7b/FTagUltnoLoujBrGqafBHJcwmlNyyzIPAuas=; b=m69L97m/makLB+1Sx4SERYQLpNgbCeCf3Nd/a304Avd3w6i5aYuYkuV7xvniTXFIKx ejuNoW0T9eMNtJfr5fo7fMYPn6RMhCIBmdnxQ//NCl1I/YvoSuK0nmtlduaoTrKvBupG vVh7Xu/7ISQB4E0IhMwMvOMig7EOploO7WbtmbWdI9xqYFrvj6N0Gxe67v4KSqPshLDP 4uYuku22VfbH+uMrt4//BEDkB/Z9i5DSkkfMmHvyOl6+63eGVSmFk5eBNDaeffMRD1ZU Ofb96I+p3iuCm+fXHPHRl1WSwkwW6mH5TUlk0THqp/kQsMC9xXF+NSmYAeut/V2dr+Ov UmSA== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=SoP75SbN; 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:content-transfer-encoding:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date; bh=H0jj7b/FTagUltnoLoujBrGqafBHJcwmlNyyzIPAuas=; b=a1ATVuDCi+GA45T3TFNrCB/VGqhXQlaBqJEyY0KvRtsnVadbT0PN6dKrmFN4RrMxPE owCYXyJ9e1vrfqr2/TeES55RrDIn1y4wTpXHBGrF6oL5eGbuRsFJeaRHO/4rwP6JUr9J vmzE+12s9y05wvqFHBjdb/oyPvCFcQSqez24c= 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 :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date; bh=H0jj7b/FTagUltnoLoujBrGqafBHJcwmlNyyzIPAuas=; b=apime+47diLL75VD3SLDhOqCfBd11R+ma41OixcU7dp/29vK2T0vuMvyJSN3ez7MN1 ax7AMkWNXccxbvQwHnhNtaygE2oPZPL9TnK6uE44cvkiM9dipoc3rvegWvMhnyMhxBR4 09HpYkXy/woezme1jGWST6Jc9dg62BKdTLVTeUfKJj2Y59P8/QVO+gpkIVLTeWjMvMI9 CbJShQVLtL2OiTDMl/mXvQClEZwQJE6r1WeuStvc0WVgpwPJrirE4NIikP1V49wjkyyf EJPwfMeC0ex79MCyJbchgvz0S/NSnjpxx9i2yNrM80V7WHNQUn96JrUAT5S5WEsUG2+2 1ZaQ== X-Gm-Message-State: ACrzQf2hcnOyii9aMZCWed5ltKoOb5v32yV072jhzTEw6manSf4juFpr oWLiB1aIIDFRzRYcW9Y8v9I1hQ01 X-Google-Smtp-Source: AMsMyM7yr3qVnSF6cBv9NKXusM61oDEFcihdfwL5UmMJxVA0A4mbKg/+PbAIwBKG3JEUTrrDSBSG6w== X-Received: by 2002:a5d:9ac6:0:b0:6a3:c2ac:4ab1 with SMTP id x6-20020a5d9ac6000000b006a3c2ac4ab1mr153415ion.25.1664982803157; Wed, 05 Oct 2022 08:13:23 -0700 (PDT) X-BeenThere: linux-amarula@amarulasolutions.com Received: by 2002:a05:6e02:1043:b0:2ea:c20b:a232 with SMTP id p3-20020a056e02104300b002eac20ba232ls3049926ilj.9.-pod-prod-gmail; Wed, 05 Oct 2022 08:13:22 -0700 (PDT) X-Received: by 2002:a05:6e02:1605:b0:2f8:3e2:aae3 with SMTP id t5-20020a056e02160500b002f803e2aae3mr47198ilu.235.1664982802292; Wed, 05 Oct 2022 08:13:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1664982802; cv=none; d=google.com; s=arc-20160816; b=otbGrcUv/e08b6MdmEy8iiVTBvSfilZc9yz4jCOnOr6jAotGxbo1Bn/K1J+CVIq+7d jgTanuFbTA0XQjEzCPs7t3Ai/3gEpyWKGmQM0S3LWVmK8ThP+uMwP9xWcDLmrFopOr+z ah9zPmLebLiPN9IbaB8/Np3cWvHmASrCEiuJfw+AOpu7aRvzsz9gbG6pUl6eKsu1oOI7 kE5nJXakMrRJ7pR8EYzA1IxQ0oNVzFxXKs9Deq5NrSPpSuVs01Giyh+7inF8KWkYDK5t gZdBoReAL1BcBXkXH4F81Q+OK5J+QZ2aU60UgYXmgC6p3RGfLTK5JDXAldpOdlx6+c/4 tGNQ== 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=MLjlpx8azy4IutuT8EAgQ61IG48zJSkjGCwj0wVN1B0=; b=QQIZHYuT/R4X5UahpsqtAX4Bf8NKDm099NSdw7lJedH8GoKz5WO/CaekXUR7wyZefr UgWVm/XW9nXlwmEOHHSjGYkduL9ungK16AyEUwcU4H8BLD9uhIWOzQImg8a5RcKGzZdK o3PGc2FZCQZVRcZkgKIg7DpIeu+g3LwwPee2q0b0hbadoiAECN+hghvmEq5c/95gpQg5 HIQLlNlT3SQSPtDkjuxKDY8agESrfUaN5cA1UprbRidqwK0qV6JoLbzSjwnHpu2K56Zx dzhT1dOzR83zi2pQMPBaDBaWZ5pNVsEcxVwnkz0gRfMe0mGXVv4GNnIM8CuWFzE5ReGP F+Sw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=SoP75SbN; 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 q84-20020a6b8e57000000b006b6bb297681sor612578iod.5.2022.10.05.08.13.22 for (Google Transport Security); Wed, 05 Oct 2022 08:13:22 -0700 (PDT) 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:a05:6602:396:b0:6b5:c2bd:a430 with SMTP id f22-20020a056602039600b006b5c2bda430mr163310iov.208.1664982801264; Wed, 05 Oct 2022 08:13:21 -0700 (PDT) Received: from j-ThinkPad-E14-Gen-2.stthomas.edu ([140.209.96.21]) by smtp.gmail.com with ESMTPSA id w15-20020a056602034f00b0068a235db030sm7089276iou.27.2022.10.05.08.13.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Oct 2022 08:13:20 -0700 (PDT) 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 v7 01/10] drm: bridge: Add Samsung DSIM bridge driver Date: Wed, 5 Oct 2022 20:43:00 +0530 Message-Id: <20221005151309.7278-2-jagan@amarulasolutions.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221005151309.7278-1-jagan@amarulasolutions.com> References: <20221005151309.7278-1-jagan@amarulasolutions.com> MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" X-Original-Sender: jagan@amarulasolutions.com X-Original-Authentication-Results: mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=SoP75SbN; 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 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. 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 | 1766 ++--------------------- include/drm/bridge/samsung-dsim.h | 113 ++ 7 files changed, 1952 insertions(+), 1653 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 9ae989b32ebb..ba7a6721443c 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -6624,6 +6624,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..07563d00a420 --- /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