linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/3] Allow use of DVS GPIOs on the RK808 PMIC variant only
@ 2024-10-14 10:43 Dragan Simic
  2024-10-14 10:43 ` [PATCH 1/3] regulator: rk808: Perform trivial code cleanups Dragan Simic
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Dragan Simic @ 2024-10-14 10:43 UTC (permalink / raw)
  To: lgirdwood, broonie; +Cc: linux-rockchip, linux-arm-kernel, linux-kernel

This is a small series that primarily makes the rk808-regulator driver
more compliant to the DT bindings, by allowing use of DVS GPIOs on the
RK808 variant only.  There's no point in allowing that on the other PMIC
variants, because they don't support the DVS GPIOs, and it goes against
the DT bindings to allow a possibly misplaced "dvs-gpios" property to
actually be handled in the rk808-regulator driver.

This series also cleans up the code a bit, improves some comments, and
replaces dev_err() with dev_err_probe(), where appropriate.

Dragan Simic (3):
  regulator: rk808: Perform trivial code cleanups
  regulator: rk808: Use dev_err_probe() in the probe path
  regulator: rk808: Restrict DVS GPIOs to the RK808 variant only

 drivers/regulator/rk808-regulator.c | 41 +++++++++++++----------------
 1 file changed, 19 insertions(+), 22 deletions(-)



^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 1/3] regulator: rk808: Perform trivial code cleanups
  2024-10-14 10:43 [PATCH 0/3] Allow use of DVS GPIOs on the RK808 PMIC variant only Dragan Simic
@ 2024-10-14 10:43 ` Dragan Simic
  2024-10-14 10:43 ` [PATCH 2/3] regulator: rk808: Use dev_err_probe() in the probe path Dragan Simic
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Dragan Simic @ 2024-10-14 10:43 UTC (permalink / raw)
  To: lgirdwood, broonie; +Cc: linux-rockchip, linux-arm-kernel, linux-kernel

Perform a few trivial code cleanups, to improve the accuracy and wording of
a couple of comments and the module description, and to avoid line wrapping
in a few places by using the 100-column width a bit better.

No intended functional changes are introduced by these code cleanups.

Signed-off-by: Dragan Simic <dsimic@manjaro.org>
---
 drivers/regulator/rk808-regulator.c | 17 +++++++----------
 1 file changed, 7 insertions(+), 10 deletions(-)

diff --git a/drivers/regulator/rk808-regulator.c b/drivers/regulator/rk808-regulator.c
index 14b60abd6afc..e81dbb14a29e 100644
--- a/drivers/regulator/rk808-regulator.c
+++ b/drivers/regulator/rk808-regulator.c
@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0-only
 /*
- * Regulator driver for Rockchip RK805/RK808/RK818
+ * Regulator driver for Rockchip RK80x and RK81x PMIC series
  *
  * Copyright (c) 2014, Fuzhou Rockchip Electronics Co., Ltd
  * Copyright (c) 2021 Rockchip Electronics Co., Ltd.
@@ -23,7 +23,7 @@
 #include <linux/regulator/of_regulator.h>
 #include <linux/gpio/consumer.h>
 
-/* Field Definitions */
+/* Field definitions */
 #define RK808_BUCK_VSEL_MASK	0x3f
 #define RK808_BUCK4_VSEL_MASK	0xf
 #define RK808_LDO_VSEL_MASK	0x1f
@@ -1829,36 +1829,33 @@ static const struct regulator_desc rk818_reg[] = {
 		RK818_DCDC_EN_REG, BIT(7)),
 };
 
-static int rk808_regulator_dt_parse_pdata(struct device *dev,
-				   struct regmap *map,
-				   struct rk808_regulator_data *pdata)
+static int rk808_regulator_dt_parse_pdata(struct device *dev, struct regmap *map,
+					  struct rk808_regulator_data *pdata)
 {
 	struct device_node *np;
 	int tmp, ret = 0, i;
 
 	np = of_get_child_by_name(dev->of_node, "regulators");
 	if (!np)
 		return -ENXIO;
 
 	for (i = 0; i < ARRAY_SIZE(pdata->dvs_gpio); i++) {
 		pdata->dvs_gpio[i] =
-			devm_gpiod_get_index_optional(dev, "dvs", i,
-						      GPIOD_OUT_LOW);
+			devm_gpiod_get_index_optional(dev, "dvs", i, GPIOD_OUT_LOW);
 		if (IS_ERR(pdata->dvs_gpio[i])) {
 			ret = PTR_ERR(pdata->dvs_gpio[i]);
 			dev_err(dev, "failed to get dvs%d gpio (%d)\n", i, ret);
 			goto dt_parse_end;
 		}
 
 		if (!pdata->dvs_gpio[i]) {
 			dev_info(dev, "there is no dvs%d gpio\n", i);
 			continue;
 		}
 
 		tmp = i ? RK808_DVS2_POL : RK808_DVS1_POL;
 		ret = regmap_update_bits(map, RK808_IO_POL_REG, tmp,
-				gpiod_is_active_low(pdata->dvs_gpio[i]) ?
-				0 : tmp);
+					 gpiod_is_active_low(pdata->dvs_gpio[i]) ? 0 : tmp);
 	}
 
 dt_parse_end:
@@ -1954,7 +1951,7 @@ static struct platform_driver rk808_regulator_driver = {
 
 module_platform_driver(rk808_regulator_driver);
 
-MODULE_DESCRIPTION("regulator driver for the RK805/RK808/RK818 series PMICs");
+MODULE_DESCRIPTION("Rockchip RK80x/RK81x PMIC series regulator driver");
 MODULE_AUTHOR("Tony xie <tony.xie@rock-chips.com>");
 MODULE_AUTHOR("Chris Zhong <zyw@rock-chips.com>");
 MODULE_AUTHOR("Zhang Qing <zhangqing@rock-chips.com>");


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH 2/3] regulator: rk808: Use dev_err_probe() in the probe path
  2024-10-14 10:43 [PATCH 0/3] Allow use of DVS GPIOs on the RK808 PMIC variant only Dragan Simic
  2024-10-14 10:43 ` [PATCH 1/3] regulator: rk808: Perform trivial code cleanups Dragan Simic
@ 2024-10-14 10:43 ` Dragan Simic
  2024-10-14 10:43 ` [PATCH 3/3] regulator: rk808: Restrict DVS GPIOs to the RK808 variant only Dragan Simic
  2024-10-22 18:45 ` [PATCH 0/3] Allow use of DVS GPIOs on the RK808 PMIC " Mark Brown
  3 siblings, 0 replies; 5+ messages in thread
From: Dragan Simic @ 2024-10-14 10:43 UTC (permalink / raw)
  To: lgirdwood, broonie; +Cc: linux-rockchip, linux-arm-kernel, linux-kernel

Improve error handling in the probe path by using function dev_err_probe()
instead of function dev_err(), where appropriate.

Signed-off-by: Dragan Simic <dsimic@manjaro.org>
---
 drivers/regulator/rk808-regulator.c | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/drivers/regulator/rk808-regulator.c b/drivers/regulator/rk808-regulator.c
index e81dbb14a29e..f241bb538e27 100644
--- a/drivers/regulator/rk808-regulator.c
+++ b/drivers/regulator/rk808-regulator.c
@@ -1843,8 +1843,8 @@ static int rk808_regulator_dt_parse_pdata(struct device *dev, struct regmap *map
 		pdata->dvs_gpio[i] =
 			devm_gpiod_get_index_optional(dev, "dvs", i, GPIOD_OUT_LOW);
 		if (IS_ERR(pdata->dvs_gpio[i])) {
-			ret = PTR_ERR(pdata->dvs_gpio[i]);
-			dev_err(dev, "failed to get dvs%d gpio (%d)\n", i, ret);
+			ret = dev_err_probe(dev, PTR_ERR(pdata->dvs_gpio[i]),
+					    "failed to get dvs%d gpio\n", i);
 			goto dt_parse_end;
 		}
 
@@ -1920,9 +1920,8 @@ static int rk808_regulator_probe(struct platform_device *pdev)
 		nregulators = RK818_NUM_REGULATORS;
 		break;
 	default:
-		dev_err(&pdev->dev, "unsupported RK8XX ID %lu\n",
-			rk808->variant);
-		return -EINVAL;
+		return dev_err_probe(&pdev->dev, -EINVAL,
+				     "unsupported RK8xx ID %lu\n", rk808->variant);
 	}
 
 	config.dev = &pdev->dev;


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH 3/3] regulator: rk808: Restrict DVS GPIOs to the RK808 variant only
  2024-10-14 10:43 [PATCH 0/3] Allow use of DVS GPIOs on the RK808 PMIC variant only Dragan Simic
  2024-10-14 10:43 ` [PATCH 1/3] regulator: rk808: Perform trivial code cleanups Dragan Simic
  2024-10-14 10:43 ` [PATCH 2/3] regulator: rk808: Use dev_err_probe() in the probe path Dragan Simic
@ 2024-10-14 10:43 ` Dragan Simic
  2024-10-22 18:45 ` [PATCH 0/3] Allow use of DVS GPIOs on the RK808 PMIC " Mark Brown
  3 siblings, 0 replies; 5+ messages in thread
From: Dragan Simic @ 2024-10-14 10:43 UTC (permalink / raw)
  To: lgirdwood, broonie
  Cc: linux-rockchip, linux-arm-kernel, linux-kernel, Diederik de Haas

The rk808-regulator driver supports multiple PMIC variants from the Rockckip
RK80x and RK81x series, but the DVS GPIOs are supported on the RK808 variant
only, according to the DT bindings [1][2][3][4][5][6] and the datasheets for
the supported PMIC variants. [7][8][9][10][11][12]

Thus, change the probe path so the "dvs-gpios" property is checked for and
its value possibly used only when the handled PMIC variant is RK808.  There's
no point in doing that on the other PMIC variants, because they don't support
the DVS GPIOs, and it goes against the DT bindings to allow a possible out-
of-place "dvs-gpios" property to actually be handled in the driver.

This eliminates the following messages, emitted when the "dvs-gpios" property
isn't found in the DT, from the kernel log on boards that actually don't use
the RK808 variant, which may have provided a source of confusion:

  rk808-regulator rk808-regulator.2.auto: there is no dvs0 gpio
  rk808-regulator rk808-regulator.2.auto: there is no dvs1 gpio

Furthermore, demote these kernel messages to debug messages, because they are
useful during the board bringup phase only.  Emitting them afterwards, on the
boards that use the RK808 variant, but actually don't use the DVS0/1 GPIOs,
clutters the kernel log a bit, while they provide no value and may actually
cause false impression that some PMIC-related issues are present.

[1] Documentation/devicetree/bindings/mfd/rockchip,rk805.yaml
[2] Documentation/devicetree/bindings/mfd/rockchip,rk806.yaml
[3] Documentation/devicetree/bindings/mfd/rockchip,rk808.yaml
[4] Documentation/devicetree/bindings/mfd/rockchip,rk816.yaml
[5] Documentation/devicetree/bindings/mfd/rockchip,rk817.yaml
[6] Documentation/devicetree/bindings/mfd/rockchip,rk818.yaml
[7] https://rockchip.fr/RK805%20datasheet%20V1.2.pdf
[8] https://wmsc.lcsc.com/wmsc/upload/file/pdf/v2/lcsc/2401261533_Rockchip-RK806-1_C5156483.pdf
[9] https://rockchip.fr/RK808%20datasheet%20V1.4.pdf
[10] https://rockchip.fr/RK816%20datasheet%20V1.3.pdf
[11] https://rockchip.fr/RK817%20datasheet%20V1.01.pdf
[12] https://rockchip.fr/RK818%20datasheet%20V1.0.pdf

Fixes: 11375293530b ("regulator: rk808: Add regulator driver for RK818")
Reported-by: Diederik de Haas <didi.debian@cknow.org>
Signed-off-by: Dragan Simic <dsimic@manjaro.org>
---
 drivers/regulator/rk808-regulator.c | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/drivers/regulator/rk808-regulator.c b/drivers/regulator/rk808-regulator.c
index f241bb538e27..76f9a426450d 100644
--- a/drivers/regulator/rk808-regulator.c
+++ b/drivers/regulator/rk808-regulator.c
@@ -1849,7 +1849,7 @@ static int rk808_regulator_dt_parse_pdata(struct device *dev, struct regmap *map
 		}
 
 		if (!pdata->dvs_gpio[i]) {
-			dev_info(dev, "there is no dvs%d gpio\n", i);
+			dev_dbg(dev, "there is no dvs%d gpio\n", i);
 			continue;
 		}
 
@@ -1884,22 +1884,21 @@ static int rk808_regulator_probe(struct platform_device *pdev)
 	if (!pdata)
 		return -ENOMEM;
 
-	ret = rk808_regulator_dt_parse_pdata(&pdev->dev, regmap, pdata);
-	if (ret < 0)
-		return ret;
-
-	platform_set_drvdata(pdev, pdata);
-
 	switch (rk808->variant) {
 	case RK805_ID:
 		regulators = rk805_reg;
 		nregulators = RK805_NUM_REGULATORS;
 		break;
 	case RK806_ID:
 		regulators = rk806_reg;
 		nregulators = ARRAY_SIZE(rk806_reg);
 		break;
 	case RK808_ID:
+		/* DVS0/1 GPIOs are supported on the RK808 only */
+		ret = rk808_regulator_dt_parse_pdata(&pdev->dev, regmap, pdata);
+		if (ret < 0)
+			return ret;
+
 		regulators = rk808_reg;
 		nregulators = RK808_NUM_REGULATORS;
 		break;
@@ -1924,6 +1923,8 @@ static int rk808_regulator_probe(struct platform_device *pdev)
 				     "unsupported RK8xx ID %lu\n", rk808->variant);
 	}
 
+	platform_set_drvdata(pdev, pdata);
+
 	config.dev = &pdev->dev;
 	config.driver_data = pdata;
 	config.regmap = regmap;


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH 0/3] Allow use of DVS GPIOs on the RK808 PMIC variant only
  2024-10-14 10:43 [PATCH 0/3] Allow use of DVS GPIOs on the RK808 PMIC variant only Dragan Simic
                   ` (2 preceding siblings ...)
  2024-10-14 10:43 ` [PATCH 3/3] regulator: rk808: Restrict DVS GPIOs to the RK808 variant only Dragan Simic
@ 2024-10-22 18:45 ` Mark Brown
  3 siblings, 0 replies; 5+ messages in thread
From: Mark Brown @ 2024-10-22 18:45 UTC (permalink / raw)
  To: lgirdwood, Dragan Simic; +Cc: linux-rockchip, linux-arm-kernel, linux-kernel

On Mon, 14 Oct 2024 12:43:38 +0200, Dragan Simic wrote:
> This is a small series that primarily makes the rk808-regulator driver
> more compliant to the DT bindings, by allowing use of DVS GPIOs on the
> RK808 variant only.  There's no point in allowing that on the other PMIC
> variants, because they don't support the DVS GPIOs, and it goes against
> the DT bindings to allow a possibly misplaced "dvs-gpios" property to
> actually be handled in the rk808-regulator driver.
> 
> [...]

Applied to

   https://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator.git for-next

Thanks!

[1/3] regulator: rk808: Perform trivial code cleanups
      commit: 1bc3f0e9868929211c6abeb7e79b566c27fe9bb4
[2/3] regulator: rk808: Use dev_err_probe() in the probe path
      commit: fde993ae0b6e5edab0563897e232b94d1d2165a4
[3/3] regulator: rk808: Restrict DVS GPIOs to the RK808 variant only
      commit: 33a846e88481cc4659c6d670759b6295903e43b9

All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.

You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.

If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.

Please add any relevant lists and maintainers to the CCs when replying
to this mail.

Thanks,
Mark



^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2024-10-22 18:47 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-14 10:43 [PATCH 0/3] Allow use of DVS GPIOs on the RK808 PMIC variant only Dragan Simic
2024-10-14 10:43 ` [PATCH 1/3] regulator: rk808: Perform trivial code cleanups Dragan Simic
2024-10-14 10:43 ` [PATCH 2/3] regulator: rk808: Use dev_err_probe() in the probe path Dragan Simic
2024-10-14 10:43 ` [PATCH 3/3] regulator: rk808: Restrict DVS GPIOs to the RK808 variant only Dragan Simic
2024-10-22 18:45 ` [PATCH 0/3] Allow use of DVS GPIOs on the RK808 PMIC " Mark Brown

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).