From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id EC40EC433F5 for ; Wed, 10 Nov 2021 13:07:05 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id B9D1F61168 for ; Wed, 10 Nov 2021 13:07:05 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232096AbhKJNJw (ORCPT ); Wed, 10 Nov 2021 08:09:52 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51674 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232051AbhKJNJn (ORCPT ); Wed, 10 Nov 2021 08:09:43 -0500 Received: from mail-wr1-x42a.google.com (mail-wr1-x42a.google.com [IPv6:2a00:1450:4864:20::42a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0A496C0613F5 for ; Wed, 10 Nov 2021 05:06:55 -0800 (PST) Received: by mail-wr1-x42a.google.com with SMTP id i5so3963570wrb.2 for ; Wed, 10 Nov 2021 05:06:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=pkEzlVe9qFWauunGqME7hIhiReMyTOCOuR6LVYvxLms=; b=8R6Gbx8++6SDeoXR3pmLYC392lxjAa90WbFwISmrYgPH882glB6TP8kDxgCd6F3hM7 5Ls9Txb39+7QFM6eElB0AW9dmN5zC7raXrB2uCk7+KC0QXZNjZgb169JUxMk8YIx75Ez pQRojQWPnN2YUcYbEgTDgzOfzB/U7i9Ax9Z1S0THdqhXfHloTrSF0hPe/blpVu4M8HHF Ixunrpt5rARud9K9PF6w2OaGsEcvtnG2P9xmyHoXK9qLCnUPCpleo9pIGtk1AgfyDpTN fUg6atzhgBMcLV2F4ou8kv7tiEPosKNruSl4TpAgW0DzYDzXQ4ZDURXj3V3uULnLNwXk 267w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=pkEzlVe9qFWauunGqME7hIhiReMyTOCOuR6LVYvxLms=; b=ZqkIltWNQdE1HFvlIjv0ESDuojm181b4Cxk2lOmkq/HyIKdtHOPQ2MZwT8D6bYoaEv KCp5CrJltxhuFlH413PHOmjq3Q6u/u4dp22/ZXPmCts4LLlfh0UX3sk3s32mzqZ5LXiC VmeTJd3g4BbDte/8VrJIfleod8HU8gCJCL/aY8covVQq6PEzz/w0vaHIe9lvS5lX7sDm JxJwGzX+NHVj2oIoNuxT64UGr33MCJlv33+6k7e8/SumgJAriJPQp51tugXOI4EzqN0Z 961LwXyPDmi5Ssw21CVTuNxP1u97EM936x6LQ6mP2Js3W3Fh0PJNS8f1qn9zWC/+SHJh xklQ== X-Gm-Message-State: AOAM532PZsJ0mIemfPPv57tDkCG/vtSgjKEbjXfKjgXyMCSbgC8uevbw QvHxktjudm01OkOLuHFqH14mtA== X-Google-Smtp-Source: ABdhPJyF1HWZeqXUtGKGpfBg+slSNgW9LJmEYYRhNKNDO+Cqm8+q8iKJ99o9idDCCTdoA8nL2Umlpg== X-Received: by 2002:adf:e5c7:: with SMTP id a7mr18761196wrn.318.1636549612922; Wed, 10 Nov 2021 05:06:52 -0800 (PST) Received: from localhost.localdomain (laubervilliers-656-1-151-143.w92-154.abo.wanadoo.fr. [92.154.18.143]) by smtp.gmail.com with ESMTPSA id i17sm5952175wmq.48.2021.11.10.05.06.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Nov 2021 05:06:52 -0800 (PST) From: Guillaume Ranquet To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Daniel Vetter , Chun-Kuang Hu , Philipp Zabel , Matthias Brugger Cc: Markus Schneider-Pargmann , kernel test robot , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-mediatek@lists.infradead.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH v6 7/7] drm/mediatek: Add mt8195 DisplayPort driver Date: Wed, 10 Nov 2021 14:06:23 +0100 Message-Id: <20211110130623.20553-8-granquet@baylibre.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20211110130623.20553-1-granquet@baylibre.com> References: <20211110130623.20553-1-granquet@baylibre.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Markus Schneider-Pargmann This patch adds a DisplayPort driver for the Mediatek mt8195 SoC and a according phy driver mediatek-dp-phy. It supports both functional units on the mt8195, the embedded DisplayPort as well as the external DisplayPort units. It offers hot-plug-detection, audio up to 8 channels, and DisplayPort 1.4 with up to 4 lanes. The driver creates a child device for the phy. The child device will never exist without the parent being active. As they are sharing a register range, the parent passes a regmap pointer to the child so that both can work with the same register range. The phy driver sets device data that is read by the parent to get the phy device that can be used to control the phy properties. This driver is based on an initial version by Jason-JH.Lin . Signed-off-by: Markus Schneider-Pargmann Signed-off-by: Guillaume Ranquet Reported-by: kernel test robot --- drivers/gpu/drm/drm_edid.c | 2 +- drivers/gpu/drm/mediatek/Kconfig | 7 + drivers/gpu/drm/mediatek/Makefile | 2 + drivers/gpu/drm/mediatek/mtk_dp.c | 3094 +++++++++++++++++++++++ drivers/gpu/drm/mediatek/mtk_dp_reg.h | 568 +++++ drivers/gpu/drm/mediatek/mtk_dpi.c | 111 +- drivers/gpu/drm/mediatek/mtk_dpi_regs.h | 26 + drivers/gpu/drm/mediatek/mtk_drm_drv.c | 1 + drivers/gpu/drm/mediatek/mtk_drm_drv.h | 1 + 9 files changed, 3799 insertions(+), 13 deletions(-) create mode 100644 drivers/gpu/drm/mediatek/mtk_dp.c create mode 100644 drivers/gpu/drm/mediatek/mtk_dp_reg.h diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c index 500279a82167a..bfd98b50ceb5b 100644 --- a/drivers/gpu/drm/drm_edid.c +++ b/drivers/gpu/drm/drm_edid.c @@ -5183,7 +5183,7 @@ static void drm_parse_hdmi_deep_color_info(struct drm_connector *connector, * modes and forbids YCRCB422 support for all video modes per * HDMI 1.3 spec. */ - info->color_formats = DRM_COLOR_FORMAT_RGB444; + info->color_formats |= DRM_COLOR_FORMAT_RGB444; /* YCRCB444 is optional according to spec. */ if (hdmi[6] & DRM_EDID_HDMI_DC_Y444) { diff --git a/drivers/gpu/drm/mediatek/Kconfig b/drivers/gpu/drm/mediatek/Kconfig index 2976d21e9a34a..029b94c716131 100644 --- a/drivers/gpu/drm/mediatek/Kconfig +++ b/drivers/gpu/drm/mediatek/Kconfig @@ -28,3 +28,10 @@ config DRM_MEDIATEK_HDMI select PHY_MTK_HDMI help DRM/KMS HDMI driver for Mediatek SoCs + +config MTK_DPTX_SUPPORT + tristate "DRM DPTX Support for Mediatek SoCs" + depends on DRM_MEDIATEK + select PHY_MTK_DP + help + DRM/KMS Display Port driver for Mediatek SoCs. diff --git a/drivers/gpu/drm/mediatek/Makefile b/drivers/gpu/drm/mediatek/Makefile index 29098d7c8307c..d86a6406055e6 100644 --- a/drivers/gpu/drm/mediatek/Makefile +++ b/drivers/gpu/drm/mediatek/Makefile @@ -21,3 +21,5 @@ mediatek-drm-hdmi-objs := mtk_cec.o \ mtk_hdmi_ddc.o obj-$(CONFIG_DRM_MEDIATEK_HDMI) += mediatek-drm-hdmi.o + +obj-$(CONFIG_MTK_DPTX_SUPPORT) += mtk_dp.o diff --git a/drivers/gpu/drm/mediatek/mtk_dp.c b/drivers/gpu/drm/mediatek/mtk_dp.c new file mode 100644 index 0000000000000..83087219d5a5e --- /dev/null +++ b/drivers/gpu/drm/mediatek/mtk_dp.c @@ -0,0 +1,3094 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (c) 2019 MediaTek Inc. + * Copyright (c) 2021 BayLibre + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include