From patchwork Wed Jun 17 18:02:04 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wesley Cheng X-Patchwork-Id: 11610377 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 6C13214B7 for ; Wed, 17 Jun 2020 18:03:30 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 48BED2184D for ; Wed, 17 Jun 2020 18:03:30 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=mg.codeaurora.org header.i=@mg.codeaurora.org header.b="OumKI3q4" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727062AbgFQSCr (ORCPT ); Wed, 17 Jun 2020 14:02:47 -0400 Received: from mail29.static.mailgun.info ([104.130.122.29]:32533 "EHLO mail29.static.mailgun.info" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727043AbgFQSCm (ORCPT ); Wed, 17 Jun 2020 14:02:42 -0400 DKIM-Signature: a=rsa-sha256; v=1; c=relaxed/relaxed; d=mg.codeaurora.org; q=dns/txt; s=smtp; t=1592416962; h=Content-Transfer-Encoding: MIME-Version: References: In-Reply-To: Message-Id: Date: Subject: Cc: To: From: Sender; bh=ItzmuB8XZeJAsfCmDo+jIoy4XOK2HIs1bxDv/bUZfXs=; b=OumKI3q4iyS7U9MkP/34xJvSzfvo2QyYMkFcrYJO/708NrYYSXOp0m8Y50pi4Q9nj2T31rCI eyerfBnh/ZUqOXKh09xBU63pV7D2tgUCFyNihMzG71laF+q2A4OThO4jiOtTz3mKbaptngyA uDa9Lx30GQVmSf9gg9UkEsDUHBc= X-Mailgun-Sending-Ip: 104.130.122.29 X-Mailgun-Sid: WyIxZTE2YSIsICJsaW51eC11c2JAdmdlci5rZXJuZWwub3JnIiwgImJlOWU0YSJd Received: from smtp.codeaurora.org (ec2-35-166-182-171.us-west-2.compute.amazonaws.com [35.166.182.171]) by smtp-out-n10.prod.us-east-1.postgun.com with SMTP id 5eea5aae8fe116ddd9f6ab85 (version=TLS1.2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256); Wed, 17 Jun 2020 18:02:22 GMT Received: by smtp.codeaurora.org (Postfix, from userid 1001) id D2B71C433B6; Wed, 17 Jun 2020 18:02:21 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-caf-mail-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=2.0 tests=ALL_TRUSTED,SPF_NONE, URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from wcheng-linux.qualcomm.com (i-global254.qualcomm.com [199.106.103.254]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: wcheng) by smtp.codeaurora.org (Postfix) with ESMTPSA id E3475C433C8; Wed, 17 Jun 2020 18:02:18 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org E3475C433C8 Authentication-Results: aws-us-west-2-caf-mail-1.web.codeaurora.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: aws-us-west-2-caf-mail-1.web.codeaurora.org; spf=none smtp.mailfrom=wcheng@codeaurora.org From: Wesley Cheng To: heikki.krogerus@linux.intel.com, mark.rutland@arm.com, broonie@kernel.org, bjorn.andersson@linaro.org, gregkh@linuxfoundation.org, lgirdwood@gmail.com, agross@kernel.org, robh+dt@kernel.org Cc: linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, jackp@codeaurora.org, rdunlap@infradead.org, bryan.odonoghue@linaro.org, lijun.kernel@gmail.com, Wesley Cheng Subject: [PATCH v3 1/6] usb: typec: Add QCOM PMIC typec detection driver Date: Wed, 17 Jun 2020 11:02:04 -0700 Message-Id: <20200617180209.5636-2-wcheng@codeaurora.org> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200617180209.5636-1-wcheng@codeaurora.org> References: <20200617180209.5636-1-wcheng@codeaurora.org> MIME-Version: 1.0 Sender: linux-usb-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-usb@vger.kernel.org The QCOM SPMI typec driver handles the role and orientation detection, and notifies client drivers using the USB role switch framework. It registers as a typec port, so orientation can be communicated using the typec switch APIs. The driver also attains a handle to the VBUS output regulator, so it can enable/disable the VBUS source when acting as a host/device. Signed-off-by: Wesley Cheng --- drivers/usb/typec/Kconfig | 12 ++ drivers/usb/typec/Makefile | 1 + drivers/usb/typec/qcom-pmic-typec.c | 275 ++++++++++++++++++++++++++++ 3 files changed, 288 insertions(+) create mode 100644 drivers/usb/typec/qcom-pmic-typec.c diff --git a/drivers/usb/typec/Kconfig b/drivers/usb/typec/Kconfig index b4f2aac7ae8a..595c14766e99 100644 --- a/drivers/usb/typec/Kconfig +++ b/drivers/usb/typec/Kconfig @@ -72,6 +72,18 @@ config TYPEC_TPS6598X If you choose to build this driver as a dynamically linked module, the module will be called tps6598x.ko. +config TYPEC_QCOM_PMIC + tristate "Qualcomm PMIC USB Type-C driver" + depends on ARCH_QCOM + help + Driver for supporting role switch over the Qualcomm PMIC. This will + handle the USB Type-C role and orientation detection reported by the + QCOM PMIC if the PMIC has the capability to handle USB Type-C + detection. + + It will also enable the VBUS output to connected devices when a + DFP connection is made. + source "drivers/usb/typec/mux/Kconfig" source "drivers/usb/typec/altmodes/Kconfig" diff --git a/drivers/usb/typec/Makefile b/drivers/usb/typec/Makefile index 7753a5c3cd46..cceffd987643 100644 --- a/drivers/usb/typec/Makefile +++ b/drivers/usb/typec/Makefile @@ -6,4 +6,5 @@ obj-$(CONFIG_TYPEC_TCPM) += tcpm/ obj-$(CONFIG_TYPEC_UCSI) += ucsi/ obj-$(CONFIG_TYPEC_HD3SS3220) += hd3ss3220.o obj-$(CONFIG_TYPEC_TPS6598X) += tps6598x.o +obj-$(CONFIG_TYPEC_QCOM_PMIC) += qcom-pmic-typec.o obj-$(CONFIG_TYPEC) += mux/ diff --git a/drivers/usb/typec/qcom-pmic-typec.c b/drivers/usb/typec/qcom-pmic-typec.c new file mode 100644 index 000000000000..5ae3af03c638 --- /dev/null +++ b/drivers/usb/typec/qcom-pmic-typec.c @@ -0,0 +1,275 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (c) 2020, The Linux Foundation. All rights reserved. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define TYPEC_MISC_STATUS 0xb +#define CC_ATTACHED BIT(0) +#define CC_ORIENTATION BIT(1) +#define SNK_SRC_MODE BIT(6) +#define TYPEC_MODE_CFG 0x44 +#define TYPEC_DISABLE_CMD BIT(0) +#define EN_SNK_ONLY BIT(1) +#define EN_SRC_ONLY BIT(2) +#define TYPEC_VCONN_CONTROL 0x46 +#define VCONN_EN_SRC BIT(0) +#define VCONN_EN_VAL BIT(1) +#define TYPEC_EXIT_STATE_CFG 0x50 +#define SEL_SRC_UPPER_REF BIT(2) +#define TYPEC_INTR_EN_CFG_1 0x5e +#define TYPEC_INTR_EN_CFG_1_MASK GENMASK(7, 0) + +struct qcom_pmic_typec { + struct device *dev; + struct fwnode_handle *fwnode; + struct regmap *regmap; + u32 base; + + struct typec_capability *cap; + struct typec_port *port; + struct usb_role_switch *role_sw; + + struct regulator *vbus_reg; + bool vbus_enabled; +}; + +static void qcom_pmic_typec_enable_vbus_regulator(struct qcom_pmic_typec + *qcom_usb, bool enable) +{ + int ret = 0; + + if (enable == qcom_usb->vbus_enabled) + return; + + if (!qcom_usb->vbus_reg) { + qcom_usb->vbus_reg = devm_regulator_get(qcom_usb->dev, + "usb_vbus"); + if (IS_ERR(qcom_usb->vbus_reg)) { + qcom_usb->vbus_reg = NULL; + return; + } + } + + if (enable) { + ret = regulator_enable(qcom_usb->vbus_reg); + if (ret) + return; + } else { + ret = regulator_disable(qcom_usb->vbus_reg); + if (ret) + return; + } + qcom_usb->vbus_enabled = enable; +} + +static void qcom_pmic_typec_check_connection(struct qcom_pmic_typec *qcom_usb) +{ + enum typec_orientation orientation; + enum usb_role role; + unsigned int stat; + bool enable_vbus; + + regmap_read(qcom_usb->regmap, qcom_usb->base + TYPEC_MISC_STATUS, + &stat); + + if (stat & CC_ATTACHED) { + orientation = ((stat & CC_ORIENTATION) >> 1) ? + TYPEC_ORIENTATION_REVERSE : + TYPEC_ORIENTATION_NORMAL; + typec_set_orientation(qcom_usb->port, orientation); + + role = (stat & SNK_SRC_MODE) ? USB_ROLE_HOST : USB_ROLE_DEVICE; + if (role == USB_ROLE_HOST) + enable_vbus = true; + else + enable_vbus = false; + } else { + role = USB_ROLE_NONE; + enable_vbus = false; + } + + qcom_pmic_typec_enable_vbus_regulator(qcom_usb, enable_vbus); + usb_role_switch_set_role(qcom_usb->role_sw, role); +} + +static irqreturn_t qcom_pmic_typec_interrupt(int irq, void *_qcom_usb) +{ + struct qcom_pmic_typec *qcom_usb = _qcom_usb; + + qcom_pmic_typec_check_connection(qcom_usb); + return IRQ_HANDLED; +} + +static void qcom_pmic_typec_typec_hw_init(struct qcom_pmic_typec *qcom_usb) +{ + u8 mode = 0; + + regmap_update_bits(qcom_usb->regmap, + qcom_usb->base + TYPEC_INTR_EN_CFG_1, + TYPEC_INTR_EN_CFG_1_MASK, 0); + + if (qcom_usb->cap->type != TYPEC_PORT_DRP) + mode = (qcom_usb->cap->type == TYPEC_PORT_SNK) ? + EN_SNK_ONLY : EN_SRC_ONLY; + regmap_update_bits(qcom_usb->regmap, qcom_usb->base + TYPEC_MODE_CFG, + EN_SNK_ONLY | EN_SRC_ONLY, mode); + + regmap_update_bits(qcom_usb->regmap, + qcom_usb->base + TYPEC_VCONN_CONTROL, + VCONN_EN_SRC | VCONN_EN_VAL, VCONN_EN_SRC); + regmap_update_bits(qcom_usb->regmap, + qcom_usb->base + TYPEC_EXIT_STATE_CFG, + SEL_SRC_UPPER_REF, SEL_SRC_UPPER_REF); +} + +static int qcom_pmic_typec_probe(struct platform_device *pdev) +{ + struct device *dev = &pdev->dev; + struct qcom_pmic_typec *qcom_usb; + struct typec_capability *cap; + const char *buf; + int ret, irq, role; + u32 reg; + + ret = of_property_read_u32(dev->of_node, "reg", ®); + if (ret < 0) { + dev_err(dev, "missing base address"); + return ret; + } + + qcom_usb = devm_kzalloc(dev, sizeof(*qcom_usb), GFP_KERNEL); + if (!qcom_usb) + return -ENOMEM; + + qcom_usb->dev = dev; + qcom_usb->base = reg; + + qcom_usb->regmap = dev_get_regmap(dev->parent, NULL); + if (!qcom_usb->regmap) { + dev_err(dev, "Failed to get regmap\n"); + return -EINVAL; + } + + irq = platform_get_irq(pdev, 0); + if (irq < 0) { + dev_err(dev, "Failed to get CC irq\n"); + return -EINVAL; + } + + ret = devm_request_threaded_irq(qcom_usb->dev, irq, NULL, + qcom_pmic_typec_interrupt, IRQF_ONESHOT, + "qcom-pmic-typec", qcom_usb); + if (ret) { + dev_err(&pdev->dev, "Could not request IRQ\n"); + return ret; + } + + qcom_usb->fwnode = device_get_named_child_node(dev, "connector"); + if (!qcom_usb->fwnode) + return -EINVAL; + + cap = devm_kzalloc(dev, sizeof(*cap), GFP_KERNEL); + if (!cap) { + ret = -ENOMEM; + goto err_put_node; + } + + ret = fwnode_property_read_string(qcom_usb->fwnode, "power-role", &buf); + if (!ret) { + role = typec_find_port_power_role(buf); + if (role < 0) + role = TYPEC_PORT_SNK; + } else { + role = TYPEC_PORT_SNK; + } + cap->type = role; + + ret = fwnode_property_read_string(qcom_usb->fwnode, "data-role", &buf); + if (!ret) { + role = typec_find_port_data_role(buf); + if (role < 0) + role = TYPEC_PORT_UFP; + } else { + role = TYPEC_PORT_UFP; + } + cap->data = role; + + cap->prefer_role = TYPEC_NO_PREFERRED_ROLE; + cap->fwnode = qcom_usb->fwnode; + qcom_usb->port = typec_register_port(dev, cap); + if (IS_ERR(qcom_usb->port)) { + ret = PTR_ERR(qcom_usb->port); + dev_err(dev, "Failed to register type c port %d\n", ret); + goto err_put_node; + } + + qcom_usb->cap = cap; + + qcom_usb->role_sw = fwnode_usb_role_switch_get(qcom_usb->fwnode); + if (IS_ERR(qcom_usb->role_sw)) { + if (PTR_ERR(qcom_usb->role_sw) != -EPROBE_DEFER) + dev_err(dev, "failed to get role switch\n"); + ret = PTR_ERR(qcom_usb->role_sw); + goto err_typec_port; + } + + platform_set_drvdata(pdev, qcom_usb); + qcom_pmic_typec_typec_hw_init(qcom_usb); + qcom_pmic_typec_check_connection(qcom_usb); + + return 0; + +err_typec_port: + typec_unregister_port(qcom_usb->port); +err_put_node: + fwnode_handle_put(qcom_usb->fwnode); + + return ret; +} + +static int qcom_pmic_typec_remove(struct platform_device *pdev) +{ + struct qcom_pmic_typec *qcom_usb = platform_get_drvdata(pdev); + + usb_role_switch_set_role(qcom_usb->role_sw, USB_ROLE_NONE); + qcom_pmic_typec_enable_vbus_regulator(qcom_usb, 0); + + typec_unregister_port(qcom_usb->port); + usb_role_switch_put(qcom_usb->role_sw); + fwnode_handle_put(qcom_usb->fwnode); + + return 0; +} + +static const struct of_device_id qcom_pmic_typec_table[] = { + { .compatible = "qcom,pm8150b-usb-typec" }, + { }, +}; +MODULE_DEVICE_TABLE(of, qcom_pmic_typec_table); + +static struct platform_driver qcom_pmic_typec = { + .driver = { + .name = "qcom,pmic-typec", + .of_match_table = qcom_pmic_typec_table, + }, + .probe = qcom_pmic_typec_probe, + .remove = qcom_pmic_typec_remove, +}; + +module_platform_driver(qcom_pmic_typec); + +MODULE_DESCRIPTION("QCOM PMIC USB type C driver"); +MODULE_LICENSE("GPL v2"); From patchwork Wed Jun 17 18:02:05 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wesley Cheng X-Patchwork-Id: 11610359 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 629A1138C for ; Wed, 17 Jun 2020 18:02:46 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 4AD66217D9 for ; Wed, 17 Jun 2020 18:02:46 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=mg.codeaurora.org header.i=@mg.codeaurora.org header.b="j11IHEUC" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727051AbgFQSCl (ORCPT ); Wed, 17 Jun 2020 14:02:41 -0400 Received: from m43-7.mailgun.net ([69.72.43.7]:13040 "EHLO m43-7.mailgun.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726597AbgFQSCj (ORCPT ); Wed, 17 Jun 2020 14:02:39 -0400 DKIM-Signature: a=rsa-sha256; v=1; c=relaxed/relaxed; d=mg.codeaurora.org; q=dns/txt; s=smtp; t=1592416957; h=Content-Transfer-Encoding: MIME-Version: References: In-Reply-To: Message-Id: Date: Subject: Cc: To: From: Sender; bh=4gip6T2n+ruJIaSqIbKM/0ccZuqx7umRJ3mnvHzY7SM=; b=j11IHEUCawQ1GhxtG4dnaPnTi/xh8AHEH+jxOviMwtUNjCgm31HRoI4iLfBLk7MKpA9x1kzQ CzbeA3zsSi+Gwn6HviBxJj+1k1+KC955Kbsk+ot0bBOEHyFWv2gn0alPEoj2GHaR5coT+EMa Fk6IJtcAo818gm7sVkGxD1fFsW4= X-Mailgun-Sending-Ip: 69.72.43.7 X-Mailgun-Sid: WyIxZTE2YSIsICJsaW51eC11c2JAdmdlci5rZXJuZWwub3JnIiwgImJlOWU0YSJd Received: from smtp.codeaurora.org (ec2-35-166-182-171.us-west-2.compute.amazonaws.com [35.166.182.171]) by smtp-out-n13.prod.us-east-1.postgun.com with SMTP id 5eea5aae8fe116ddd9f6aaa2 (version=TLS1.2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256); Wed, 17 Jun 2020 18:02:22 GMT Received: by smtp.codeaurora.org (Postfix, from userid 1001) id 8B2FEC433B2; Wed, 17 Jun 2020 18:02:21 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-caf-mail-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=2.0 tests=ALL_TRUSTED,SPF_NONE, URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from wcheng-linux.qualcomm.com (i-global254.qualcomm.com [199.106.103.254]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: wcheng) by smtp.codeaurora.org (Postfix) with ESMTPSA id CDB55C4339C; Wed, 17 Jun 2020 18:02:19 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org CDB55C4339C Authentication-Results: aws-us-west-2-caf-mail-1.web.codeaurora.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: aws-us-west-2-caf-mail-1.web.codeaurora.org; spf=none smtp.mailfrom=wcheng@codeaurora.org From: Wesley Cheng To: heikki.krogerus@linux.intel.com, mark.rutland@arm.com, broonie@kernel.org, bjorn.andersson@linaro.org, gregkh@linuxfoundation.org, lgirdwood@gmail.com, agross@kernel.org, robh+dt@kernel.org Cc: linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, jackp@codeaurora.org, rdunlap@infradead.org, bryan.odonoghue@linaro.org, lijun.kernel@gmail.com, Wesley Cheng Subject: [PATCH v3 2/6] dt-bindings: usb: Add Qualcomm PMIC type C controller dt-binding Date: Wed, 17 Jun 2020 11:02:05 -0700 Message-Id: <20200617180209.5636-3-wcheng@codeaurora.org> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200617180209.5636-1-wcheng@codeaurora.org> References: <20200617180209.5636-1-wcheng@codeaurora.org> MIME-Version: 1.0 Sender: linux-usb-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-usb@vger.kernel.org Introduce the dt-binding for enabling USB type C orientation and role detection using the PM8150B. The driver will be responsible for receiving the interrupt at a state change on the CC lines, reading the orientation/role, and communicating this information to the remote clients, which can include a role switch node and a type C switch. Signed-off-by: Wesley Cheng --- .../bindings/usb/qcom,pmic-typec.yaml | 117 ++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 Documentation/devicetree/bindings/usb/qcom,pmic-typec.yaml diff --git a/Documentation/devicetree/bindings/usb/qcom,pmic-typec.yaml b/Documentation/devicetree/bindings/usb/qcom,pmic-typec.yaml new file mode 100644 index 000000000000..085b4547d75a --- /dev/null +++ b/Documentation/devicetree/bindings/usb/qcom,pmic-typec.yaml @@ -0,0 +1,117 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: "http://devicetree.org/schemas/usb/qcom,pmic-typec.yaml#" +$schema: "http://devicetree.org/meta-schemas/core.yaml#" + +title: Qualcomm PMIC based USB type C Detection Driver + +maintainers: + - Wesley Cheng + +description: | + Qualcomm PMIC Type C Detect + +properties: + compatible: + enum: + - qcom,pm8150b-usb-typec + + reg: + maxItems: 1 + description: Type C base address + + interrupts: + maxItems: 1 + description: CC change interrupt from PMIC + + connector: + description: Connector type for remote endpoints + type: object + + properties: + compatible: + enum: + - usb-c-connector + + power-role: + enum: + - dual + - source + - sink + + data-role: + enum: + - dual + - host + - device + + port: + description: Remote endpoint connections + type: object + + properties: + endpoint@0: + description: Connection to USB type C mux node + type: object + + properties: + remote-endpoint: + maxItems: 1 + description: Node reference to the type C mux + + endpoint@1: + description: Connection to role switch node + type: object + + properties: + remote-endpoint: + maxItems: 1 + description: Node reference to the role switch node + + required: + - compatible + +required: + - compatible + - interrupts + - connector + +additionalProperties: false + +examples: + - | + #include + pm8150b { + #address-cells = <1>; + #size-cells = <0>; + qcom,typec@1500 { + compatible = "qcom,pm8150b-usb-typec"; + reg = <0x1500>; + interrupts = + <0x2 0x15 0x5 IRQ_TYPE_EDGE_RISING>; + + connector { + compatible = "usb-c-connector"; + power-role = "dual"; + data-role = "dual"; + port { + #address-cells = <1>; + #size-cells = <0>; + usb3_data_ss: endpoint@0 { + reg = <0>; + remote-endpoint = + <&qmp_ss_mux>; + }; + + usb3_role: endpoint@1 { + + reg = <1>; + remote-endpoint = + <&dwc3_drd_switch>; + }; + }; + }; + }; + }; +... From patchwork Wed Jun 17 18:02:06 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wesley Cheng X-Patchwork-Id: 11610367 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id BA5D114B7 for ; Wed, 17 Jun 2020 18:03:06 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id A23BB2184D for ; Wed, 17 Jun 2020 18:03:06 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=mg.codeaurora.org header.i=@mg.codeaurora.org header.b="V1Hz3znQ" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726883AbgFQSDA (ORCPT ); Wed, 17 Jun 2020 14:03:00 -0400 Received: from mail29.static.mailgun.info ([104.130.122.29]:54469 "EHLO mail29.static.mailgun.info" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727098AbgFQSC4 (ORCPT ); Wed, 17 Jun 2020 14:02:56 -0400 DKIM-Signature: a=rsa-sha256; v=1; c=relaxed/relaxed; d=mg.codeaurora.org; q=dns/txt; s=smtp; t=1592416975; h=Content-Transfer-Encoding: MIME-Version: References: In-Reply-To: Message-Id: Date: Subject: Cc: To: From: Sender; bh=QSOzr5wrDqacBKtxNCX2eFHenw8CKJrTOB+F3GlS0og=; b=V1Hz3znQixi9N29ETPAEnHeF79vLnu6CxQj9UwWV5Q7HecPYx+OF90KPBy/rEH9oW4gbYPoo 1HS1A8xQYP3kGaIjwU6UfU7Ey9s9Ykz8q0nU+rsY/TesGueEFmFn8r3Y33PiTfxANZxb04p+ wquQ1Jy5KUy1Sb+WuYg3HmnIomA= X-Mailgun-Sending-Ip: 104.130.122.29 X-Mailgun-Sid: WyIxZTE2YSIsICJsaW51eC11c2JAdmdlci5rZXJuZWwub3JnIiwgImJlOWU0YSJd Received: from smtp.codeaurora.org (ec2-35-166-182-171.us-west-2.compute.amazonaws.com [35.166.182.171]) by smtp-out-n08.prod.us-east-1.postgun.com with SMTP id 5eea5aae86de6ccd44fd1f5a (version=TLS1.2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256); Wed, 17 Jun 2020 18:02:22 GMT Received: by smtp.codeaurora.org (Postfix, from userid 1001) id 2BCF6C43449; Wed, 17 Jun 2020 18:02:22 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-caf-mail-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=2.0 tests=ALL_TRUSTED,SPF_NONE, URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from wcheng-linux.qualcomm.com (i-global254.qualcomm.com [199.106.103.254]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: wcheng) by smtp.codeaurora.org (Postfix) with ESMTPSA id C03B4C433CB; Wed, 17 Jun 2020 18:02:20 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org C03B4C433CB Authentication-Results: aws-us-west-2-caf-mail-1.web.codeaurora.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: aws-us-west-2-caf-mail-1.web.codeaurora.org; spf=none smtp.mailfrom=wcheng@codeaurora.org From: Wesley Cheng To: heikki.krogerus@linux.intel.com, mark.rutland@arm.com, broonie@kernel.org, bjorn.andersson@linaro.org, gregkh@linuxfoundation.org, lgirdwood@gmail.com, agross@kernel.org, robh+dt@kernel.org Cc: linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, jackp@codeaurora.org, rdunlap@infradead.org, bryan.odonoghue@linaro.org, lijun.kernel@gmail.com, Wesley Cheng Subject: [PATCH v3 3/6] arm64: boot: dts: qcom: pm8150b: Add node for USB type C block Date: Wed, 17 Jun 2020 11:02:06 -0700 Message-Id: <20200617180209.5636-4-wcheng@codeaurora.org> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200617180209.5636-1-wcheng@codeaurora.org> References: <20200617180209.5636-1-wcheng@codeaurora.org> MIME-Version: 1.0 Sender: linux-usb-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-usb@vger.kernel.org The PM8150B has a dedicated USB type C block, which can be used for type C orientation and role detection. Create the reference node to this type C block for further use. Signed-off-by: Wesley Cheng --- arch/arm64/boot/dts/qcom/pm8150b.dtsi | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/arch/arm64/boot/dts/qcom/pm8150b.dtsi b/arch/arm64/boot/dts/qcom/pm8150b.dtsi index 322379d5c31f..ec44a8bc2f84 100644 --- a/arch/arm64/boot/dts/qcom/pm8150b.dtsi +++ b/arch/arm64/boot/dts/qcom/pm8150b.dtsi @@ -22,6 +22,14 @@ power-on@800 { status = "disabled"; }; + qcom,typec@1500 { + compatible = "qcom,pm8150b-usb-typec"; + status = "disabled"; + reg = <0x1500>; + interrupts = + <0x2 0x15 0x5 IRQ_TYPE_EDGE_RISING>; + }; + adc@3100 { compatible = "qcom,spmi-adc5"; reg = <0x3100>; From patchwork Wed Jun 17 18:02:07 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wesley Cheng X-Patchwork-Id: 11610379 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id E25E614DD for ; Wed, 17 Jun 2020 18:03:30 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id C4C3521841 for ; Wed, 17 Jun 2020 18:03:30 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=mg.codeaurora.org header.i=@mg.codeaurora.org header.b="kvgeQsUr" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727777AbgFQSDa (ORCPT ); Wed, 17 Jun 2020 14:03:30 -0400 Received: from mail29.static.mailgun.info ([104.130.122.29]:26728 "EHLO mail29.static.mailgun.info" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727039AbgFQSCp (ORCPT ); Wed, 17 Jun 2020 14:02:45 -0400 DKIM-Signature: a=rsa-sha256; v=1; c=relaxed/relaxed; d=mg.codeaurora.org; q=dns/txt; s=smtp; t=1592416965; h=Content-Transfer-Encoding: MIME-Version: References: In-Reply-To: Message-Id: Date: Subject: Cc: To: From: Sender; bh=4VhfVakAj/P5YPhjNjDDhHWoeXOmcz4X4evHz/y01XE=; b=kvgeQsUrVqtaKL2Yv7+LstrTPrIM9VgW/Qo7iB/oxu9nXvZAIWXP9rJAGCutKNBTdncqxzMS Pu7qKf3HHAWIo9apa0fXoa0xVVzK7qHqs0fFzj6Vvjtq+HyZaIsYQsgw+asSpPGox6T3iCid dN9gdZKVfmNjYPvtJ743Vne8/wQ= X-Mailgun-Sending-Ip: 104.130.122.29 X-Mailgun-Sid: WyIxZTE2YSIsICJsaW51eC11c2JAdmdlci5rZXJuZWwub3JnIiwgImJlOWU0YSJd Received: from smtp.codeaurora.org (ec2-35-166-182-171.us-west-2.compute.amazonaws.com [35.166.182.171]) by smtp-out-n13.prod.us-east-1.postgun.com with SMTP id 5eea5ab0bfb34e631c7b167b (version=TLS1.2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256); Wed, 17 Jun 2020 18:02:24 GMT Received: by smtp.codeaurora.org (Postfix, from userid 1001) id 81FB1C433AD; Wed, 17 Jun 2020 18:02:23 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-caf-mail-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=2.0 tests=ALL_TRUSTED,SPF_NONE, URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from wcheng-linux.qualcomm.com (i-global254.qualcomm.com [199.106.103.254]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: wcheng) by smtp.codeaurora.org (Postfix) with ESMTPSA id CE461C433A1; Wed, 17 Jun 2020 18:02:21 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org CE461C433A1 Authentication-Results: aws-us-west-2-caf-mail-1.web.codeaurora.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: aws-us-west-2-caf-mail-1.web.codeaurora.org; spf=none smtp.mailfrom=wcheng@codeaurora.org From: Wesley Cheng To: heikki.krogerus@linux.intel.com, mark.rutland@arm.com, broonie@kernel.org, bjorn.andersson@linaro.org, gregkh@linuxfoundation.org, lgirdwood@gmail.com, agross@kernel.org, robh+dt@kernel.org Cc: linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, jackp@codeaurora.org, rdunlap@infradead.org, bryan.odonoghue@linaro.org, lijun.kernel@gmail.com, Wesley Cheng Subject: [PATCH v3 4/6] regulator: Add support for QCOM PMIC VBUS booster Date: Wed, 17 Jun 2020 11:02:07 -0700 Message-Id: <20200617180209.5636-5-wcheng@codeaurora.org> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200617180209.5636-1-wcheng@codeaurora.org> References: <20200617180209.5636-1-wcheng@codeaurora.org> MIME-Version: 1.0 Sender: linux-usb-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-usb@vger.kernel.org Some Qualcomm PMICs have the capability to source the VBUS output to connected peripherals. This driver will register a regulator to the regulator list to enable or disable this source by an external driver. Signed-off-by: Wesley Cheng --- drivers/regulator/Kconfig | 10 ++ drivers/regulator/Makefile | 1 + drivers/regulator/qcom_usb_vbus-regulator.c | 100 ++++++++++++++++++++ 3 files changed, 111 insertions(+) create mode 100644 drivers/regulator/qcom_usb_vbus-regulator.c diff --git a/drivers/regulator/Kconfig b/drivers/regulator/Kconfig index 074a2ef55943..79d6b7596f0b 100644 --- a/drivers/regulator/Kconfig +++ b/drivers/regulator/Kconfig @@ -797,6 +797,16 @@ config REGULATOR_QCOM_SPMI Qualcomm SPMI PMICs as a module. The module will be named "qcom_spmi-regulator". +config REGULATOR_QCOM_USB_VBUS + tristate "Qualcomm USB Vbus regulator driver" + depends on SPMI || COMPILE_TEST + help + If you say yes to this option, support will be included for the + regulator used to enable the VBUS output. + + Say M here if you want to include support for enabling the VBUS output + as a module. The module will be named "qcom_usb_vbus-regulator". + config REGULATOR_RC5T583 tristate "RICOH RC5T583 Power regulators" depends on MFD_RC5T583 diff --git a/drivers/regulator/Makefile b/drivers/regulator/Makefile index c0d6b96ebd78..cbab28aa7b56 100644 --- a/drivers/regulator/Makefile +++ b/drivers/regulator/Makefile @@ -89,6 +89,7 @@ obj-$(CONFIG_REGULATOR_QCOM_RPM) += qcom_rpm-regulator.o obj-$(CONFIG_REGULATOR_QCOM_RPMH) += qcom-rpmh-regulator.o obj-$(CONFIG_REGULATOR_QCOM_SMD_RPM) += qcom_smd-regulator.o obj-$(CONFIG_REGULATOR_QCOM_SPMI) += qcom_spmi-regulator.o +obj-$(CONFIG_REGULATOR_QCOM_USB_VBUS) += qcom_usb_vbus-regulator.o obj-$(CONFIG_REGULATOR_PALMAS) += palmas-regulator.o obj-$(CONFIG_REGULATOR_PFUZE100) += pfuze100-regulator.o obj-$(CONFIG_REGULATOR_PV88060) += pv88060-regulator.o diff --git a/drivers/regulator/qcom_usb_vbus-regulator.c b/drivers/regulator/qcom_usb_vbus-regulator.c new file mode 100644 index 000000000000..fa7a3d891808 --- /dev/null +++ b/drivers/regulator/qcom_usb_vbus-regulator.c @@ -0,0 +1,100 @@ +// SPDX-License-Identifier: GPL-2.0-only +// +// Qualcomm PMIC VBUS output regulator driver +// +// Copyright (c) 2020, The Linux Foundation. All rights reserved. + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define CMD_OTG 0x40 +#define OTG_EN BIT(0) +#define OTG_CFG 0x53 +#define OTG_EN_SRC_CFG BIT(1) + +static const struct regulator_ops qcom_usb_vbus_reg_ops = { + .enable = regulator_enable_regmap, + .disable = regulator_disable_regmap, + .is_enabled = regulator_is_enabled_regmap, +}; + +static struct regulator_desc qcom_usb_vbus_rdesc = { + .name = "usb_vbus", + .ops = &qcom_usb_vbus_reg_ops, + .owner = THIS_MODULE, + .type = REGULATOR_VOLTAGE, +}; + +static const struct of_device_id qcom_usb_vbus_regulator_match[] = { + { .compatible = "qcom,pm8150b-vbus-reg" }, + { } +}; +MODULE_DEVICE_TABLE(of, qcom_usb_vbus_regulator_match); + +static int qcom_usb_vbus_regulator_probe(struct platform_device *pdev) +{ + struct device *dev = &pdev->dev; + struct regulator_dev *rdev; + struct regmap *regmap; + struct regulator_config config = { }; + struct regulator_init_data *init_data; + int ret; + u32 base; + + ret = of_property_read_u32(dev->of_node, "reg", &base); + if (ret < 0) { + dev_err(dev, "no base address found\n"); + return ret; + } + + regmap = dev_get_regmap(dev->parent, NULL); + if (regmap) { + dev_err(dev, "Failed to get regmap\n"); + return -ENOENT; + } + + init_data = of_get_regulator_init_data(dev, dev->of_node, + &qcom_usb_vbus_rdesc); + if (!init_data) + return -ENOMEM; + + qcom_usb_vbus_rdesc.enable_reg = base + CMD_OTG; + qcom_usb_vbus_rdesc.enable_mask = OTG_EN; + config.dev = dev; + config.init_data = init_data; + config.regmap = regmap; + + rdev = devm_regulator_register(dev, &qcom_usb_vbus_rdesc, &config); + if (IS_ERR(rdev)) { + ret = PTR_ERR(rdev); + dev_err(dev, "not able to register vbus reg %d\n", ret); + return ret; + } + + platform_set_drvdata(pdev, rdev); + + /* Disable HW logic for VBUS enable */ + regmap_update_bits(regmap, base + OTG_CFG, OTG_EN_SRC_CFG, 0); + + return 0; +} + +static struct platform_driver qcom_usb_vbus_regulator_driver = { + .driver = { + .name = "qcom-usb-vbus-regulator", + .of_match_table = qcom_usb_vbus_regulator_match, + }, + .probe = qcom_usb_vbus_regulator_probe, +}; +module_platform_driver(qcom_usb_vbus_regulator_driver); + +MODULE_DESCRIPTION("Qualcomm USB vbus regulator driver"); +MODULE_LICENSE("GPL v2"); +MODULE_ALIAS("platform:qcom-usb-vbus-regulator"); From patchwork Wed Jun 17 18:02:08 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wesley Cheng X-Patchwork-Id: 11610373 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 7429A138C for ; Wed, 17 Jun 2020 18:03:12 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 5D27C2186A for ; Wed, 17 Jun 2020 18:03:12 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=mg.codeaurora.org header.i=@mg.codeaurora.org header.b="wERhChZy" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727001AbgFQSDJ (ORCPT ); Wed, 17 Jun 2020 14:03:09 -0400 Received: from mail29.static.mailgun.info ([104.130.122.29]:46289 "EHLO mail29.static.mailgun.info" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727108AbgFQSC4 (ORCPT ); Wed, 17 Jun 2020 14:02:56 -0400 DKIM-Signature: a=rsa-sha256; v=1; c=relaxed/relaxed; d=mg.codeaurora.org; q=dns/txt; s=smtp; t=1592416975; h=Content-Transfer-Encoding: MIME-Version: References: In-Reply-To: Message-Id: Date: Subject: Cc: To: From: Sender; bh=AeAXk33hC2QGvVdME9/+b4Gj7uF3RQv9KrEUH2pVRD8=; b=wERhChZyLvBMZu68Glol4fIzpp7pFPeXK8C0hnqxX1YUCzTPFxi3RIBQYtwGokylTo4vSe5u OxOOea5LdTEEEDFlem0mPkUQ2ALZKhDwSIuiqWGMuDeeNsvU2o53XtD41jZ9+aCbPnGxmo7P TDcxIcffMeSidLQfb1v2fIMY+RU= X-Mailgun-Sending-Ip: 104.130.122.29 X-Mailgun-Sid: WyIxZTE2YSIsICJsaW51eC11c2JAdmdlci5rZXJuZWwub3JnIiwgImJlOWU0YSJd Received: from smtp.codeaurora.org (ec2-35-166-182-171.us-west-2.compute.amazonaws.com [35.166.182.171]) by smtp-out-n15.prod.us-east-1.postgun.com with SMTP id 5eea5ab1356bcc26ab0a1472 (version=TLS1.2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256); Wed, 17 Jun 2020 18:02:25 GMT Received: by smtp.codeaurora.org (Postfix, from userid 1001) id 42C09C433B1; Wed, 17 Jun 2020 18:02:24 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-caf-mail-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=2.0 tests=ALL_TRUSTED,SPF_NONE, URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from wcheng-linux.qualcomm.com (i-global254.qualcomm.com [199.106.103.254]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: wcheng) by smtp.codeaurora.org (Postfix) with ESMTPSA id B62E2C433C8; Wed, 17 Jun 2020 18:02:22 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org B62E2C433C8 Authentication-Results: aws-us-west-2-caf-mail-1.web.codeaurora.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: aws-us-west-2-caf-mail-1.web.codeaurora.org; spf=none smtp.mailfrom=wcheng@codeaurora.org From: Wesley Cheng To: heikki.krogerus@linux.intel.com, mark.rutland@arm.com, broonie@kernel.org, bjorn.andersson@linaro.org, gregkh@linuxfoundation.org, lgirdwood@gmail.com, agross@kernel.org, robh+dt@kernel.org Cc: linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, jackp@codeaurora.org, rdunlap@infradead.org, bryan.odonoghue@linaro.org, lijun.kernel@gmail.com, Wesley Cheng Subject: [PATCH v3 5/6] dt-bindings: regulator: Add dt-binding for QCOM PMIC VBUS output regulator Date: Wed, 17 Jun 2020 11:02:08 -0700 Message-Id: <20200617180209.5636-6-wcheng@codeaurora.org> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200617180209.5636-1-wcheng@codeaurora.org> References: <20200617180209.5636-1-wcheng@codeaurora.org> MIME-Version: 1.0 Sender: linux-usb-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-usb@vger.kernel.org This describes how to enable the Qualcomm PMIC VBUS booster used for providing power to connected USB peripherals when the USB role is host mode. The driver itself will register the vbus_usb regulator, so that external drivers can utilize the enable/disable regulator APIs. Signed-off-by: Wesley Cheng --- .../regulator/qcom,usb-vbus-regulator.yaml | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 Documentation/devicetree/bindings/regulator/qcom,usb-vbus-regulator.yaml diff --git a/Documentation/devicetree/bindings/regulator/qcom,usb-vbus-regulator.yaml b/Documentation/devicetree/bindings/regulator/qcom,usb-vbus-regulator.yaml new file mode 100644 index 000000000000..2fa76111cfb9 --- /dev/null +++ b/Documentation/devicetree/bindings/regulator/qcom,usb-vbus-regulator.yaml @@ -0,0 +1,41 @@ +# SPDX-License-Identifier: GPL-2.0 +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/regulator/qcom,usb-vbus-regulator.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: The Qualcomm PMIC VBUS output regulator driver + +maintainers: + - Wesley Cheng + +description: | + This regulator driver controls the VBUS output by the Qualcomm PMIC. This + regulator will be enabled in situations where the device is required to + provide power to the connected peripheral. + +properties: + compatible: + enum: + - qcom,pm8150b-vbus-reg + + reg: + maxItems: 1 + description: VBUS output base address + +required: + - compatible + +additionalProperties: false + +examples: + - | + pm8150b { + #address-cells = <1>; + #size-cells = <0>; + qcom,dcdc@1100 { + compatible = "qcom,pm8150b-vbus-reg"; + reg = <0x1100>; + }; + }; +... From patchwork Wed Jun 17 18:02:09 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wesley Cheng X-Patchwork-Id: 11610365 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 7F9C6138C for ; Wed, 17 Jun 2020 18:03:02 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 66E71217D9 for ; Wed, 17 Jun 2020 18:03:02 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=mg.codeaurora.org header.i=@mg.codeaurora.org header.b="nS6/KwpO" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727123AbgFQSDB (ORCPT ); Wed, 17 Jun 2020 14:03:01 -0400 Received: from m43-7.mailgun.net ([69.72.43.7]:29046 "EHLO m43-7.mailgun.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726946AbgFQSC7 (ORCPT ); Wed, 17 Jun 2020 14:02:59 -0400 DKIM-Signature: a=rsa-sha256; v=1; c=relaxed/relaxed; d=mg.codeaurora.org; q=dns/txt; s=smtp; t=1592416978; h=Content-Transfer-Encoding: MIME-Version: References: In-Reply-To: Message-Id: Date: Subject: Cc: To: From: Sender; bh=iLIxDGwebkVuYKlvhaUeM7RFkIBoT6e0vq1/1dn/deY=; b=nS6/KwpO/Uy0qmmEH8JA0T6JXxFL7bxuIj8blaFBxmYj2SJggoJU+sqNV814qeBH6QDsvD60 YbqsE2UKnyrJu0whH7XtMwfUfTvhW9PjcSS5n7MIJKKsbpGyeWIWGC+0P9Ys7U4jDAyivJRP 51xWDA9SBUnov56LzWXI1WszCEg= X-Mailgun-Sending-Ip: 69.72.43.7 X-Mailgun-Sid: WyIxZTE2YSIsICJsaW51eC11c2JAdmdlci5rZXJuZWwub3JnIiwgImJlOWU0YSJd Received: from smtp.codeaurora.org (ec2-35-166-182-171.us-west-2.compute.amazonaws.com [35.166.182.171]) by smtp-out-n14.prod.us-east-1.postgun.com with SMTP id 5eea5ab186de6ccd44fd2754 (version=TLS1.2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256); Wed, 17 Jun 2020 18:02:25 GMT Received: by smtp.codeaurora.org (Postfix, from userid 1001) id 10239C433B7; Wed, 17 Jun 2020 18:02:24 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-caf-mail-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=2.0 tests=ALL_TRUSTED,SPF_NONE, URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from wcheng-linux.qualcomm.com (i-global254.qualcomm.com [199.106.103.254]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: wcheng) by smtp.codeaurora.org (Postfix) with ESMTPSA id B1C5BC433CB; Wed, 17 Jun 2020 18:02:23 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org B1C5BC433CB Authentication-Results: aws-us-west-2-caf-mail-1.web.codeaurora.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: aws-us-west-2-caf-mail-1.web.codeaurora.org; spf=none smtp.mailfrom=wcheng@codeaurora.org From: Wesley Cheng To: heikki.krogerus@linux.intel.com, mark.rutland@arm.com, broonie@kernel.org, bjorn.andersson@linaro.org, gregkh@linuxfoundation.org, lgirdwood@gmail.com, agross@kernel.org, robh+dt@kernel.org Cc: linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, jackp@codeaurora.org, rdunlap@infradead.org, bryan.odonoghue@linaro.org, lijun.kernel@gmail.com, Wesley Cheng Subject: [PATCH v3 6/6] arm64: boot: dts: qcom: pm8150b: Add DTS node for PMIC VBUS booster Date: Wed, 17 Jun 2020 11:02:09 -0700 Message-Id: <20200617180209.5636-7-wcheng@codeaurora.org> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200617180209.5636-1-wcheng@codeaurora.org> References: <20200617180209.5636-1-wcheng@codeaurora.org> MIME-Version: 1.0 Sender: linux-usb-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-usb@vger.kernel.org Add the required DTS node for the USB VBUS output regulator, which is available on PM8150B. This will provide the VBUS source to connected peripherals. Signed-off-by: Wesley Cheng --- arch/arm64/boot/dts/qcom/pm8150b.dtsi | 6 ++++++ arch/arm64/boot/dts/qcom/sm8150-mtp.dts | 7 +++++++ 2 files changed, 13 insertions(+) diff --git a/arch/arm64/boot/dts/qcom/pm8150b.dtsi b/arch/arm64/boot/dts/qcom/pm8150b.dtsi index ec44a8bc2f84..b7274d9d7341 100644 --- a/arch/arm64/boot/dts/qcom/pm8150b.dtsi +++ b/arch/arm64/boot/dts/qcom/pm8150b.dtsi @@ -22,6 +22,12 @@ power-on@800 { status = "disabled"; }; + qcom,dcdc@1100 { + compatible = "qcom,pm8150b-vbus-reg"; + status = "disabled"; + reg = <0x1100>; + }; + qcom,typec@1500 { compatible = "qcom,pm8150b-usb-typec"; status = "disabled"; diff --git a/arch/arm64/boot/dts/qcom/sm8150-mtp.dts b/arch/arm64/boot/dts/qcom/sm8150-mtp.dts index 6c6325c3af59..3845d19893eb 100644 --- a/arch/arm64/boot/dts/qcom/sm8150-mtp.dts +++ b/arch/arm64/boot/dts/qcom/sm8150-mtp.dts @@ -426,6 +426,13 @@ &usb_1 { status = "okay"; }; +&spmi_bus { + pmic@2 { + qcom,dcdc@1100 { + status = "okay"; + }; +}; + &usb_1_dwc3 { dr_mode = "peripheral"; };