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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 77E2FC433F5 for ; Thu, 20 Jan 2022 08:34:51 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1359325AbiATIet (ORCPT ); Thu, 20 Jan 2022 03:34:49 -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-Google-Smtp-Source: ABdhPJw/+r8nVWWJT92vzekaZo36OiKq9KSMV25VsdAUraconzx7mwv35BRI3Fu927lZzVfGz6+Jzw== 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