From nobody Sun Feb 8 07:58:58 2026 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 E311CC04FDF for ; Fri, 28 Jul 2023 11:09:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236178AbjG1LJw (ORCPT ); Fri, 28 Jul 2023 07:09:52 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55638 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233269AbjG1LJs (ORCPT ); Fri, 28 Jul 2023 07:09:48 -0400 Received: from mail-lf1-x136.google.com (mail-lf1-x136.google.com [IPv6:2a00:1450:4864:20::136]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F285B3A8D for ; Fri, 28 Jul 2023 04:09:45 -0700 (PDT) Received: by mail-lf1-x136.google.com with SMTP id 2adb3069b0e04-4fe0fe622c3so3369932e87.2 for ; Fri, 28 Jul 2023 04:09:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1690542584; x=1691147384; 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=CspJ1Q+2LosEzKqDlXYExoY3sG/z+p7xYAQPInOGC34=; b=ewdWI7HtFVt+Vy3k+KCOVsfT0qkmuc5UXfntmc/5BhslLaNuno1VvpEbP79UDK0TEN KJ1N3MOh8yDj+6EGxDIeCFdSV9RFXP+Nvs4V2MITJCQgGsYhXZi1reHyaaTAnjXN2aqC xQBwToefEKB9ixgrIBHbG3Zxr17l0JBcRD6VyoePM9Mcr/25SGdFkdt8lG9JDfcbzU0h A0QO6OoiT0kxf20TPL+7NshxoQfznsElCJ1gN+bh1KLSBc30hLe56MmKyg1gxCTeUoTL unZLYPpA4NcbKxtlsffAHw23rN0Fj/kiAxq2qMi3/ptBoU7zcs/7KvuJUpGEl+Xq5mNH VBgQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1690542584; x=1691147384; 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=CspJ1Q+2LosEzKqDlXYExoY3sG/z+p7xYAQPInOGC34=; b=NSx+yUbuMdDBogQpZTI5NPiLD8QxGM9P0AiECPuqcDuUA8u5V69ptzE2PxbueNThaP +GKxO/dfe7lvnvH66ofSmBGwUMVCVvDzEt2nsP4vsIyzx/nqCQMUMSHSwJ5RcNLDI+kk quFJZ6z+yuJC0OSQEXZpMXRHUoP36LkfTB41GDK2EZm9sXNlD78ptNGy6Cl6LXGdvc74 yof2K5IU1DgkoQnPbaSJYe3wrGrsDtYkHKaDccP/VXUxZXO0wb+e/2hJMaJZUphvxFef 940GntnN6OmyMObT+82GzTP+NVYFSfqDQD3AL+6a3Z2yz2WOqryhSAiZqGryR/WU82Yr WJGQ== X-Gm-Message-State: ABy/qLapXJyFpG6nx+geUvZF6yeS/HmOSgE6Cn9FZspuGAj38CUw/sEl CZ+99y130KB354snLPiOvHbO0Ps5o7Yun3z2FyI= X-Google-Smtp-Source: APBJJlGPo6otdvbNpb6PPOVqJHoECkI7+9NbxwMBipH4J83WRCsY5+S7f+PfklXFUlp6M330NYT+aQ== X-Received: by 2002:ac2:499c:0:b0:4fb:242:6dfa with SMTP id f28-20020ac2499c000000b004fb02426dfamr1328866lfl.57.1690542584328; Fri, 28 Jul 2023 04:09:44 -0700 (PDT) Received: from lothlorien.lan (dzdqv0yyyyyyyyyyybm5y-3.rev.dnainternet.fi. [2001:14ba:a0db:1f00::ab2]) by smtp.gmail.com with ESMTPSA id v11-20020a056512096b00b004fdc5557a70sm759854lft.141.2023.07.28.04.09.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Jul 2023 04:09:43 -0700 (PDT) From: Dmitry Baryshkov To: Heikki Krogerus , Greg Kroah-Hartman , Bryan O'Donoghue , Guenter Roeck , Andy Gross , Bjorn Andersson , Konrad Dybcio Cc: linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org Subject: [PATCH v4 1/2] usb: typec: altmodes/displayport: add support for embedded DP cases Date: Fri, 28 Jul 2023 14:09:41 +0300 Message-Id: <20230728110942.485358-2-dmitry.baryshkov@linaro.org> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230728110942.485358-1-dmitry.baryshkov@linaro.org> References: <20230728110942.485358-1-dmitry.baryshkov@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" In the embedded cases, the DisplayPort connector is handled by the TCPM itself. It was proposed to add the "displayport" OF property to the DT bindings, but it was rejected in favour of properly describing the electrical signal path using of_graph. Fallback to the controller fwnode for HPD notifications to support such usecases without requiring additional DT properties. Signed-off-by: Dmitry Baryshkov --- drivers/usb/typec/altmodes/displayport.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/usb/typec/altmodes/displayport.c b/drivers/usb/typec/a= ltmodes/displayport.c index dc2d3a83dc26..76c3e2f8e117 100644 --- a/drivers/usb/typec/altmodes/displayport.c +++ b/drivers/usb/typec/altmodes/displayport.c @@ -578,7 +578,10 @@ int dp_altmode_probe(struct typec_altmode *alt) alt->ops =3D &dp_altmode_ops; =20 fwnode =3D dev_fwnode(alt->dev.parent->parent); /* typec_port fwnode */ - dp->connector_fwnode =3D fwnode_find_reference(fwnode, "displayport", 0); + if (fwnode_property_present(fwnode, "displayport")) + dp->connector_fwnode =3D fwnode_find_reference(fwnode, "displayport", 0); + else + dp->connector_fwnode =3D fwnode_handle_get(fwnode); /* embedded DP */ if (IS_ERR(dp->connector_fwnode)) dp->connector_fwnode =3D NULL; =20 --=20 2.39.2 From nobody Sun Feb 8 07:58:58 2026 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 CDC67C001DE for ; Fri, 28 Jul 2023 11:09:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231270AbjG1LJz (ORCPT ); Fri, 28 Jul 2023 07:09:55 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55676 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236175AbjG1LJt (ORCPT ); Fri, 28 Jul 2023 07:09:49 -0400 Received: from mail-lf1-x134.google.com (mail-lf1-x134.google.com [IPv6:2a00:1450:4864:20::134]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 21C783A97 for ; Fri, 28 Jul 2023 04:09:47 -0700 (PDT) Received: by mail-lf1-x134.google.com with SMTP id 2adb3069b0e04-4fb7373dd35so4075708e87.1 for ; Fri, 28 Jul 2023 04:09:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1690542585; x=1691147385; 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=klthd6vAZO8COPYLdUmNjwbf5hPeD+fKJf2Tr1rWU5s=; b=qzoI7aDGs6Icvzs1VL++YFRxBZAQ/CSpMZ+nRP4xzxPQrNllm6WKvFFsjv87CiKRlO Gzm9ZPSG7uxRGoB75hpB2HvPvrver8hVzxrVHx2ikfyb3Wgoq0Pjo2mwRx3YsitRPIt6 eBuwqeBgSZjofhfCJe7oyJ1ieYQEI+sGoUl7TwQP41F1Rbx8OM5FRtme4w+OfDyFb9X0 juU+zysMLfalcpjyBTU5vkUTxSngXW3ChNnow3xtYQysmfED/QGydCegDS7q/wjb6xY1 8az23JKCFKVpqzBxKkFsPs6Xn/3kuktvAfGohu4MYkkCbXASy9pMhE/o90w+qrcmP/Us XuIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1690542585; x=1691147385; 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=klthd6vAZO8COPYLdUmNjwbf5hPeD+fKJf2Tr1rWU5s=; b=A1LNTrxN5tv0089z54WO2mkNKoqvGo+I+Rqn838P0mEqP1jIasmBDVqpDq+6Bv6TSD dTWS4NNZleD1AQ1OMc/BWQtjotDSXPFQRR/bqztbWzVnXdnsyWfHfszDeqiEGS2uQMJq /egMZfywGbzHYzTiIIrP0pIZbqzcGPWA9C7O5gtwUOblKnldaK7t7oLZxL6fm8+2d5EI xa4Hw+TezXmKRa1X+jbpqvzk7ipRzClmat4uE4oxenugx4aklIAfDlss9d5W6WNHsDEe CIAyWtMERaCaboMetOTht903DdTbuDw+C6npQPuhRffNWq2tuFTvciIe5y6CjiGFqeC5 8zWg== X-Gm-Message-State: ABy/qLaU7xt4ilKiZ844HksQnz+NsAgFoJ3CswHAHymDG0lmNT+4LxXL vgXqMcX9Fq5SxAgjaHWORKIz9diWXUGaRPwlUt4= X-Google-Smtp-Source: APBJJlFusFJBmXpetb2rNKn22mRzVB1nKAAqvRO40U27Jprw3SApjUkSFuzZJP+swFiOqPjd80NJFw== X-Received: by 2002:a05:6512:3246:b0:4f9:5693:3d2c with SMTP id c6-20020a056512324600b004f956933d2cmr748279lfr.34.1690542585211; Fri, 28 Jul 2023 04:09:45 -0700 (PDT) Received: from lothlorien.lan (dzdqv0yyyyyyyyyyybm5y-3.rev.dnainternet.fi. [2001:14ba:a0db:1f00::ab2]) by smtp.gmail.com with ESMTPSA id v11-20020a056512096b00b004fdc5557a70sm759854lft.141.2023.07.28.04.09.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Jul 2023 04:09:44 -0700 (PDT) From: Dmitry Baryshkov To: Heikki Krogerus , Greg Kroah-Hartman , Bryan O'Donoghue , Guenter Roeck , Andy Gross , Bjorn Andersson , Konrad Dybcio Cc: linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org Subject: [PATCH v4 2/2] usb: typec: qcom-pmic-typec: register drm_bridge Date: Fri, 28 Jul 2023 14:09:42 +0300 Message-Id: <20230728110942.485358-3-dmitry.baryshkov@linaro.org> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230728110942.485358-1-dmitry.baryshkov@linaro.org> References: <20230728110942.485358-1-dmitry.baryshkov@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The current approach to handling DP on bridge-enabled platforms requires a chain of DP bridges up to the USB-C connector. Register a last DRM bridge for such chain. Acked-by: Bryan O'Donoghue Signed-off-by: Dmitry Baryshkov --- drivers/usb/typec/tcpm/Kconfig | 1 + drivers/usb/typec/tcpm/qcom/qcom_pmic_typec.c | 35 +++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/drivers/usb/typec/tcpm/Kconfig b/drivers/usb/typec/tcpm/Kconfig index 5d393f520fc2..0b2993fef564 100644 --- a/drivers/usb/typec/tcpm/Kconfig +++ b/drivers/usb/typec/tcpm/Kconfig @@ -79,6 +79,7 @@ config TYPEC_WCOVE config TYPEC_QCOM_PMIC tristate "Qualcomm PMIC USB Type-C Port Controller Manager driver" depends on ARCH_QCOM || COMPILE_TEST + depends on DRM || DRM=3Dn help A Type-C port and Power Delivery driver which aggregates two discrete pieces of silicon in the PM8150b PMIC block: the diff --git a/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec.c b/drivers/usb/ty= pec/tcpm/qcom/qcom_pmic_typec.c index af44ee4e6e86..0ea7cc656089 100644 --- a/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec.c +++ b/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec.c @@ -17,6 +17,9 @@ #include #include #include + +#include + #include "qcom_pmic_typec_pdphy.h" #include "qcom_pmic_typec_port.h" =20 @@ -33,6 +36,7 @@ struct pmic_typec { struct pmic_typec_port *pmic_typec_port; bool vbus_enabled; struct mutex lock; /* VBUS state serialization */ + struct drm_bridge bridge; }; =20 #define tcpc_to_tcpm(_tcpc_) container_of(_tcpc_, struct pmic_typec, tcpc) @@ -146,6 +150,33 @@ static int qcom_pmic_typec_init(struct tcpc_dev *tcpc) return 0; } =20 +#ifdef CONFIG_DRM +static int qcom_pmic_typec_attach(struct drm_bridge *bridge, + enum drm_bridge_attach_flags flags) +{ + return flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR ? 0 : -EINVAL; +} + +static const struct drm_bridge_funcs qcom_pmic_typec_bridge_funcs =3D { + .attach =3D qcom_pmic_typec_attach, +}; + +static int qcom_pmic_typec_init_drm(struct pmic_typec *tcpm) +{ + tcpm->bridge.funcs =3D &qcom_pmic_typec_bridge_funcs; + tcpm->bridge.of_node =3D of_get_child_by_name(tcpm->dev->of_node, "connec= tor"); + tcpm->bridge.ops =3D DRM_BRIDGE_OP_HPD; + tcpm->bridge.type =3D DRM_MODE_CONNECTOR_DisplayPort; + + return devm_drm_bridge_add(tcpm->dev, &tcpm->bridge); +} +#else +static int qcom_pmic_typec_init_drm(struct pmic_typec *tcpm) +{ + return 0; +} +#endif + static int qcom_pmic_typec_probe(struct platform_device *pdev) { struct pmic_typec *tcpm; @@ -208,6 +239,10 @@ static int qcom_pmic_typec_probe(struct platform_devic= e *pdev) mutex_init(&tcpm->lock); platform_set_drvdata(pdev, tcpm); =20 + ret =3D qcom_pmic_typec_init_drm(tcpm); + if (ret) + return ret; + tcpm->tcpc.fwnode =3D device_get_named_child_node(tcpm->dev, "connector"); if (!tcpm->tcpc.fwnode) return -EINVAL; --=20 2.39.2