Received: by 2002:a05:6a10:8395:0:0:0:0 with SMTP id n21csp495567pxh; Wed, 10 Nov 2021 05:11:48 -0800 (PST) X-Google-Smtp-Source: ABdhPJwXc0TOqKnJWfkyPvMJ85up2V/v4BRTBaGHzIvG+3MmLW8B1QKi/gHfxAQo3Z2OzK5lYc/J X-Received: by 2002:a17:906:6acd:: with SMTP id q13mr21016092ejs.426.1636549907370; Wed, 10 Nov 2021 05:11:47 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1636549907; cv=none; d=google.com; s=arc-20160816; b=R+/MT5G7N+xUNUdgZeklNokoy7yHmIWhm6vkFSQbQx6DPEoBjBdTZm9+5p82z4ssJD wGgdZE2njhWFZECZQELQynnhji603JCVnDDZCl8h5GMxcJk3p2ZM0827TzKKF8YGIu/r g5k9+yLCjA8ZH1PKAq6XRDXMLL49kV8HxeG1n6sC7yotJZB1iDwcx6kJDHREVCjE/5GV rZxEsDVx3wbcY7aAb1sFVwZmBfNHt40nrgLQVByUp5p5V1xf+C+JKezjbxN3Cxv/+KxZ NjnPivFpIgUw4/EGeCjSNU2wdmQoBe6W5Oea4GiEDvV7qlRFj3ZmXx6c5BaPwEfrijFV O/Mw== 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=pkEzlVe9qFWauunGqME7hIhiReMyTOCOuR6LVYvxLms=; b=tXlQ4N+M3f0a+4lOq5Pql7LWQO9kqU6qCoUfkN4N1nr4rUfivtupM9RDH/YAwvliSj Y7KeW50IePioJF9Qo4Td9pkASOeob1K1+vgIBzHZlkCmHRnsozGSueGqEdUYSGq+cnHr rdf/FFAc1Eet3zu9AUN+5JKfqRk99rLcDHdQegpj4ShyxbTeKlf5K+YAt+BFMuwvK1r9 tXxA9DEciKdnGsAyfoZzRrbpNsQzLpQYjv0dV+DXE1AYQZxZeK6JY5exCALOd8w1wW/N wDyDHRNZdAPsjn9rWMPG8y2dIlwmeWaUyt79tsPQZNs51/rUmkyPBSkXwjTbf7x43diX kc7A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@baylibre-com.20210112.gappssmtp.com header.s=20210112 header.b=8R6Gbx8+; 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 gs18si43045774ejc.679.2021.11.10.05.11.15; Wed, 10 Nov 2021 05:11:47 -0800 (PST) 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=@baylibre-com.20210112.gappssmtp.com header.s=20210112 header.b=8R6Gbx8+; 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 S232072AbhKJNJv (ORCPT + 99 others); Wed, 10 Nov 2021 08:09:51 -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-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