linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH RFT 1/2] regulator: rtmv20: Fix .set_current_limit/.get_current_limit callbacks
@ 2021-05-30 12:41 Axel Lin
  2021-05-30 12:41 ` [PATCH 2/2] regulator: rtmv20: Add Richtek to Kconfig text Axel Lin
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Axel Lin @ 2021-05-30 12:41 UTC (permalink / raw)
  To: Mark Brown; +Cc: ChiYuan Huang, Liam Girdwood, linux-kernel, Axel Lin

Current code does not set .curr_table and .n_linear_ranges settings,
so it cannot use the regulator_get/set_current_limit_regmap helpers.
If we setup the curr_table, it will has 200 entries.
Implement customized .set_current_limit/.get_current_limit callbacks
instead.

Fixes: b8c054a5eaf0 ("regulator: rtmv20: Adds support for Richtek RTMV20 load switch regulator")
Signed-off-by: Axel Lin <axel.lin@ingics.com>
---
Hi ChiYuan,
I don't have this h/w to test.
Please help to review and test this patch.

Thanks,
Axel

 drivers/regulator/rtmv20-regulator.c | 42 ++++++++++++++++++++++++++--
 1 file changed, 40 insertions(+), 2 deletions(-)

diff --git a/drivers/regulator/rtmv20-regulator.c b/drivers/regulator/rtmv20-regulator.c
index 852fb2596ffd..5adc552dffd5 100644
--- a/drivers/regulator/rtmv20-regulator.c
+++ b/drivers/regulator/rtmv20-regulator.c
@@ -103,9 +103,47 @@ static int rtmv20_lsw_disable(struct regulator_dev *rdev)
 	return 0;
 }
 
+static int rtmv20_lsw_set_current_limit(struct regulator_dev *rdev, int min_uA,
+					int max_uA)
+{
+	int sel;
+
+	if (min_uA > RTMV20_LSW_MAXUA || max_uA < RTMV20_LSW_MINUA)
+		return -EINVAL;
+
+	if (max_uA > RTMV20_LSW_MAXUA)
+		max_uA = RTMV20_LSW_MAXUA;
+
+	sel = (max_uA - RTMV20_LSW_MINUA) / RTMV20_LSW_STEPUA;
+
+	/* Ensure the selected setting is still in range */
+	if ((sel * RTMV20_LSW_STEPUA + RTMV20_LSW_MINUA) < min_uA)
+		return -EINVAL;
+
+	sel <<= ffs(rdev->desc->csel_mask) - 1;
+
+	return regmap_update_bits(rdev->regmap, rdev->desc->csel_reg,
+				  rdev->desc->csel_mask, sel);
+}
+
+static int rtmv20_lsw_get_current_limit(struct regulator_dev *rdev)
+{
+	unsigned int val;
+	int ret;
+
+	ret = regmap_read(rdev->regmap, rdev->desc->csel_reg, &val);
+	if (ret)
+		return ret;
+
+	val &= rdev->desc->csel_mask;
+	val >>= ffs(rdev->desc->csel_mask) - 1;
+
+	return val * RTMV20_LSW_STEPUA + RTMV20_LSW_MINUA;
+}
+
 static const struct regulator_ops rtmv20_regulator_ops = {
-	.set_current_limit = regulator_set_current_limit_regmap,
-	.get_current_limit = regulator_get_current_limit_regmap,
+	.set_current_limit = rtmv20_lsw_set_current_limit,
+	.get_current_limit = rtmv20_lsw_get_current_limit,
 	.enable = rtmv20_lsw_enable,
 	.disable = rtmv20_lsw_disable,
 	.is_enabled = regulator_is_enabled_regmap,
-- 
2.25.1


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

* [PATCH 2/2] regulator: rtmv20: Add Richtek to Kconfig text
  2021-05-30 12:41 [PATCH RFT 1/2] regulator: rtmv20: Fix .set_current_limit/.get_current_limit callbacks Axel Lin
@ 2021-05-30 12:41 ` Axel Lin
  2021-05-30 15:48 ` [PATCH RFT 1/2] regulator: rtmv20: Fix .set_current_limit/.get_current_limit callbacks cy_huang(黃啟原)
  2021-06-01 17:38 ` Mark Brown
  2 siblings, 0 replies; 4+ messages in thread
From: Axel Lin @ 2021-05-30 12:41 UTC (permalink / raw)
  To: Mark Brown; +Cc: ChiYuan Huang, Liam Girdwood, linux-kernel, Axel Lin

The other Richtek drivers has Richtek prefix, make it consistent.

Signed-off-by: Axel Lin <axel.lin@ingics.com>
---
 drivers/regulator/Kconfig | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/regulator/Kconfig b/drivers/regulator/Kconfig
index 9aeb32c320aa..fc9e8f589d16 100644
--- a/drivers/regulator/Kconfig
+++ b/drivers/regulator/Kconfig
@@ -1032,7 +1032,7 @@ config REGULATOR_RT5033
 	  current source, LDO and Buck.
 
 config REGULATOR_RTMV20
-	tristate "RTMV20 Laser Diode Regulator"
+	tristate "Richtek RTMV20 Laser Diode Regulator"
 	depends on I2C
 	select REGMAP_I2C
 	help
-- 
2.25.1


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

* Re: [PATCH RFT 1/2] regulator: rtmv20: Fix .set_current_limit/.get_current_limit callbacks
  2021-05-30 12:41 [PATCH RFT 1/2] regulator: rtmv20: Fix .set_current_limit/.get_current_limit callbacks Axel Lin
  2021-05-30 12:41 ` [PATCH 2/2] regulator: rtmv20: Add Richtek to Kconfig text Axel Lin
@ 2021-05-30 15:48 ` cy_huang(黃啟原)
  2021-06-01 17:38 ` Mark Brown
  2 siblings, 0 replies; 4+ messages in thread
From: cy_huang(黃啟原) @ 2021-05-30 15:48 UTC (permalink / raw)
  To: axel.lin, broonie; +Cc: lgirdwood, linux-kernel, u0084500

>
> Current code does not set .curr_table and .n_linear_ranges settings,
> so it cannot use the regulator_get/set_current_limit_regmap helpers.
> If we setup the curr_table, it will has 200 entries.
> Implement customized .set_current_limit/.get_current_limit callbacks
> instead.
>
> Fixes: b8c054a5eaf0 ("regulator: rtmv20: Adds support for Richtek RTMV20 load
> switch regulator")
> Signed-off-by: Axel Lin <axel.lin@ingics.com>
> ---
> Hi ChiYuan,
> I don't have this h/w to test.
> Please help to review and test this patch.
>
> Thanks,
> Axel
Thanks for the fix. I really didn't notice that.

Reviewed-by: ChiYuan Huang <cy_huang@richtek.com>
>
>
>  drivers/regulator/rtmv20-regulator.c | 42 ++++++++++++++++++++++++++--
>  1 file changed, 40 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/regulator/rtmv20-regulator.c b/drivers/regulator/rtmv20-
> regulator.c
> index 852fb2596ffd..5adc552dffd5 100644
> --- a/drivers/regulator/rtmv20-regulator.c
> +++ b/drivers/regulator/rtmv20-regulator.c
> @@ -103,9 +103,47 @@ static int rtmv20_lsw_disable(struct regulator_dev *rdev)
>  return 0;
>  }
>
> +static int rtmv20_lsw_set_current_limit(struct regulator_dev *rdev, int
> min_uA,
> +int max_uA)
> +{
> +int sel;
> +
> +if (min_uA > RTMV20_LSW_MAXUA || max_uA < RTMV20_LSW_MINUA)
> +return -EINVAL;
> +
> +if (max_uA > RTMV20_LSW_MAXUA)
> +max_uA = RTMV20_LSW_MAXUA;
> +
> +sel = (max_uA - RTMV20_LSW_MINUA) / RTMV20_LSW_STEPUA;
> +
> +/* Ensure the selected setting is still in range */
> +if ((sel * RTMV20_LSW_STEPUA + RTMV20_LSW_MINUA) < min_uA)
> +return -EINVAL;
> +
> +sel <<= ffs(rdev->desc->csel_mask) - 1;
> +
> +return regmap_update_bits(rdev->regmap, rdev->desc->csel_reg,
> +  rdev->desc->csel_mask, sel);
> +}
> +
> +static int rtmv20_lsw_get_current_limit(struct regulator_dev *rdev)
> +{
> +unsigned int val;
> +int ret;
> +
> +ret = regmap_read(rdev->regmap, rdev->desc->csel_reg, &val);
> +if (ret)
> +return ret;
> +
> +val &= rdev->desc->csel_mask;
> +val >>= ffs(rdev->desc->csel_mask) - 1;
> +
> +return val * RTMV20_LSW_STEPUA + RTMV20_LSW_MINUA;
> +}
> +
>  static const struct regulator_ops rtmv20_regulator_ops = {
> -.set_current_limit = regulator_set_current_limit_regmap,
> -.get_current_limit = regulator_get_current_limit_regmap,
> +.set_current_limit = rtmv20_lsw_set_current_limit,
> +.get_current_limit = rtmv20_lsw_get_current_limit,
>  .enable = rtmv20_lsw_enable,
>  .disable = rtmv20_lsw_disable,
>  .is_enabled = regulator_is_enabled_regmap,
************* Email Confidentiality Notice ********************

The information contained in this e-mail message (including any attachments) may be confidential, proprietary, privileged, or otherwise exempt from disclosure under applicable laws. It is intended to be conveyed only to the designated recipient(s). Any use, dissemination, distribution, printing, retaining or copying of this e-mail (including its attachments) by unintended recipient(s) is strictly prohibited and may be unlawful. If you are not an intended recipient of this e-mail, or believe that you have received this e-mail in error, please notify the sender immediately (by replying to this e-mail), delete any and all copies of this e-mail (including any attachments) from your system, and do not disclose the content of this e-mail to any other person. Thank you!

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

* Re: [PATCH RFT 1/2] regulator: rtmv20: Fix .set_current_limit/.get_current_limit callbacks
  2021-05-30 12:41 [PATCH RFT 1/2] regulator: rtmv20: Fix .set_current_limit/.get_current_limit callbacks Axel Lin
  2021-05-30 12:41 ` [PATCH 2/2] regulator: rtmv20: Add Richtek to Kconfig text Axel Lin
  2021-05-30 15:48 ` [PATCH RFT 1/2] regulator: rtmv20: Fix .set_current_limit/.get_current_limit callbacks cy_huang(黃啟原)
@ 2021-06-01 17:38 ` Mark Brown
  2 siblings, 0 replies; 4+ messages in thread
From: Mark Brown @ 2021-06-01 17:38 UTC (permalink / raw)
  To: Axel Lin; +Cc: Mark Brown, linux-kernel, Liam Girdwood, ChiYuan Huang

On Sun, 30 May 2021 20:41:00 +0800, Axel Lin wrote:
> Current code does not set .curr_table and .n_linear_ranges settings,
> so it cannot use the regulator_get/set_current_limit_regmap helpers.
> If we setup the curr_table, it will has 200 entries.
> Implement customized .set_current_limit/.get_current_limit callbacks
> instead.

Applied to

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

Thanks!

[1/2] regulator: rtmv20: Fix .set_current_limit/.get_current_limit callbacks
      commit: 86ab21cc39e6b99b7065ab9008c90bec5dec535a
[2/2] regulator: rtmv20: Add Richtek to Kconfig text
      commit: 5f01de6ffae2b00d3795a399d8d630bdae3c8997

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] 4+ messages in thread

end of thread, other threads:[~2021-06-01 17:39 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-05-30 12:41 [PATCH RFT 1/2] regulator: rtmv20: Fix .set_current_limit/.get_current_limit callbacks Axel Lin
2021-05-30 12:41 ` [PATCH 2/2] regulator: rtmv20: Add Richtek to Kconfig text Axel Lin
2021-05-30 15:48 ` [PATCH RFT 1/2] regulator: rtmv20: Fix .set_current_limit/.get_current_limit callbacks cy_huang(黃啟原)
2021-06-01 17:38 ` 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).