From nobody Tue Jun 23 17:22:06 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 A72C5C4167B for ; Tue, 1 Mar 2022 11:18:48 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234519AbiCALT1 (ORCPT ); Tue, 1 Mar 2022 06:19:27 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37022 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233157AbiCALTX (ORCPT ); Tue, 1 Mar 2022 06:19:23 -0500 Received: from smtp2.axis.com (smtp2.axis.com [195.60.68.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 35EE71DA4B; Tue, 1 Mar 2022 03:18:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=axis.com; q=dns/txt; s=axis-central1; t=1646133520; x=1677669520; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=YuiHKE9UCdLhzE7N5PaLG8kJoP7omJAX1x5EYzqzoa8=; b=ZHJhjevUuxgRh+ahaoZGo2VphGg2kxo3wsJ0+xmK3mdymomJj+qNgHxa 7/rVpXKQrFEZjzqzA8kmeWnmeB9DwMjKYJiHjU+m6mmGm6/I+kEs3wYRr ElTRbXiqKRGdOxFEya9d08CBJESF7Hffo/PpTcdumDcVe9GUWu4n7TdBZ u7Euo1beZCzwgWgXFxbV55fdjO6Wi8mLCarAR/RmzUmxaeXHhTrdW150x 4cYcD5g5IpYYuNqikMpHWNpQMWTDLz2tkVP5PAdoJ+8t5IVrNNXVvyi7O f9k++FOoSFCKmsbtJ29lNt27Uve0TKFbCIqL7h8qGUihed/xL/zgNU4N7 w==; From: Vincent Whitchurch To: , CC: , , , Vincent Whitchurch Subject: [PATCH v2 1/3] regulator: virtual: use dev_err_probe() Date: Tue, 1 Mar 2022 12:18:29 +0100 Message-ID: <20220301111831.3742383-2-vincent.whitchurch@axis.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220301111831.3742383-1-vincent.whitchurch@axis.com> References: <20220301111831.3742383-1-vincent.whitchurch@axis.com> 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" Use dev_err_probe() to avoid printing spurious warnings on probe deferral. Signed-off-by: Vincent Whitchurch --- drivers/regulator/virtual.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/drivers/regulator/virtual.c b/drivers/regulator/virtual.c index 52c5a0e0acd8..50d2e9caaa71 100644 --- a/drivers/regulator/virtual.c +++ b/drivers/regulator/virtual.c @@ -295,12 +295,10 @@ static int regulator_virtual_probe(struct platform_de= vice *pdev) mutex_init(&drvdata->lock); =20 drvdata->regulator =3D devm_regulator_get(&pdev->dev, reg_id); - if (IS_ERR(drvdata->regulator)) { - ret =3D PTR_ERR(drvdata->regulator); - dev_err(&pdev->dev, "Failed to obtain supply '%s': %d\n", - reg_id, ret); - return ret; - } + if (IS_ERR(drvdata->regulator)) + return dev_err_probe(&pdev->dev, PTR_ERR(drvdata->regulator), + "Failed to obtain supply '%s'\n", + reg_id); =20 ret =3D sysfs_create_group(&pdev->dev.kobj, ®ulator_virtual_attr_group); --=20 2.34.1 From nobody Tue Jun 23 17:22:06 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 ABC9AC433FE for ; Tue, 1 Mar 2022 11:18:51 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234523AbiCALTa (ORCPT ); Tue, 1 Mar 2022 06:19:30 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37202 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233707AbiCALTZ (ORCPT ); Tue, 1 Mar 2022 06:19:25 -0500 Received: from smtp1.axis.com (smtp1.axis.com [195.60.68.17]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 38A152182A; Tue, 1 Mar 2022 03:18:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=axis.com; q=dns/txt; s=axis-central1; t=1646133524; x=1677669524; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=s61KVeR7IDgK90cr+Lg4UokrX121rEYlyy0u8g7wFe0=; b=IqB95zmekdpeN63GhfjXFphBgcG4g4wbLrBBAHdCCVha5TT3hyoygHtB 4GeMlvipv/T/IsXUqiH1W3kmJbca1pMkL9Qr6r5wwgvjYuaQgr00evH9j J1RG8QWtqiiqYNHTGrz9L53utlofPQ72tG4f/p56sV/ZahUUz9sn+FU2a ggqASZCmJ91GXTkbgPNeoDiVQ8h5zE3PYmnE06nJBCxCYwlGhXnmcB9Oa 1ILwKMxUrw6uPZxCnfTxOmpH1UjQfu54MO3PfSNOnkwh9lD9Fl+Wk35Cc KABmjZC6GlVxm7XVYi0ATCzVjQeHxnKdjyuKdMp+vaSe84XxEiGvYnhTU g==; From: Vincent Whitchurch To: , CC: , , , Vincent Whitchurch Subject: [PATCH v2 2/3] regulator: virtual: warn against production use Date: Tue, 1 Mar 2022 12:18:30 +0100 Message-ID: <20220301111831.3742383-3-vincent.whitchurch@axis.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220301111831.3742383-1-vincent.whitchurch@axis.com> References: <20220301111831.3742383-1-vincent.whitchurch@axis.com> 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" This driver is only meant for debugging and testing. Currently, it's not possible to use it without patching the kernel since it requires platform data, but we'll be adding devicetree support, so add a loud warning to make it clear that it's still only meant for debugging and testing. Signed-off-by: Vincent Whitchurch --- drivers/regulator/virtual.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/drivers/regulator/virtual.c b/drivers/regulator/virtual.c index 50d2e9caaa71..9e0abbee1df5 100644 --- a/drivers/regulator/virtual.c +++ b/drivers/regulator/virtual.c @@ -285,8 +285,21 @@ static int regulator_virtual_probe(struct platform_dev= ice *pdev) { char *reg_id =3D dev_get_platdata(&pdev->dev); struct virtual_consumer_data *drvdata; + static bool warned; int ret; =20 + if (!warned) { + warned =3D true; + pr_warn("**********************************************************\n"); + pr_warn("** NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE **\n"); + pr_warn("** **\n"); + pr_warn("** regulator-virtual-consumer is only for testing and **\n"); + pr_warn("** debugging. Do not use it in a production kernel. **\n"); + pr_warn("** **\n"); + pr_warn("** NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE **\n"); + pr_warn("**********************************************************\n"); + } + drvdata =3D devm_kzalloc(&pdev->dev, sizeof(struct virtual_consumer_data), GFP_KERNEL); if (drvdata =3D=3D NULL) --=20 2.34.1 From nobody Tue Jun 23 17:22:06 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 56804C433F5 for ; Tue, 1 Mar 2022 11:19:02 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234540AbiCALTk (ORCPT ); Tue, 1 Mar 2022 06:19:40 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37296 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234484AbiCALT0 (ORCPT ); Tue, 1 Mar 2022 06:19:26 -0500 Received: from smtp1.axis.com (smtp1.axis.com [195.60.68.17]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7A5A92253C; Tue, 1 Mar 2022 03:18:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=axis.com; q=dns/txt; s=axis-central1; t=1646133526; x=1677669526; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=KAoobEf0FgmH/phyTwuBEP9MQR4VO/sSwTaKsDfFC5Q=; b=SUAAsqaSBWYEmuv7bWXIZEcC0p8L1gZvwMLwCgOoQCyJsZ4Bi6IeRlU5 y9vPHAn7ge5t9eQh5lN1x3qQOH+mv5yYAV+gIjGDvO7WnQlbdRhEOyDhO V3VkBVD9YbgWDfpwuCns9Q+wBTjR5pAiZei7lNhD1h1l0DK/coJCRM8eh nHPeOQ/iv9YP40QnMwZBE6h1pWw57VaXefar7E1XyPQDaIN4lwjBYFgdx 3CTR+ggUKtbkpf8UaIFTLLtlVVp3+e2S4NXEBZeXvriqURwP33Gsasclh Gx3fRE7gqP4b8GvdlvBH0fgJQqZ9qPtyH4zeV0SamZFFT+Hi65svHrZdj A==; From: Vincent Whitchurch To: , CC: , , , Vincent Whitchurch Subject: [PATCH v2 3/3] regulator: virtual: add devicetree support Date: Tue, 1 Mar 2022 12:18:31 +0100 Message-ID: <20220301111831.3742383-4-vincent.whitchurch@axis.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220301111831.3742383-1-vincent.whitchurch@axis.com> References: <20220301111831.3742383-1-vincent.whitchurch@axis.com> 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 reg-virt-consumer is very useful for development and testing of regulator drivers since it allows voltages and modes to be set from userspace. However, it currently requires platform data so it cannot be used without patching the kernel. Add support for probing it from the devicetree to remedy this. Since this driver is only meant for testing and is a purely software construct, no binding documentation is added. Signed-off-by: Vincent Whitchurch --- Notes: v2: - Only use the "default" supply name if dt - Add a comment explaining the "default" supply name drivers/regulator/virtual.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/drivers/regulator/virtual.c b/drivers/regulator/virtual.c index 9e0abbee1df5..5d32628a5011 100644 --- a/drivers/regulator/virtual.c +++ b/drivers/regulator/virtual.c @@ -13,6 +13,7 @@ #include #include #include +#include =20 struct virtual_consumer_data { struct mutex lock; @@ -281,6 +282,14 @@ static const struct attribute_group regulator_virtual_= attr_group =3D { .attrs =3D regulator_virtual_attributes, }; =20 +#ifdef CONFIG_OF +static const struct of_device_id regulator_virtual_consumer_of_match[] =3D= { + { .compatible =3D "regulator-virtual-consumer" }, + {}, +}; +MODULE_DEVICE_TABLE(of, regulator_virtual_consumer_of_match); +#endif + static int regulator_virtual_probe(struct platform_device *pdev) { char *reg_id =3D dev_get_platdata(&pdev->dev); @@ -305,6 +314,14 @@ static int regulator_virtual_probe(struct platform_dev= ice *pdev) if (drvdata =3D=3D NULL) return -ENOMEM; =20 + /* + * This virtual consumer does not have any hardware-defined supply + * name, so just allow the regulator to be specified in a property + * named "default-supply" when we're being probed from devicetree. + */ + if (!reg_id && pdev->dev.of_node) + reg_id =3D "default"; + mutex_init(&drvdata->lock); =20 drvdata->regulator =3D devm_regulator_get(&pdev->dev, reg_id); @@ -345,6 +362,7 @@ static struct platform_driver regulator_virtual_consume= r_driver =3D { .remove =3D regulator_virtual_remove, .driver =3D { .name =3D "reg-virt-consumer", + .of_match_table =3D of_match_ptr(regulator_virtual_consumer_of_match), }, }; =20 --=20 2.34.1