From patchwork Sat Apr 8 09:47:22 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Svyatoslav Ryhel X-Patchwork-Id: 13205632 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 gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id E7BF2C77B61 for ; Sat, 8 Apr 2023 09:48:00 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 38C7F10E0FC; Sat, 8 Apr 2023 09:47:54 +0000 (UTC) Received: from mail-ej1-x634.google.com (mail-ej1-x634.google.com [IPv6:2a00:1450:4864:20::634]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0186210E027 for ; Sat, 8 Apr 2023 09:47:48 +0000 (UTC) Received: by mail-ej1-x634.google.com with SMTP id a640c23a62f3a-94a35b0ec77so19180866b.3 for ; Sat, 08 Apr 2023 02:47:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1680947267; x=1683539267; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=0RkJjvXtF3VU1Cy+t8RIPMHhsvFn55qW4SFCevsbzn4=; b=UGvGMJosgQTVH39RakdelZpC0StnZ1PZzBWnxLzZ5og7/LerO1hbzhBlMR2Kf/3lTo 1201BYL06Kqz6ITIir6mmEddV4v9rL8H5MpchofCos1n5Y4OU1U9Hf0oaqgPgXiLnPx1 3UuZmTaP2G+57ZWPk1STLyNK4E9bOEQv4bzUz6Q4F4Be+OVUj7ZRV+YMoKNMFOCyvr6l QgKzjtaiR8jF/O/hL9lvLuw90i+g4ZtqpQ69hf6Cuu3ty/NMtqPaRBsggastVsrZrBK0 MdxuRqsLKznfD28KXmgCMVT1WbYMPQ207LyLG2jnmR354/w0cFR283o9/sUge66jQx88 om2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680947267; x=1683539267; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=0RkJjvXtF3VU1Cy+t8RIPMHhsvFn55qW4SFCevsbzn4=; b=yFA63ep+bexnsJ6Pg0vqmaW45MoCCYRiU+qOnTyLKx7JPX89eOVOJDwD1g3IOF1TfV x+Vg/ybexkTlW0wWI7FL2gNADiuHknQas/0eTcUVy55fmjVX4kONXcZ+ETTNY2TILLi2 cMgKErbhnkD+wyn2NO1hUWujWklgZua4pHy6tFNyPFC7ug+X33tNkZN/FyN9iuXj4UJa QsL1JlA23B+0r4I6/Vx9RWKGYIcap3+RkOwiq7eYM64AxtT9oKIyF+3DcXZ4/Xd+pvW8 p8Ev/8GoMK9PA+VIkD+gM4F4sNxeH2l7UzwuGoy7F0BJW6Y4ce8jjOYtFbVSyc/wN5fv K/mg== X-Gm-Message-State: AAQBX9d6jfmLxNOlES6lSccyC867es+UXHFnsmkEMV1hD6LHrk4g+B6G sLtsi609aYHi9BNCK2XFt+Y= X-Google-Smtp-Source: AKy350ZO1WTb+JMGVZ0B8YpfZnnHStqYVCirnT9BonVAubdsbktzssUGadzVx62Bdc94GSIK27wwag== X-Received: by 2002:a50:ff13:0:b0:504:80f8:f6b2 with SMTP id a19-20020a50ff13000000b0050480f8f6b2mr2697563edu.25.1680947266484; Sat, 08 Apr 2023 02:47:46 -0700 (PDT) Received: from xeon.. ([188.163.112.79]) by smtp.gmail.com with ESMTPSA id a21-20020a50c315000000b0050481736f0csm982297edb.12.2023.04.08.02.47.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 08 Apr 2023 02:47:46 -0700 (PDT) From: Svyatoslav Ryhel To: Rob Herring , Krzysztof Kozlowski , Thierry Reding , Jonathan Hunter , David Airlie , Daniel Vetter , Svyatoslav Ryhel , Maxim Schwalm , Dmitry Osipenko Subject: [PATCH v1 1/2] drm/tegra: output: hdmi: Support bridge/connector Date: Sat, 8 Apr 2023 12:47:22 +0300 Message-Id: <20230408094723.12733-2-clamor95@gmail.com> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20230408094723.12733-1-clamor95@gmail.com> References: <20230408094723.12733-1-clamor95@gmail.com> MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-tegra@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" From: Maxim Schwalm Some Tegra device-trees may specify a video output graph, which involves MHL bridge/simple bridge and/or connector framework. This patch adds support for the bridge/connector attached to the HDMI output, allowing us to model the hardware properly. Inspired by: 29efdc2 ("drm/tegra: output: rgb: Support LVDS encoder bridge") Tested-by: Andreas Westman Dorcsak # ASUS TF T30 Tested-by: Maxim Schwalm # ASUS P1801-T T30 Tested-by: Robert Eckelmann # ASUS TF101 T20 Tested-by: Svyatoslav Ryhel # ASUS TF201 T30 Signed-off-by: Maxim Schwalm Signed-off-by: Svyatoslav Ryhel --- drivers/gpu/drm/tegra/hdmi.c | 44 +++++++++++++++++++++++++++--------- 1 file changed, 33 insertions(+), 11 deletions(-) diff --git a/drivers/gpu/drm/tegra/hdmi.c b/drivers/gpu/drm/tegra/hdmi.c index 40ec3e6cf204..45b37b103785 100644 --- a/drivers/gpu/drm/tegra/hdmi.c +++ b/drivers/gpu/drm/tegra/hdmi.c @@ -19,6 +19,7 @@ #include #include +#include #include #include #include @@ -1544,26 +1545,47 @@ static int tegra_hdmi_init(struct host1x_client *client) { struct tegra_hdmi *hdmi = host1x_client_to_hdmi(client); struct drm_device *drm = dev_get_drvdata(client->host); + struct drm_connector *connector; int err; hdmi->output.dev = client->dev; - drm_connector_init_with_ddc(drm, &hdmi->output.connector, - &tegra_hdmi_connector_funcs, - DRM_MODE_CONNECTOR_HDMIA, - hdmi->output.ddc); - drm_connector_helper_add(&hdmi->output.connector, - &tegra_hdmi_connector_helper_funcs); - hdmi->output.connector.dpms = DRM_MODE_DPMS_OFF; - drm_simple_encoder_init(drm, &hdmi->output.encoder, DRM_MODE_ENCODER_TMDS); drm_encoder_helper_add(&hdmi->output.encoder, &tegra_hdmi_encoder_helper_funcs); - drm_connector_attach_encoder(&hdmi->output.connector, - &hdmi->output.encoder); - drm_connector_register(&hdmi->output.connector); + if (hdmi->output.bridge) { + err = drm_bridge_attach(&hdmi->output.encoder, hdmi->output.bridge, + NULL, DRM_BRIDGE_ATTACH_NO_CONNECTOR); + if (err) { + dev_err(client->dev, "failed to attach bridge: %d\n", + err); + return err; + } + + connector = drm_bridge_connector_init(drm, &hdmi->output.encoder); + if (IS_ERR(connector)) { + dev_err(client->dev, + "failed to initialize bridge connector: %pe\n", + connector); + return PTR_ERR(connector); + } + + drm_connector_attach_encoder(connector, &hdmi->output.encoder); + } else { + drm_connector_init_with_ddc(drm, &hdmi->output.connector, + &tegra_hdmi_connector_funcs, + DRM_MODE_CONNECTOR_HDMIA, + hdmi->output.ddc); + drm_connector_helper_add(&hdmi->output.connector, + &tegra_hdmi_connector_helper_funcs); + hdmi->output.connector.dpms = DRM_MODE_DPMS_OFF; + + drm_connector_attach_encoder(&hdmi->output.connector, + &hdmi->output.encoder); + drm_connector_register(&hdmi->output.connector); + } err = tegra_output_init(drm, &hdmi->output); if (err < 0) { From patchwork Sat Apr 8 09:47:23 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Svyatoslav Ryhel X-Patchwork-Id: 13205631 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 gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 5C17FC77B61 for ; Sat, 8 Apr 2023 09:47:57 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 9007C10E0CB; Sat, 8 Apr 2023 09:47:52 +0000 (UTC) Received: from mail-ej1-x629.google.com (mail-ej1-x629.google.com [IPv6:2a00:1450:4864:20::629]) by gabe.freedesktop.org (Postfix) with ESMTPS id 88A8F10E0CB for ; Sat, 8 Apr 2023 09:47:49 +0000 (UTC) Received: by mail-ej1-x629.google.com with SMTP id jg21so1611234ejc.2 for ; Sat, 08 Apr 2023 02:47:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1680947267; x=1683539267; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=a7JcVwqthdcJ8hCQRH20mpyswxWH0pIeDYiRTxlRyzE=; b=GrOTY5DqaxGZuDFLw9SJTkHvxA73yO/zPw/FZKG55r+tjyVbuOG+a2XAJUlYkxu+ku 1pwXUF0J7QenhGNPYk2ljI8NhvtWOFetj+golw0VWH+Y4Nw4CpMaYl0a6zIFMJbMnysc WDNkab6lVRbLfP1a+o0Ef8S4x9x65IQ23WZZY4mqpCY8uBwLUXQys/oAMCF/Q7ExVfmH 1bL0xYnF9N/Y1B+4kkcqMY1KHCvEwW6U4dZUj0crpahel0qCBNO7pQDEiHlFSU8dDGB6 OLS3BtHd1OQQ39TRP73/Sm/eGJo+oGGJLfswJ+UMOjl4FJ/i6CcEbUKl7/yEGZxl0HEe S3gg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680947267; x=1683539267; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=a7JcVwqthdcJ8hCQRH20mpyswxWH0pIeDYiRTxlRyzE=; b=yJ1HuEw01mHgqCn46Bevr8ehyqZee+isUI5X2bT0xm/ObRT+AsJtaPfH6jECxKxTBd PfkG2BIUUBSYNNvABZDxe9rnGtip0VBHWewy1lmLaFkgMcNlWZlBrBajfXAILwIx2jxQ EU0usDDBH2rgvxyBF7Wa//Qc2wdl6VU9jIZUvrO7QCb9iPyhiuP6EKkqv5Deg5bJvsYX BAmebcO+OvklKhBz9eZe6RcfmjrsHOV4oRG/zBMxrhhEiUcdUXa/6Rj0r4NTuWH1KHZd zFiB2uk1jhIGih/tsfKpSgl5SgpLsThqvPd4nxEmDHgEyhQENIxL0NCWX0Np5H8YF6lP TLkw== X-Gm-Message-State: AAQBX9dDX2zKDYnSCtVFnfZGeGD0UZi5pvJFfsQR8ikrmeKbKoDkjiQv h3+riZib5i2PXp0LB2GxhKc= X-Google-Smtp-Source: AKy350b6o8A/fVh/YL6rI4iMR4TK2MLQhaSPsZkerv2yJgeK2/onG9QYyVuPaJ/tfM+ENyVqTAXrLQ== X-Received: by 2002:a17:907:a08:b0:93b:b8f3:225d with SMTP id bb8-20020a1709070a0800b0093bb8f3225dmr1490869ejc.15.1680947267449; Sat, 08 Apr 2023 02:47:47 -0700 (PDT) Received: from xeon.. ([188.163.112.79]) by smtp.gmail.com with ESMTPSA id a21-20020a50c315000000b0050481736f0csm982297edb.12.2023.04.08.02.47.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 08 Apr 2023 02:47:47 -0700 (PDT) From: Svyatoslav Ryhel To: Rob Herring , Krzysztof Kozlowski , Thierry Reding , Jonathan Hunter , David Airlie , Daniel Vetter , Svyatoslav Ryhel , Maxim Schwalm , Dmitry Osipenko Subject: [PATCH v1 2/2] ARM: tegra: transformers: add connector node Date: Sat, 8 Apr 2023 12:47:23 +0300 Message-Id: <20230408094723.12733-3-clamor95@gmail.com> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20230408094723.12733-1-clamor95@gmail.com> References: <20230408094723.12733-1-clamor95@gmail.com> MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-tegra@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" All ASUS Transformers have micro-HDMI connector directly available. After Tegra HDMI got bridge/connector support, we should use connector framework for proper HW description. Tested-by: Andreas Westman Dorcsak # ASUS TF T30 Tested-by: Robert Eckelmann # ASUS TF101 T20 Tested-by: Svyatoslav Ryhel # ASUS TF201 T30 Signed-off-by: Svyatoslav Ryhel --- arch/arm/boot/dts/tegra20-asus-tf101.dts | 22 ++++++++++++++++--- .../dts/tegra30-asus-transformer-common.dtsi | 21 ++++++++++++++++-- 2 files changed, 38 insertions(+), 5 deletions(-) diff --git a/arch/arm/boot/dts/tegra20-asus-tf101.dts b/arch/arm/boot/dts/tegra20-asus-tf101.dts index 7b2969656ec9..d8d14aa145e5 100644 --- a/arch/arm/boot/dts/tegra20-asus-tf101.dts +++ b/arch/arm/boot/dts/tegra20-asus-tf101.dts @@ -82,9 +82,11 @@ hdmi@54280000 { pll-supply = <&hdmi_pll_reg>; hdmi-supply = <&vdd_hdmi_en>; - nvidia,ddc-i2c-bus = <&hdmi_ddc>; - nvidia,hpd-gpio = <&gpio TEGRA_GPIO(N, 7) - GPIO_ACTIVE_HIGH>; + port@0 { + hdmi_out: endpoint { + remote-endpoint = <&connector_in>; + }; + }; }; }; @@ -963,6 +965,20 @@ clk32k_in: clock-32k-in { #clock-cells = <0>; }; + connector { + compatible = "hdmi-connector"; + type = "d"; + + hpd-gpios = <&gpio TEGRA_GPIO(N, 7) GPIO_ACTIVE_HIGH>; + ddc-i2c-bus = <&hdmi_ddc>; + + port { + connector_in: endpoint { + remote-endpoint = <&hdmi_out>; + }; + }; + }; + cpus { cpu0: cpu@0 { cpu-supply = <&vdd_cpu>; diff --git a/arch/arm/boot/dts/tegra30-asus-transformer-common.dtsi b/arch/arm/boot/dts/tegra30-asus-transformer-common.dtsi index 1861b2de2dc3..b0d041a5b20f 100644 --- a/arch/arm/boot/dts/tegra30-asus-transformer-common.dtsi +++ b/arch/arm/boot/dts/tegra30-asus-transformer-common.dtsi @@ -80,8 +80,11 @@ hdmi: hdmi@54280000 { pll-supply = <&vdd_1v8_vio>; vdd-supply = <&vdd_3v3_sys>; - nvidia,hpd-gpio = <&gpio TEGRA_GPIO(N, 7) GPIO_ACTIVE_HIGH>; - nvidia,ddc-i2c-bus = <&hdmi_ddc>; + port@0 { + hdmi_out: endpoint { + remote-endpoint = <&connector_in>; + }; + }; }; }; @@ -1492,6 +1495,20 @@ clk32k_in: clock-32k { clock-output-names = "pmic-oscillator"; }; + connector { + compatible = "hdmi-connector"; + type = "d"; + + hpd-gpios = <&gpio TEGRA_GPIO(N, 7) GPIO_ACTIVE_HIGH>; + ddc-i2c-bus = <&hdmi_ddc>; + + port { + connector_in: endpoint { + remote-endpoint = <&hdmi_out>; + }; + }; + }; + cpus { cpu0: cpu@0 { cpu-supply = <&vdd_cpu>;