Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp4144857rwd; Tue, 30 May 2023 00:49:15 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4RgmR4b2Yt4zFN7/O0sNbWvwTOlPEMw/2j1zihL6iXeXcYh+7RxcG0uS1hWav2qa3RLXkm X-Received: by 2002:a17:90a:cc3:b0:255:2dfc:6c6f with SMTP id 3-20020a17090a0cc300b002552dfc6c6fmr1634526pjt.24.1685432955390; Tue, 30 May 2023 00:49:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1685432955; cv=none; d=google.com; s=arc-20160816; b=lidjFWtSN+2LJFXmhqgIX9WSCHH/z3UbJBIUm5R7QIrAK9G1llUD9ZidgeNWFdPEO8 E+aDHMt+15SSpdkOE1pmd7dlAfShs+XhVxW8MPxvlk/ldbhSCmqRbjM+yyUsJ5ZXCUxM 3UjQKuugkhFIaUAcIeJ8g1AwI7sWHCGtO1hY53Eur7k5RoqPNFk0sHFXvk22ziEfBMAr PfUFpWszFxLKLPkqr1CRJIGjY94SEb6Nqp8RZ+2FOTf3p1RY8djc3MPXxtoAgUso1gTR 3Q0xF35Rnycs0hizshgoQ/ey8XTtCu2xEvkP4Rja+CUb86EDsScZQY9usq/hqFMTh5Vh /FyA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:content-transfer-encoding:mime-version :message-id:date:subject:from:dkim-signature; bh=476AxUierLRK4+ZG9hRPuJ7U/N2yV0VbuQqiR2vx9v0=; b=AQ6VNszC6CQ67Kz7hg+ihH2a56BR4UGcH/MJ5mTVNOmkDo70auWFCdbPQjaSitpQL3 Jy+gNakUqXTDrn5Oq5b6OnswQ4ovSQtIPlnjSHjuvB5iLugZnnOSesxps18XhIsvXh64 PhhS7wE+96N0vswwIZdrOzomjfpz7QKpeE6ke1Ws9o6v8+q96KN8wseNJzZA38nE+w7/ uQu+HSZPmnBMnTgQHPaBzE2htIGtuZaWaWHbyWoKobhaR++Ev8Kh4UEoTlq8FoH4Qhx2 rENwRnIKo1MvdpiDxzFjiV7nrmpn4CseQ7LIPU8+Lu4Z5hJMONIdZ23zg41yRnE9kLAs 7bug== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=eUwYySEn; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id 11-20020a17090a198b00b00253160141c7si7948229pji.83.2023.05.30.00.49.01; Tue, 30 May 2023 00:49:15 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=eUwYySEn; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230317AbjE3HiT (ORCPT + 99 others); Tue, 30 May 2023 03:38:19 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35008 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229552AbjE3HiR (ORCPT ); Tue, 30 May 2023 03:38:17 -0400 Received: from mail-wr1-x431.google.com (mail-wr1-x431.google.com [IPv6:2a00:1450:4864:20::431]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4A63EA8 for ; Tue, 30 May 2023 00:38:15 -0700 (PDT) Received: by mail-wr1-x431.google.com with SMTP id ffacd0b85a97d-30ae95c4e75so2095252f8f.2 for ; Tue, 30 May 2023 00:38:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1685432294; x=1688024294; h=cc:to:content-transfer-encoding:mime-version:message-id:date :subject:from:from:to:cc:subject:date:message-id:reply-to; bh=476AxUierLRK4+ZG9hRPuJ7U/N2yV0VbuQqiR2vx9v0=; b=eUwYySEneFJaqAhOF+RDy+Hozw4StptRqWTaWNs9bSyf6g4rPStLSAyuymBQCJJXIU kGZYFThmLrepXTx7LYbMZXOgIa98HIZslaVPfKFJDUeFam4hFD+RpOU2mBJP1PkKRQ0w JPpyJAtgv4ZW6GxLUxS3llZbGgjR7Po0lrUizPYZ/gMPS8HuZuV2zY2ZxFGTMaI9Ahz/ XyciH6yeW2TP9pW3F7sYSvF1mXR/amdmwjA2w5lJzcXXKuMwRYJb3UvyRMppcb/sf42h AGoNOam75ZPqJs6CSce9gzhw9Ton3PemMND0M4Zd32wfH2OqTbMjkkaYK2/02ywbQhyS qtaQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685432294; x=1688024294; h=cc:to:content-transfer-encoding:mime-version:message-id:date :subject:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=476AxUierLRK4+ZG9hRPuJ7U/N2yV0VbuQqiR2vx9v0=; b=Wwzn7UPx/0NFWYUyitp5EHBlBuJJmKra98vMTZmRxBsvP0qhg76fIs7/KiyFLvhINw jcQ5/kvDkaEi2O3EQ9VSK4+eqOeyGzcGaLdTjoe023ttitHxM2Psigym7mv4ALtdDmW3 MH7OtXp+2bdC6GicA/pcESTvQVxZQ/Hz8NyYpoQbhOhgiMA0UcGrJnLUXrEKOH1v24db dH/JE5w28F6Wk8nxJkpez+AFM8oyf1Hx5pxjK1+rifrphif9W2hE9fWaKr6ud7rLcT4g GWIsAh8LsieubqueViknwmArbVoShTZyTrG28U8rros5m70G6Uud87xsQxu2mJcqsvuP 09Pw== X-Gm-Message-State: AC+VfDxBI6e90pX+9aPua2m6DKgI59baaKsk6bq8j2+Pg4Zc2rIB/JGh caxjn21/vNZavNYSX5Rh+iDPEA== X-Received: by 2002:a5d:4cc6:0:b0:309:5119:7259 with SMTP id c6-20020a5d4cc6000000b0030951197259mr791629wrt.20.1685432293767; Tue, 30 May 2023 00:38:13 -0700 (PDT) Received: from arrakeen.starnux.net ([2a01:e0a:982:cbb0:52eb:f6ff:feb3:451a]) by smtp.gmail.com with ESMTPSA id m4-20020a5d4a04000000b003079c402762sm2312013wrq.19.2023.05.30.00.38.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 May 2023 00:38:13 -0700 (PDT) From: Neil Armstrong Subject: [PATCH v5 00/17] drm/meson: add support for MIPI DSI Display Date: Tue, 30 May 2023 09:38:01 +0200 Message-Id: <20230512-amlogic-v6-4-upstream-dsi-ccf-vim3-v5-0-56eb7a4d5b8e@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-B4-Tracking: v=1; b=H4sIANmndWQC/5WOQQ6CMBBFr0K6dgwMLYor72FYlDLAJNCSFhoN4 e5WbuDyvcV/fxeBPFMQj2wXniIHdjaBumTCjNoOBNwlFphjmasCQc+TG9hArEDCtoTVk56hCwz G9BB5LqG9k8LiRkUvtUhDrQ4ErdfWjGnKbtOU5OKp5/dZfjWJRw6r85/zSJQ/+1czSsgBVY0Ga 9JYlc+Jrfbu6vwgmuM4vvjRpmnqAAAA To: Jerome Brunet , Michael Turquette , Stephen Boyd , Kevin Hilman , Martin Blumenstingl , Rob Herring , Krzysztof Kozlowski , Conor Dooley , David Airlie , Daniel Vetter , Philipp Zabel , Kishon Vijay Abraham I , Sam Ravnborg Cc: "Lukas F. Hartmann" , Nicolas Belin , linux-amlogic@lists.infradead.org, linux-clk@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-phy@lists.infradead.org, Neil Armstrong , Rob Herring , Jagan Teki , Neil Armstrong X-Mailer: b4 0.12.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=6362; i=neil.armstrong@linaro.org; h=from:subject:message-id; bh=oQMdk5F8XpnE3SYBlSID8iORyMOnjExbfiSGn2cC2+0=; b=owEBbQKS/ZANAwAKAXfc29rIyEnRAcsmYgBkdafdKfQS8TTa1xAJxHU0d//Z1eaCq7EL6+16Uwj4 OKpT/KmJAjMEAAEKAB0WIQQ9U8YmyFYF/h30LIt33NvayMhJ0QUCZHWn3QAKCRB33NvayMhJ0TG7D/ 9H/He0su5ZqIg29fy7rJBr0AQgQ/Hnp57ThWTB8wSYUmsvSpfevGxPnX0QCwNXvvtsumJM6gX7vgTR pBRQFUHx0g/w5xyDV2cDzcF9NhxikO5YJf8bIEYjS5OAMFStT+jCyx15xjKZdHtjm3H2VDEo1jVGdD hz8K3N3lA6xpqVauuS4HzdDgO6QP6eqXNfFCOrD4E22OoFYxdWsGJbq1pWf2uuIFDQB3x1FcT1VLOi qdVnOLXzBaK068i/OeBUS2LxGtrpNsG5bxgGjv2DVxYUBKxNEHnhGZBe1W3wBaNRv7RVZ3GmLw3TTq yD3LxE4l0CNfBywDyXT1dphm4ahIMLEDSxij2DU0ApeuriZN6S+xLZzZDiKIgWvXL42otKrfnIPqHl EZaS5ljkGAcrhnax5Lp2K72K1Kc00L0U9OOHmN0Te6iCZvjFx0wlkUG9GSNy8zT4cOuA19heqD1pdC pwq1Aa20SuVw18oE22nd08six36jCf+/gaWNh9mSZXf2a21zS7g10fb6BqmaT4GDUqkYW2mT6rpDMX 57uELt+gPRdT+HR8Ly7H6I3tKmJHZODHVA4MRFr5Hy4n8cAMSyF35bv4ZBG/ySKXUkTe8chX47nChV bMtwKcSz0D8d5IQUXJxlHQBM10yzNQxY9xFsgoBgHZI6aDjsI6qgQJs3DjqQ== X-Developer-Key: i=neil.armstrong@linaro.org; a=openpgp; fpr=89EC3D058446217450F22848169AB7B1A4CFF8AE X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net 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 the same 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. The DW-MIPI-DSI transceiver + D-PHY are clocked by the GP0 PLL, and the ENCL encoder + VIU pixel reader by the VCLK2 clock using the HDMI PLL. The DW-MIPI-DSI transceiver gets this pixel stream as input clocked with the VCLK2 clock. An optional "MEAS" clock can be enabled to measure the delay between each vsync feeding the DW-MIPI-DSI transceiver. This patchset is based on an earlier attempt at [1] for the AXG SoCs, but: - previous glue code was a single monolitic code mixing encoders & bridges, this version is aligned on the previous cleanup done on HDMI & CVBS bridges architecture at [2] - since the only output of AXG is DSI, AXG VPU support is post-poned until we implement single-clock DSI support specific case on top of this. This is a re-spin of v3 at [5], the main change is about clock control, the clock setup has been redesigned to use CCF, a common PLL (GP0) and the VCLK2 clock path for DSI in preparation of full CCF support and possibly dual display with HDMI. I kept review tags when the content was only slighly changed. Signed-off-by: Neil Armstrong --- Changes in v5: - Aded PRIV all the G12 internal clk IDS to simplify public exposing - Fixed the DSI bindings - Fixed the DSI HSYNC/VSYNC polarity handling - Fixed the DSI clock setup - Fixed the DSI phy timings - Dropped components for DSI, only keeping it for HDMI - Added MNT Reform 2 CM4 DT - Dropped already applied PHY fix - Link to v4: https://lore.kernel.org/r/20230512-amlogic-v6-4-upstream-dsi-ccf-vim3-v4-0-2592c29ea263@linaro.org Changes from v3 at [5]: - switched all clk setup via CCF - using single PLL for DSI controller & ENCL encoder - added ENCL clocks to CCF - make the VCLK2 clocks configuration by CCF - fixed probe/bind of DSI controller to work with panels & bridges - added bit_clk to controller to it can setup the BIT clock aswell - added fix for components unbind - added fix for analog phy setup value - added TS050 timings fix - dropped previous clk control patch Changes from v2 at [4]: - Fixed patch 3 - Added reviews from Jagan - Rebased on v5.19-rc1 Changes from v1 at [3]: - fixed DSI host bindings - add reviewed-by tags for bindings - moved magic values to defines thanks to Martin's searches - added proper prefixes to defines - moved phy_configure to phy_init() dw-mipi-dsi callback - moved phy_on to a new phy_power_on() dw-mipi-dsi callback - correctly return phy_init/configure errors to callback returns [1] https://lore.kernel.org/r/20200907081825.1654-1-narmstrong@baylibre.com [2] https://lore.kernel.org/r/20211020123947.2585572-1-narmstrong@baylibre.com [3] https://lore.kernel.org/r/20200907081825.1654-1-narmstrong@baylibre.com [4] https://lore.kernel.org/r/20220120083357.1541262-1-narmstrong@baylibre.com [5] https://lore.kernel.org/r/20220617072723.1742668-1-narmstrong@baylibre.com --- Neil Armstrong (17): clk: meson: g12a: prefix private CLK IDs defines with PRIV clk: meson: g12a: add CTS_ENCL & CTS_ENCL_SEL clocks dt-bindings: clk: g12a-clkc: add VCLK2_SEL and CTS_ENCL clock ids clk: meson: g12: use VCLK2_SEL, CTS_ENCL & CTS_ENCL_SEL public CLK IDs clk: meson: g12a: make VCLK2 and ENCL clock path configurable by CCF dt-bindings: display: add Amlogic MIPI DSI Host Controller bindings dt-bindings: display: meson-vpu: add third DPI output port drm/meson: fix unbind path if HDMI fails to bind drm/meson: only use components with dw-hdmi drm/meson: venc: add ENCL encoder setup for MIPI-DSI output drm/meson: add DSI encoder drm/meson: add support for MIPI-DSI transceiver drm/panel: khadas-ts050: update timings to achieve 60Hz refresh rate arm64: meson: g12-common: add the MIPI DSI nodes DONOTMERGE: arm64: meson: khadas-vim3l: add DSI panel dt-bindings: arm: amlogic: Document the MNT Reform 2 CM4 adapter with a BPI-CM4 Module arm64: dts: amlogic: meson-g12b-bananapi-cm4: add support for MNT Reform2 with CM4 adaper Documentation/devicetree/bindings/arm/amlogic.yaml | 1 + .../display/amlogic,meson-g12a-dw-mipi-dsi.yaml | 118 +++ .../bindings/display/amlogic,meson-vpu.yaml | 5 + arch/arm64/boot/dts/amlogic/Makefile | 1 + arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi | 70 ++ .../meson-g12b-bananapi-cm4-mnt-reform2.dts | 388 ++++++++++ .../boot/dts/amlogic/meson-g12b-khadas-vim3.dtsi | 2 +- arch/arm64/boot/dts/amlogic/meson-khadas-vim3.dtsi | 76 ++ .../boot/dts/amlogic/meson-sm1-khadas-vim3l.dts | 2 +- drivers/clk/meson/g12a.c | 791 ++++++++++++--------- drivers/clk/meson/g12a.h | 261 ++++--- drivers/gpu/drm/meson/Kconfig | 7 + drivers/gpu/drm/meson/Makefile | 3 +- drivers/gpu/drm/meson/meson_drv.c | 62 +- drivers/gpu/drm/meson/meson_drv.h | 1 + drivers/gpu/drm/meson/meson_dw_mipi_dsi.c | 352 +++++++++ drivers/gpu/drm/meson/meson_dw_mipi_dsi.h | 160 +++++ drivers/gpu/drm/meson/meson_encoder_dsi.c | 174 +++++ drivers/gpu/drm/meson/meson_encoder_dsi.h | 13 + drivers/gpu/drm/meson/meson_registers.h | 25 + drivers/gpu/drm/meson/meson_venc.c | 211 +++++- drivers/gpu/drm/meson/meson_venc.h | 6 + drivers/gpu/drm/meson/meson_vpp.h | 2 + drivers/gpu/drm/panel/panel-khadas-ts050.c | 16 +- include/dt-bindings/clock/g12a-clkc.h | 3 + 25 files changed, 2262 insertions(+), 488 deletions(-) --- base-commit: 8c33787278ca8db73ad7d23f932c8c39b9f6e543 change-id: 20230512-amlogic-v6-4-upstream-dsi-ccf-vim3-b8e5217e1f4a Best regards, -- Neil Armstrong