From patchwork Tue Jun 11 10:59:11 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Biju Das X-Patchwork-Id: 13693435 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 4F331C25B76 for ; Tue, 11 Jun 2024 10:59:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:Cc :To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=AboG6VNvqXOoseBHTo/RVhGvNmdvDCN8EUF45fdunmA=; b=jRB/R15mgRyH98 GQIP/1q6iBdU6LX9/ggAq+IROAIALnQv10fwuvoojtcayAZdpvc/HkKYQTfzWjAtAR5j3RloLCBSD VA0s+Z2Ee5kMqqUWVsh15tRh6oCCw32yZ5Tbe9s2bSCkEtdHgeBMZZY18NhLemk3ewyX0Ddf7ct28 n3HKsi9PUzjPeSskqck5b2pUXisVrz2FJMVhH+YR9FfwfTeG4++KlGOqcRnnSHm+a+CvYh+TMPf0O f2gQbF6BSx5ibEPtIlhtdntGNqdJkBnzZ12DdaefdQYuPKJ/7tlgQf86qXa5umPivJAHWU7lBNunS 3w36/AYbBU/GnTQU5MdA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1sGzDz-00000008YE7-064M; Tue, 11 Jun 2024 10:59:35 +0000 Received: from relmlor2.renesas.com ([210.160.252.172] helo=relmlie6.idc.renesas.com) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1sGzDv-00000008YD6-2lKy for linux-phy@lists.infradead.org; Tue, 11 Jun 2024 10:59:33 +0000 X-IronPort-AV: E=Sophos;i="6.08,229,1712588400"; d="scan'208";a="211445797" Received: from unknown (HELO relmlir5.idc.renesas.com) ([10.200.68.151]) by relmlie6.idc.renesas.com with ESMTP; 11 Jun 2024 19:59:25 +0900 Received: from localhost.localdomain (unknown [10.226.93.49]) by relmlir5.idc.renesas.com (Postfix) with ESMTP id 93E0240078D0; Tue, 11 Jun 2024 19:59:20 +0900 (JST) From: Biju Das To: Philipp Zabel , Liam Girdwood , Mark Brown , Vinod Koul , Kishon Vijay Abraham I , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Geert Uytterhoeven Cc: Biju Das , Prabhakar Mahadev Lad , Biju Das , devicetree@vger.kernel.org, linux-phy@lists.infradead.org, linux-renesas-soc@vger.kernel.org Subject: [PATCH v3 0/6] Add support for USB VBUS control for RZ/G2L SoCs Date: Tue, 11 Jun 2024 11:59:11 +0100 Message-Id: <20240611105917.57872-1-biju.das.jz@bp.renesas.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240611_035931_887736_9DEC7D72 X-CRM114-Status: GOOD ( 11.70 ) X-BeenThere: linux-phy@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux Phy Mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-phy" Errors-To: linux-phy-bounces+linux-phy=archiver.kernel.org@lists.infradead.org As per RZ/G2L HW manual, VBUS enable can be controlled by the VBOUT bit of the VBUS Control Register(VBENCTL) register in the USBPHY Control. But this IP is in the Reset block. Reset driver exposes this register as regmap and instantiate the USB VBUS regulator device. Consumers(phy device) can use regulator driver's regmap to control VBUS as controlling is done in the atomic context. We need to have merge strategy which subsytem will apply this patches as it involves multiple subsystems Reset, Regulator, PHY, DT and Renesas SoC?? v2->v3: * Documented regulator-vbus in the binding file. * Updated commit description and header for patch#2 * Moved regulator device creation and instantiation at the end of probe(). * Introduced new API regulator_set_hardware_enable_register() to enable/disable regulator in atomic context. * Dropped vbus_voltages table from patch#4 * Added support for enabling/disabling regulator through regmap API's * Updated rzg2l_usb_vbus_rdesc with enable_{reg,mask}, fixed_uV and n_voltages * Updated of_node with child node of the parent device. * Replaced regulator's regmap API with newly introduced regulator_set_hardware_enable_register to enable/disable regulator in interrupt context in patch#5 * Dropped using "usb_vbus-supply" in patch#5. * Upated vbus regulator label name in dts file. * Updated node and regulator name that matches with the binding documentation. v1->v2: * Introduced a regulator driver to control VBUS Biju Das (6): dt-bindings: reset: renesas,rzg2l-usbphy-ctrl: Document USB VBUS regulator reset: renesas: Add USB VBUS regulator device as child regulator: core: Add helper for allow access to enable register regulator: Add Renesas RZ/G2L USB VBUS regulator driver phy: renesas: phy-rcar-gen3-usb2: Control VBUS for RZ/G2L SoCs arm64: dts: renesas: rz-smarc: Replace fixed regulator for USB VBUS .../reset/renesas,rzg2l-usbphy-ctrl.yaml | 12 ++++ Documentation/power/regulator/consumer.rst | 5 ++ .../boot/dts/renesas/rz-smarc-common.dtsi | 13 ++-- drivers/phy/renesas/phy-rcar-gen3-usb2.c | 3 + drivers/regulator/Kconfig | 9 +++ drivers/regulator/Makefile | 1 + drivers/regulator/core.c | 32 +++++++++ .../regulator/renesas-usb-vbus-regulator.c | 67 +++++++++++++++++++ drivers/reset/reset-rzg2l-usbphy-ctrl.c | 37 ++++++++++ include/linux/regulator/consumer.h | 8 +++ 10 files changed, 179 insertions(+), 8 deletions(-) create mode 100644 drivers/regulator/renesas-usb-vbus-regulator.c