Received: by 2002:a05:6a10:af89:0:0:0:0 with SMTP id iu9csp1243395pxb; Fri, 21 Jan 2022 13:11:38 -0800 (PST) X-Google-Smtp-Source: ABdhPJwYldKEJ0rnh0218nUAwRTOS8l55Qx+BZIpqo3IIhGyfjKHV+9jOeNUnyCK9jCGh6TsH7x4 X-Received: by 2002:a17:903:52:b0:14a:4951:390a with SMTP id l18-20020a170903005200b0014a4951390amr5349895pla.54.1642799498070; Fri, 21 Jan 2022 13:11:38 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1642799498; cv=none; d=google.com; s=arc-20160816; b=SpGxfoDnmQKdIrIwp5vHe1HCNMRXAvntXooj0TuQpST4I50sUwOZa4SLwjdmUowASS T5bA0/EhcpmOwhVSOG02SrQgcPLYjO4iK2BhuWARDLqoAszRTOuHiSuJK9uKQFV7hWGh LdagHZEPzL+l8Il6KC1agO1mH/s9GbH7a77HQEANapLQktfHiiy5SN0JwbC/bAooBBrU Pqep96nuO0mSpcmhdM4eZjAV53iO7JGSaz/oN/y1tHm/4mDDcgLyHg16rSUjxyuQEMQ8 XPtGg3fkt74MOQaCGCDeKf1UcLK7tnbAzYkDXIoTcb06xvTGqR1P25xv5vD1O9LR8O7Q JbaA== 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=K04fzS10Xb3bGZschhctPTBveqGNPvtQF4lJJDtuijQ=; b=ifKsJ9qp1sswANTRDUvEE4+BlHQxE1vS/iVsO0asV02ElcKGJpIWapA9gQ4XeJFs/F G6vpmEzE2Z3ElvdvEAhMF6WYtHbOIEUO1xxc3AkuoHNci3dbHgGOxGUIcEUAe+xGlwGa Hfq9t7i7IxWVz7Yt8mvemgDdu0evCNn4++LAZqJ8VN+pzj2KA9WaqSa1kDvE4gqzM/Zw UTKA0p5bmLrJeJ5qZiDhMhbZKuv9TZCRz5RjJQaqcUEtVCSm04icPXkXXtRwtlZkPPbg 97TyX7498YsaAF756oHRbxezSQ70BM/V+A38gkWxyYCk8TI8u2MHFs7zTMpi5p8rlUMv yZkw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@baylibre-com.20210112.gappssmtp.com header.s=20210112 header.b=XVHYCs1Q; 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 a9si7589077pfv.33.2022.01.21.13.11.26; Fri, 21 Jan 2022 13:11:38 -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=XVHYCs1Q; 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 S1359310AbiATIer (ORCPT + 99 others); Thu, 20 Jan 2022 03:34:47 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34816 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1359354AbiATIek (ORCPT ); Thu, 20 Jan 2022 03:34:40 -0500 Received: from mail-wm1-x32c.google.com (mail-wm1-x32c.google.com [IPv6:2a00:1450:4864:20::32c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B0DB0C061574 for ; Thu, 20 Jan 2022 00:34:39 -0800 (PST) Received: by mail-wm1-x32c.google.com with SMTP id c66so10329141wma.5 for ; Thu, 20 Jan 2022 00:34:39 -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=K04fzS10Xb3bGZschhctPTBveqGNPvtQF4lJJDtuijQ=; b=XVHYCs1QSWMpJYEFDWAOzP2v+81KSLbXswY/mfusAHNBMP6j+yZV3jI8FgwCjmmga8 NDKFwSQS9mJ/lQ6mGlCe+LQfn3pjBQUGk1vhwePcSXFd/G1s67BYFpyfOcZAY8VxUHCS yoiKPQfQG7aA8tCY6A8krYzEI79PzJXVpgwgXEMf/AxSnFhFBxGbLPqunj9f0JAgLhDz /Zce6GXm3OO2vl/xQZ+AFfnAMtmoc0v9jHKsg0d7kbLSxFbbgzzbeilPmLit2bdAqjnJ edzoDqrHklDxKR4jq9bKTgxk2WTHOUGFXhAwrLzQ9B9D5hoO76dW+0fHo0+OyDdmzkBu tpVA== 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=K04fzS10Xb3bGZschhctPTBveqGNPvtQF4lJJDtuijQ=; b=ZdlhTnu3rBQVfiJhd6hoBV9SwIu9gAQX2rELwxUfnBjz1luaBNIctJNcqaOIierZsc rtx/9wWz0jIIjnrhj8uS54J4iG4wjXnBP/S13QKRXofeY4al7/W+xq3CPC2LoFkEtNpg PZ9b8Av0MZs8ZQ3ZFsOBPaehmrnvglcCHPWtBSlcr8786GzU2srFMyulE0cLwNDC1ysG qPFbRHPnmveUX+y1r8Ih2gW7lBFu5+fyFst2QQ/vTdfK40By5SeqQ/Uqv0YYNm4hd/2f 9lN2iPzOhhda9FQ219Dasf4dIMoPsn8Sbcmy0hTwqmQ3Q2crXeo1iuodWgDDxFxzql0I JKcA== X-Gm-Message-State: AOAM533KrmuC4PgReFO77hHQEmNWpVCMr+yZRlNppAt/JR0uyjrxbWrS QsUfMkaHdtZ2zK4piM5BkLuqMJ3xAixKgw== X-Received: by 2002:a5d:6183:: with SMTP id j3mr34062960wru.615.1642667678080; Thu, 20 Jan 2022 00:34:38 -0800 (PST) Received: from localhost.localdomain ([2001:861:44c0:66c0:ced2:397a:bee8:75f5]) by smtp.gmail.com with ESMTPSA id u16sm1821975wmq.24.2022.01.20.00.34.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Jan 2022 00:34:34 -0800 (PST) From: Neil Armstrong To: dri-devel@lists.freedesktop.org, martin.blumenstingl@googlemail.com Cc: linux-amlogic@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Neil Armstrong Subject: [PATCH v2 6/6] drm/meson: add support for MIPI-DSI transceiver Date: Thu, 20 Jan 2022 09:33:57 +0100 Message-Id: <20220120083357.1541262-7-narmstrong@baylibre.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220120083357.1541262-1-narmstrong@baylibre.com> References: <20220120083357.1541262-1-narmstrong@baylibre.com> MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=19254; h=from:subject; bh=KjZ4VIFhPIL/m3fcn8BbDpn05CpqRFGF1eIUaCQG2C4=; b=owEBbQKS/ZANAwAKAXfc29rIyEnRAcsmYgBh6R2IVeEKAaEylrYwJ+2+P/kou5Ln7Iz5egQfVMUG UmHVUv+JAjMEAAEKAB0WIQQ9U8YmyFYF/h30LIt33NvayMhJ0QUCYekdiAAKCRB33NvayMhJ0VS/EA CB/pkiL+u57GOzZPTn5rhirWDn8vFZySR2Kz42U9pIxmSTiHJs+YARWEebPhkbkepCHk+ynNuRV2jV 8E9pS0hSf69oxQTtY69sER+yB0wqX74sFiN60z4wcbSQY1UdcvW9a5TvfCiYZhJi3MiHvh3eTVEB1e ROcwUcWJaZIcPGQZqrzGHHZs10kYKEjtziPGI4yiylYWp2gsl7FvwTJOpLQl/EaCFkGfHr/W24haXZ wLbsXwlcJfFBEpd5zjqvIbUK7iM5zIusl1uQ1b+8GT6mJ1Sb73bM8bb0FG3gaW3f07i/R+9MHvHgTr tlgg2AEEIJx53G7kJahUxvu1Va/jRGu2sQHcSj+OHBzXbx/sB8ecY3qw2Nx3w+YL3MNkHjtiJKSkj1 3akuxAqnfpzVzGZ7sEfk1SZiKQvDlTKH6ZzTdDNH9W2WB6rVXuRDwP42CFhuU4hyubA6Tk4LlwWo66 XiuesdUgD63+b9oheoGowXKPvsHhs5kJk2erkLRbffdKqd9RkRq+3c9OdiB80hA3cafL6XIswgISoT kQm+b4iWz2NPA1zkUH1aadfFs00eQZ917kLo1tu/5GcoW6gpnyfyuOhXDUnEqDA2Dv8spEoXIOaN4C lTiaJamXVYojwjNzLRQwoWiyUk69uDWkJiACKhVN1N04KrQF/v4ugFGeuwvQ== X-Developer-Key: i=narmstrong@baylibre.com; a=openpgp; fpr=89EC3D058446217450F22848169AB7B1A4CFF8AE Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The Amlogic G12A/G12B/SM1 SoCs embeds a Synopsys DW-MIPI-DSI transceiver (ver 1.21a), with a custom glue managing the IP resets, clock and data input similar to the DW-HDMI Glue on other Amlogic SoCs. This adds support for the Glue managing the transceiver, mimicing the init flow provided by Amlogic to setup the ENCL encoder, the glue, the transceiver, the digital D-PHY and the Analog PHY in the proper way. An optional "MEAS" clock can be enabled to measure the delay between each vsync feeding the DW-MIPI-DSI transceiver. Signed-off-by: Neil Armstrong --- drivers/gpu/drm/meson/Kconfig | 7 + drivers/gpu/drm/meson/Makefile | 1 + drivers/gpu/drm/meson/meson_dw_mipi_dsi.c | 357 ++++++++++++++++++++++ drivers/gpu/drm/meson/meson_dw_mipi_dsi.h | 160 ++++++++++ 4 files changed, 525 insertions(+) create mode 100644 drivers/gpu/drm/meson/meson_dw_mipi_dsi.c create mode 100644 drivers/gpu/drm/meson/meson_dw_mipi_dsi.h diff --git a/drivers/gpu/drm/meson/Kconfig b/drivers/gpu/drm/meson/Kconfig index 6c70fc3214af..71a1364b51e1 100644 --- a/drivers/gpu/drm/meson/Kconfig +++ b/drivers/gpu/drm/meson/Kconfig @@ -17,3 +17,10 @@ config DRM_MESON_DW_HDMI default y if DRM_MESON select DRM_DW_HDMI imply DRM_DW_HDMI_I2S_AUDIO + +config DRM_MESON_DW_MIPI_DSI + tristate "MIPI DSI Synopsys Controller support for Amlogic Meson Display" + depends on DRM_MESON + default y if DRM_MESON + select DRM_DW_MIPI_DSI + select GENERIC_PHY_MIPI_DPHY diff --git a/drivers/gpu/drm/meson/Makefile b/drivers/gpu/drm/meson/Makefile index 833e18c20603..43071bdbd4b9 100644 --- a/drivers/gpu/drm/meson/Makefile +++ b/drivers/gpu/drm/meson/Makefile @@ -6,3 +6,4 @@ meson-drm-y += meson_encoder_hdmi.o meson_encoder_dsi.o obj-$(CONFIG_DRM_MESON) += meson-drm.o obj-$(CONFIG_DRM_MESON_DW_HDMI) += meson_dw_hdmi.o +obj-$(CONFIG_DRM_MESON_DW_MIPI_DSI) += meson_dw_mipi_dsi.o diff --git a/drivers/gpu/drm/meson/meson_dw_mipi_dsi.c b/drivers/gpu/drm/meson/meson_dw_mipi_dsi.c new file mode 100644 index 000000000000..75f373152caf --- /dev/null +++ b/drivers/gpu/drm/meson/meson_dw_mipi_dsi.c @@ -0,0 +1,357 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Copyright (C) 2021 BayLibre, SAS + * Author: Neil Armstrong + * Copyright (C) 2015 Amlogic, Inc. All rights reserved. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include