From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-dy1-f175.google.com (mail-dy1-f175.google.com [74.125.82.175]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9EFE13DE44F for ; Tue, 30 Jun 2026 19:51:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.175 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782849108; cv=none; b=uNL1rIUEVIFKhbi/ZENcgrLXpsmO1ANrim/f++v8UwbaarO49rpeEbaZvoRLoC4SG3X8L0qEBL1Py65ZvGHBfYkSktjPoteA5VSMSAaBX9tQ66LSI/xcUaKn6g0zpff4cP6CTACeAU5sjjlCzLgm2OYO6Lx+y00WttOsRKlh9JU= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782849108; c=relaxed/simple; bh=IHED1bhwhaIFXZzAtTG598QDZu83K0PbPJZHuBhlpRg=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=SDyrSSE/g43BGKuUnFslxgN86PjZVUCsbm/O0CjrXVK6iwoNx/zer6aNO9J+hMA9s6lxGk7VJ34cUPr5zYEYTE+NokkeyU+1kmykfnHusgPtjKj0atKZ30fiUIDpbd1HOYVCAZiPpyd/sXcIkXWEziZpj96BFUTx1ERV4R1b2Fs= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=ryEmU+Ja; arc=none smtp.client-ip=74.125.82.175 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ryEmU+Ja" Received: by mail-dy1-f175.google.com with SMTP id 5a478bee46e88-30bf8b2bd20so9552527eec.0 for ; Tue, 30 Jun 2026 12:51:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1782849107; x=1783453907; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=Xm0OFa+tCcoIZaTYvevqY142K/nJxOVjlT4BYE1lqx0=; b=ryEmU+JajQhVp2XZlUlQCsGXwydj1otyU63z3IczPsvI60l8aqXPt1Wi0Hg+WbcVGC 2yw3yhPdJymW85+FElhwe0JZxJMcG5h6c2pjoP6XyO9wlJWPU1mIcJIedNrQuK3yO2AL fn3olVCitoBgLM82GIQ7SjeBzxamYz/tVooRvqa9Jy4z/PvxmwSvA694VyK3o2ILN2cb PzFOWLREoegzO0jof3lss02Vut5/Cd1J1gHLxAzpYLNygaL58rjizy/h3WeKhaif8o4c w2C3YpRpch+7GZYHrgrGb33zoUuxAhcojZK4Ip4TlR1LYTRtthKZQn2c+EoFfm/LF7+n lNQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782849107; x=1783453907; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=Xm0OFa+tCcoIZaTYvevqY142K/nJxOVjlT4BYE1lqx0=; b=miJe8mgEeUIHFO9h2TV/TBuJquOhTIGqG80Sr6xP/hdmhCY3zn05E4nIPFLxFNd7NY QdO7ZnhFc5g6PIpCI+kZAYbWFSxQ7fXPVtCZdxXJGmL799QlZ/fogsxlWNQOo59lXU+H h/F3sL+Hc6j3iFDXr2of/JnfBFPMrE6gpFhm1FF4josbcLqEqwhWHkm/DLrPdpyDbdn7 sSBWD3Y9t6QkNFNqPDG9TAXmjg6e9WYNExt1ntkx4kHMitMRvp9ZcGchySy6lBerF1Wc lG5CQE/Yx/3EegerOm4X4N0N54XJpEQeePliELUA3nwQ+i5OaQZABtiT4ATwkFh+5TCl 7JuQ== X-Forwarded-Encrypted: i=1; AHgh+RqVXRFTQ/NaA9ADqajW/LvycDBJAmRqsccAdwAhBadiPkvTeHYXp7V+hX8f85dM/b8ZZb+cMUQ76DW8Iyc=@vger.kernel.org X-Gm-Message-State: AOJu0Yz1lPj68ztum7qDHEHnZN9vplzd+ImVpJcw4DtBVyTO3V02BnAE pwbX6h26AMQtRsawo8JwsiCMGqsayGSWKSuDNggQHWzAHjZ3TITkqMlzSxRmpUey X-Gm-Gg: AfdE7cmVJ4BDz0dDaYIggf0boDs+S+/TmB1mSf1U9z29pOkbxWD/yNf3plblEE++wVZ z627mathmt2m0Ow5FOoAsW89edU1s2B5zhawNervAinl4BTZT93b0hDzDRrhQDACKfPokqKZMaO O08bIpA+sHamlWt5lucOXRvgnIcvL9Lpbyok/DlzORik+GPCTPLGKuoR7VbxxFXiA/dX7WMo2bY qxHw0aKyE6+m+u+8mpeZQUCHlrSvHF4ih+I6MBPp0UFzGejPx4wY90J7gPymenAGyaSiC7kQNof IPlstx3pkOL7OppQO61ZFBqXKptqLWNkpUYy42NQXEPsjCHLF5+JU+CWhNyRcc/31ry8AOSOttx 9XkMjqIl6Hm5P8FDHP3t6X/Tjp/FmJMM2i/Muuz9f1h1neGXqEiMyvOLKWsXNIdvk1XgPHh+wiz jfihE+qJ9UF5ZGrvSjR19qk+Im2pwKCidzSbAHntf5zUMqYEcLHW4l83pByOgg7GPfmsNy/YWst qV7OXBdPQ== X-Received: by 2002:a05:7300:5783:b0:30c:ab97:d7ae with SMTP id 5a478bee46e88-30ee13fd797mr4091475eec.40.1782849106578; Tue, 30 Jun 2026 12:51:46 -0700 (PDT) Received: from ryzen.lan ([2601:644:8000:7a86::e34]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-30ee32519aesm10569467eec.27.2026.06.30.12.51.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 Jun 2026 12:51:45 -0700 (PDT) From: Rosen Penev To: linux-usb@vger.kernel.org Cc: Greg Kroah-Hartman , linux-kernel@vger.kernel.org (open list) Subject: [PATCH] usb: fsl-mph-dr-of: add regulator support Date: Tue, 30 Jun 2026 12:51:44 -0700 Message-ID: <20260630195144.88122-1-rosenp@gmail.com> X-Mailer: git-send-email 2.55.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Some devices have a GPIO that controls power to the USB bus. Add support for a vbus regulator to have the kernel control it automatically instead of having to rely on userspace. Acquire the regulator in the common probe path so that it works for all fsl-usb2-dr compatible controllers, not just MPC5121. Tested on a TP-LINK WDR4900v1 by adding roughly the following reg_power_usb: regulator { compatible = "regulator-fixed"; regulator-name = "power_usb"; regulator-min-microvolt = <5000000>; regulator-max-microvolt = <5000000>; gpios = <&gpio0 10 GPIO_ACTIVE_HIGH>; enable-active-high; regulator-boot-on; }; uhubctl and rmmod both turn USB power off. Assisted-by: opencode:big-pickle Signed-off-by: Rosen Penev --- drivers/usb/host/fsl-mph-dr-of.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/usb/host/fsl-mph-dr-of.c b/drivers/usb/host/fsl-mph-dr-of.c index 852649156b16..85b08f2f162d 100644 --- a/drivers/usb/host/fsl-mph-dr-of.c +++ b/drivers/usb/host/fsl-mph-dr-of.c @@ -14,6 +14,7 @@ #include #include #include +#include struct fsl_usb2_dev_data { char *dr_mode; /* controller mode */ @@ -182,7 +183,7 @@ static int fsl_usb2_mph_dr_of_probe(struct platform_device *ofdev) const struct fsl_usb2_platform_data *match_data; const unsigned char *prop; static unsigned int idx; - int i; + int i, err; if (!of_device_is_available(np)) return -ENODEV; @@ -242,6 +243,10 @@ static int fsl_usb2_mph_dr_of_probe(struct platform_device *ofdev) } } + err = devm_regulator_get_enable_optional(&ofdev->dev, "vbus"); + if (err) + return dev_err_probe(&ofdev->dev, err, "failed to get vbus regulator\n"); + for (i = 0; i < ARRAY_SIZE(dev_data->drivers); i++) { if (!dev_data->drivers[i]) continue; -- 2.55.0