U-Boot Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 0/2] Add regulator support to qcom-ufs driver
@ 2026-05-23 13:04 Federico Amedeo Izzo via B4 Relay
  2026-05-23 13:04 ` [PATCH v4 1/2] regulator: qcom-rpmh-regulator: fix regulator mode mismatch Federico Amedeo Izzo via B4 Relay
                   ` (4 more replies)
  0 siblings, 5 replies; 10+ messages in thread
From: Federico Amedeo Izzo via B4 Relay @ 2026-05-23 13:04 UTC (permalink / raw)
  To: Sumit Garg, u-boot-qcom, u-boot
  Cc: Neil Armstrong, Bhupesh Sharma, Neha Malcom Francis,
	Casey Connolly, Tom Rini, Marek Vasut, Federico Amedeo Izzo,
	Julien Stephan, Jaehoon Chung, Peng Fan, Luca Weiss,
	Aswin Murugan

This series enables UFS support on SC7280 devices with UFS3.1.
SC7280 devices with UFS2.2 were already working.

The root cause was ABL leaving vcc-supply regulator disabled on UFS3.1
devices, and enabled on UFS2.2 devices that worked fine without
regulator support.

Signed-off-by: Federico Amedeo Izzo <federico@izzo.pro>
---
Changes in v4:
- Improve regulator mode fix: apply current mode during enable
- Remove regulator mode code from qcom-ufs driver
- Link to v3: https://patch.msgid.link/20260523-qcom-ufs-regulator-support-v3-0-1be2a80a2577@izzo.pro

Changes in v3:
- Fix bug causing HPM mode not being applied. Removed LPM/HPM hack
- Read regulator mode from dts property instead of hardcoding it
- Link to v2: https://patch.msgid.link/20260521-qcom-ufs-regulator-support-v2-1-d3ec82ae5dbc@izzo.pro

Changes in v2:
- Add vccq2-supply for UFS2.2 devices without internal eLDO regulator
- Fix wrong topic
- Link to v1: https://patch.msgid.link/20260521-dpu-add-dspp-gc-driver-v1-1-83372488cdcf@izzo.pro

To: Sumit Garg <sumit.garg@kernel.org>
To: u-boot-qcom@groups.io
To: u-boot@lists.denx.de
Cc: Jaehoon Chung <jh80.chung@samsung.com>
Cc: Peng Fan <peng.fan@nxp.com>
Cc: Casey Connolly <casey.connolly@linaro.org>
Cc: Neil Armstrong <neil.armstrong@linaro.org>
Cc: Tom Rini <trini@konsulko.com>
Cc: Luca Weiss <luca.weiss@fairphone.com>
Cc: Aswin Murugan <aswin.murugan@oss.qualcomm.com>
Cc: Federico Amedeo Izzo <federico@izzo.pro>
Cc: Bhupesh Sharma <bhupesh.linux@gmail.com>
Cc: Neha Malcom Francis <n-francis@ti.com>
Cc: Julien Stephan <jstephan@baylibre.com>
Cc: Marek Vasut <marek.vasut+renesas@mailbox.org>

---
Federico Amedeo Izzo (2):
      regulator: qcom-rpmh-regulator: fix regulator mode mismatch
      ufs: qcom: add ufs host regulator support

 drivers/power/regulator/qcom-rpmh-regulator.c | 106 ++++++++++++++------------
 drivers/ufs/ufs-qcom.c                        |  25 ++++++
 drivers/ufs/ufs-qcom.h                        |   4 +
 3 files changed, 85 insertions(+), 50 deletions(-)
---
base-commit: 744cf5d4e398c5f657e5c3eeb44d00fa5175dc85
change-id: 20260521-qcom-ufs-regulator-support-466ea6ad202a

Best regards,
--  
Federico Amedeo Izzo <federico@izzo.pro>



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

* [PATCH v4 1/2] regulator: qcom-rpmh-regulator: fix regulator mode mismatch
  2026-05-23 13:04 [PATCH v4 0/2] Add regulator support to qcom-ufs driver Federico Amedeo Izzo via B4 Relay
@ 2026-05-23 13:04 ` Federico Amedeo Izzo via B4 Relay
  2026-05-23 13:04 ` [PATCH v4 2/2] ufs: qcom: add ufs host regulator support Federico Amedeo Izzo via B4 Relay
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 10+ messages in thread
From: Federico Amedeo Izzo via B4 Relay @ 2026-05-23 13:04 UTC (permalink / raw)
  To: Sumit Garg, u-boot-qcom, u-boot
  Cc: Neil Armstrong, Bhupesh Sharma, Neha Malcom Francis,
	Casey Connolly, Tom Rini, Marek Vasut, Federico Amedeo Izzo,
	Julien Stephan, Jaehoon Chung, Peng Fan, Luca Weiss,
	Aswin Murugan

From: Federico Amedeo Izzo <federico@izzo.pro>

Initial regulator mode was read from dts but never applied.
This caused a mismatch between saved mode and actual regulator mode.

Apply the current mode from priv->mode during enable() and move
rpmh_regulator_vrm_set_mode function before rpmh_regulator_set_enable_state().

Signed-off-by: Federico Amedeo Izzo <federico@izzo.pro>
---
 drivers/power/regulator/qcom-rpmh-regulator.c | 106 ++++++++++++++------------
 1 file changed, 56 insertions(+), 50 deletions(-)

diff --git a/drivers/power/regulator/qcom-rpmh-regulator.c b/drivers/power/regulator/qcom-rpmh-regulator.c
index 4d65aae1690..f789b5b6f86 100644
--- a/drivers/power/regulator/qcom-rpmh-regulator.c
+++ b/drivers/power/regulator/qcom-rpmh-regulator.c
@@ -295,6 +295,56 @@ static int rpmh_regulator_vrm_get_value(struct udevice *rdev)
 	return vreg->uv;
 }
 
+static int rpmh_regulator_vrm_set_mode_bypass(struct rpmh_vreg *vreg,
+					      unsigned int mode, bool bypassed)
+{
+	struct tcs_cmd cmd = {
+		.addr = vreg->addr + RPMH_REGULATOR_REG_VRM_MODE,
+	};
+	struct dm_regulator_mode *pmic_mode;
+	int i;
+
+	if (mode > REGULATOR_MODE_HPM)
+		return -EINVAL;
+
+	for (i = 0; i < vreg->hw_data->n_modes; i++) {
+		pmic_mode = &vreg->hw_data->pmic_mode_map[i];
+		if (pmic_mode->id == mode)
+			break;
+	}
+	if (pmic_mode->id != mode) {
+		printf("Invalid mode %d\n", mode);
+		return -EINVAL;
+	}
+
+	if (bypassed)
+		// XXX: should have a version check for PMIC4 but we don't have any yet
+		// and we don't use bypass mode
+		cmd.data = PMIC5_BOB_MODE_PASS;
+	else
+		cmd.data = pmic_mode->register_value;
+
+	return rpmh_regulator_send_request(vreg, &cmd, true);
+}
+
+static int rpmh_regulator_vrm_set_mode(struct udevice *rdev,
+				       int mode)
+{
+	struct rpmh_vreg *vreg = dev_get_priv(rdev);
+	int ret;
+
+	debug("%s: set_mode %d (current %d)\n", rdev->name, mode, vreg->mode);
+
+	if (mode == vreg->mode)
+		return 0;
+
+	ret = rpmh_regulator_vrm_set_mode_bypass(vreg, mode, vreg->bypassed);
+	if (!ret)
+		vreg->mode = mode;
+
+	return ret;
+}
+
 static int rpmh_regulator_is_enabled(struct udevice *rdev)
 {
 	struct rpmh_vreg *vreg = dev_get_priv(rdev);
@@ -331,6 +381,12 @@ static int rpmh_regulator_set_enable_state(struct udevice *rdev,
 	debug("%s: set_enable %d (current %d)\n", rdev->name, enable,
 	      vreg->enabled);
 
+	if (vreg->mode != -EINVAL) {
+		ret = rpmh_regulator_vrm_set_mode_bypass(vreg, vreg->mode, vreg->bypassed);
+		if (ret < 0)
+			return ret;
+	}
+
 	if (vreg->enabled == -EINVAL &&
 	    vreg->uv != -ENOTRECOVERABLE) {
 		ret = _rpmh_regulator_vrm_set_value(rdev,
@@ -346,56 +402,6 @@ static int rpmh_regulator_set_enable_state(struct udevice *rdev,
 	return ret;
 }
 
-static int rpmh_regulator_vrm_set_mode_bypass(struct rpmh_vreg *vreg,
-					      unsigned int mode, bool bypassed)
-{
-	struct tcs_cmd cmd = {
-		.addr = vreg->addr + RPMH_REGULATOR_REG_VRM_MODE,
-	};
-	struct dm_regulator_mode *pmic_mode;
-	int i;
-
-	if (mode > REGULATOR_MODE_HPM)
-		return -EINVAL;
-
-	for (i = 0; i < vreg->hw_data->n_modes; i++) {
-		pmic_mode = &vreg->hw_data->pmic_mode_map[i];
-		if (pmic_mode->id == mode)
-			break;
-	}
-	if (pmic_mode->id != mode) {
-		printf("Invalid mode %d\n", mode);
-		return -EINVAL;
-	}
-
-	if (bypassed)
-		// XXX: should have a version check for PMIC4 but we don't have any yet
-		// and we don't use bypass mode
-		cmd.data = PMIC5_BOB_MODE_PASS;
-	else
-		cmd.data = pmic_mode->register_value;
-
-	return rpmh_regulator_send_request(vreg, &cmd, true);
-}
-
-static int rpmh_regulator_vrm_set_mode(struct udevice *rdev,
-				       int mode)
-{
-	struct rpmh_vreg *vreg = dev_get_priv(rdev);
-	int ret;
-
-	debug("%s: set_mode %d (current %d)\n", rdev->name, mode, vreg->mode);
-
-	if (mode == vreg->mode)
-		return 0;
-
-	ret = rpmh_regulator_vrm_set_mode_bypass(vreg, mode, vreg->bypassed);
-	if (!ret)
-		vreg->mode = mode;
-
-	return ret;
-}
-
 static int rpmh_regulator_vrm_get_pmic_mode(struct rpmh_vreg *vreg, int *pmic_mode)
 {
 	struct tcs_cmd cmd = {

-- 
2.54.0



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

* [PATCH v4 2/2] ufs: qcom: add ufs host regulator support
  2026-05-23 13:04 [PATCH v4 0/2] Add regulator support to qcom-ufs driver Federico Amedeo Izzo via B4 Relay
  2026-05-23 13:04 ` [PATCH v4 1/2] regulator: qcom-rpmh-regulator: fix regulator mode mismatch Federico Amedeo Izzo via B4 Relay
@ 2026-05-23 13:04 ` Federico Amedeo Izzo via B4 Relay
  2026-05-25 12:12   ` Neha Malcom Francis
  2026-05-26 14:01 ` [PATCH v4 0/2] Add regulator support to qcom-ufs driver Casey Connolly
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 10+ messages in thread
From: Federico Amedeo Izzo via B4 Relay @ 2026-05-23 13:04 UTC (permalink / raw)
  To: Sumit Garg, u-boot-qcom, u-boot
  Cc: Neil Armstrong, Bhupesh Sharma, Neha Malcom Francis,
	Casey Connolly, Tom Rini, Marek Vasut, Federico Amedeo Izzo,
	Julien Stephan, Jaehoon Chung, Peng Fan, Luca Weiss,
	Aswin Murugan

From: Federico Amedeo Izzo <federico@izzo.pro>

The qcom UFS driver works without touching the regulators on most platforms
as ABL leaves them already configured and enabled.
On some SC7280 phones with UFS 3.1 like nothing-spacewar, vcc regulator is
not enabled by ABL, so we need to configure and enable it to use the UFS
storage.

Tested on nothing-spacewar and motorola-dubai using Tauchgang U-Boot.

Signed-off-by: Federico Amedeo Izzo <federico@izzo.pro>
---
 drivers/ufs/ufs-qcom.c | 25 +++++++++++++++++++++++++
 drivers/ufs/ufs-qcom.h |  4 ++++
 2 files changed, 29 insertions(+)

diff --git a/drivers/ufs/ufs-qcom.c b/drivers/ufs/ufs-qcom.c
index dc40ee62daf..0e2e45f1075 100644
--- a/drivers/ufs/ufs-qcom.c
+++ b/drivers/ufs/ufs-qcom.c
@@ -16,6 +16,7 @@
 #include <generic-phy.h>
 #include <asm/gpio.h>
 #include <interconnect.h>
+#include <power/regulator.h>
 
 #include <linux/bitops.h>
 #include <linux/delay.h>
@@ -561,6 +562,19 @@ static int ufs_qcom_init(struct ufs_hba *hba)
 
 	priv->hba = hba;
 
+	/* enable regulators */
+	err = regulator_set_enable(priv->vcc, true);
+	if (err && err != -ENOSYS)
+		dev_warn(hba->dev, "failed to enable regulator vcc-supply:%d\n", err);
+
+	err = regulator_set_enable(priv->vccq, true);
+	if (err && err != -ENOSYS)
+		dev_warn(hba->dev, "failed to enable regulator vccq-supply:%d\n", err);
+
+	err = regulator_set_enable(priv->vccq2, true);
+	if (err && err != -ENOSYS)
+		dev_warn(hba->dev, "failed to enable regulator vccq2-supply:%d\n", err);
+
 	/* setup clocks */
 	ufs_qcom_setup_clocks(hba, true, PRE_CHANGE);
 
@@ -651,6 +665,17 @@ static int ufs_qcom_probe(struct udevice *dev)
 		dev_err(dev, "Warning: cannot get reset GPIO\n");
 	}
 
+	ret = device_get_supply_regulator(dev, "vcc-supply", &priv->vcc);
+	if (ret)
+		dev_warn(dev, "failed to get regulator vcc-supply:%d\n", ret);
+
+	ret = device_get_supply_regulator(dev, "vccq-supply", &priv->vccq);
+	if (ret)
+		dev_warn(dev, "failed to get regulator vccq-supply:%d\n", ret);
+
+	/* vccq2 is optional on UFS2 and missing on UFS3 and later */
+	device_get_supply_regulator(dev, "vccq2-supply", &priv->vccq2);
+
 	ret = ufshcd_probe(dev, &ufs_qcom_hba_ops);
 	if (ret) {
 		dev_err(dev, "ufshcd_probe() failed, ret:%d\n", ret);
diff --git a/drivers/ufs/ufs-qcom.h b/drivers/ufs/ufs-qcom.h
index de957ae60f3..115565db7e9 100644
--- a/drivers/ufs/ufs-qcom.h
+++ b/drivers/ufs/ufs-qcom.h
@@ -134,6 +134,10 @@ struct ufs_qcom_priv {
 	struct clk_bulk clks;
 	bool is_clks_enabled;
 
+	struct udevice *vcc;
+	struct udevice *vccq;
+	struct udevice *vccq2;
+
 	struct ufs_hw_version hw_ver;
 
 	/* Reset control of HCI */

-- 
2.54.0



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

* Re: [PATCH v4 2/2] ufs: qcom: add ufs host regulator support
  2026-05-23 13:04 ` [PATCH v4 2/2] ufs: qcom: add ufs host regulator support Federico Amedeo Izzo via B4 Relay
@ 2026-05-25 12:12   ` Neha Malcom Francis
  2026-05-25 19:41     ` Federico Amedeo Izzo
  0 siblings, 1 reply; 10+ messages in thread
From: Neha Malcom Francis @ 2026-05-25 12:12 UTC (permalink / raw)
  To: Federico Amedeo Izzo
  Cc: Sumit Garg, u-boot-qcom, u-boot, Neil Armstrong, Bhupesh Sharma,
	Neha Malcom Francis, Casey Connolly, Tom Rini, Marek Vasut,
	Julien Stephan, Jaehoon Chung, Peng Fan, Luca Weiss,
	Aswin Murugan

On Sat, 23 May 2026 15:04:25 +0200, Federico Amedeo Izzo <federico@izzo.pro> wrote:
> diff --git a/drivers/ufs/ufs-qcom.c b/drivers/ufs/ufs-qcom.c
> index dc40ee62daf..0e2e45f1075 100644
> --- a/drivers/ufs/ufs-qcom.c
> +++ b/drivers/ufs/ufs-qcom.c
> @@ -561,6 +562,19 @@ static int ufs_qcom_init(struct ufs_hba *hba)
>  
>  	priv->hba = hba;
>  
> +	/* enable regulators */
> +	err = regulator_set_enable(priv->vcc, true);
> +	if (err && err != -ENOSYS)
> +		dev_warn(hba->dev, "failed to enable regulator vcc-supply:%d\n", err);
> +
> +	err = regulator_set_enable(priv->vccq, true);
> +	if (err && err != -ENOSYS)
> +		dev_warn(hba->dev, "failed to enable regulator vccq-supply:%d\n", err);
> +
> +	err = regulator_set_enable(priv->vccq2, true);
> +	if (err && err != -ENOSYS)
> +		dev_warn(hba->dev, "failed to enable regulator vccq2-supply:%d\n", err);

vccq2 is optional right? Is it verified that the optional code route will never
return ENOSYS and there is handling in regulator_set_enable for NULL regulators?

-- 
Neha Malcom Francis <n-francis@ti.com>

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

* Re: [PATCH v4 2/2] ufs: qcom: add ufs host regulator support
  2026-05-25 12:12   ` Neha Malcom Francis
@ 2026-05-25 19:41     ` Federico Amedeo Izzo
  2026-05-26  6:56       ` Neha Malcom Francis
  2026-05-26  6:59       ` Neha Malcom Francis
  0 siblings, 2 replies; 10+ messages in thread
From: Federico Amedeo Izzo @ 2026-05-25 19:41 UTC (permalink / raw)
  To: Neha Malcom Francis
  Cc: Sumit Garg, u-boot-qcom, u-boot, Neil Armstrong, Bhupesh Sharma,
	Casey Connolly, Tom Rini, Marek Vasut, Julien Stephan,
	Jaehoon Chung, Peng Fan, Luca Weiss, Aswin Murugan

Il 2026-05-25 14:12 Neha Malcom Francis ha scritto:

> On Sat, 23 May 2026 15:04:25 +0200, Federico Amedeo Izzo 
> <federico@izzo.pro> wrote:
> 
>> diff --git a/drivers/ufs/ufs-qcom.c b/drivers/ufs/ufs-qcom.c
>> index dc40ee62daf..0e2e45f1075 100644
>> --- a/drivers/ufs/ufs-qcom.c
>> +++ b/drivers/ufs/ufs-qcom.c
>> @@ -561,6 +562,19 @@ static int ufs_qcom_init(struct ufs_hba *hba)
>> 
>> priv->hba = hba;
>> 
>> +    /* enable regulators */
>> +    err = regulator_set_enable(priv->vcc, true);
>> +    if (err && err != -ENOSYS)
>> +        dev_warn(hba->dev, "failed to enable regulator 
>> vcc-supply:%d\n", err);
>> +
>> +    err = regulator_set_enable(priv->vccq, true);
>> +    if (err && err != -ENOSYS)
>> +        dev_warn(hba->dev, "failed to enable regulator 
>> vccq-supply:%d\n", err);
>> +
>> +    err = regulator_set_enable(priv->vccq2, true);
>> +    if (err && err != -ENOSYS)
>> +        dev_warn(hba->dev, "failed to enable regulator 
>> vccq2-supply:%d\n", err);
> 
> vccq2 is optional right? Is it verified that the optional code route 
> will never
> return ENOSYS and there is handling in regulator_set_enable for NULL 
> regulators?

Hi,
vccq2 is indeed optional, if it's not present, regulator_set_enable() 
will handle the NULL regulator and return -ENOSYS.
The warning is skipped for -ENOSYS as we don't want to print warnings 
for non existing regulators,

Below is a section of regulator_set_enable() from regulator_uclass.c

int regulator_set_enable(struct udevice *dev, bool enable)
{
         const struct dm_regulator_ops *ops = dev_get_driver_ops(dev);
         struct dm_regulator_uclass_plat *uc_pdata;
         int ret, old_enable = 0;

         if (!ops || !ops->set_enable)
                 return -ENOSYS;
[...]

Greetings,
Federico Amedeo Izzo

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

* Re: [PATCH v4 2/2] ufs: qcom: add ufs host regulator support
  2026-05-25 19:41     ` Federico Amedeo Izzo
@ 2026-05-26  6:56       ` Neha Malcom Francis
  2026-05-26  6:59       ` Neha Malcom Francis
  1 sibling, 0 replies; 10+ messages in thread
From: Neha Malcom Francis @ 2026-05-26  6:56 UTC (permalink / raw)
  To: Federico Amedeo Izzo
  Cc: Neha Malcom Francis, Sumit Garg, u-boot-qcom, u-boot,
	Neil Armstrong, Bhupesh Sharma, Casey Connolly, Tom Rini,
	Marek Vasut, Julien Stephan, Jaehoon Chung, Peng Fan, Luca Weiss,
	Aswin Murugan

On 2026-05-25 21:41:00+02:00, Federico Amedeo Izzo wrote:
> Il 2026-05-25 14:12 Neha Malcom Francis ha scritto:
> 
> > On Sat, 23 May 2026 15:04:25 +0200, Federico Amedeo Izzo 
> > <federico@izzo.pro> wrote:
> > 
> > 
> > vccq2 is optional right? Is it verified that the optional code route 
> > will never
> > return ENOSYS and there is handling in regulator_set_enable for NULL 
> > regulators?
> 
> Hi,
> vccq2 is indeed optional, if it's not present, regulator_set_enable() 
> will handle the NULL regulator and return -ENOSYS.
> The warning is skipped for -ENOSYS as we don't want to print warnings 
> for non existing regulators,
> 
> Below is a section of regulator_set_enable() from regulator_uclass.c
> 
> int regulator_set_enable(struct udevice *dev, bool enable)
> {
>          const struct dm_regulator_ops *ops = dev_get_driver_ops(dev);
>          struct dm_regulator_uclass_plat *uc_pdata;
>          int ret, old_enable = 0;
> 
>          if (!ops || !ops->set_enable)
>                  return -ENOSYS;
> [...]
> 

Cool that works. Thanks!

> Greetings,
> Federico Amedeo Izzo



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

* Re: [PATCH v4 2/2] ufs: qcom: add ufs host regulator support
  2026-05-25 19:41     ` Federico Amedeo Izzo
  2026-05-26  6:56       ` Neha Malcom Francis
@ 2026-05-26  6:59       ` Neha Malcom Francis
  1 sibling, 0 replies; 10+ messages in thread
From: Neha Malcom Francis @ 2026-05-26  6:59 UTC (permalink / raw)
  To: Federico Amedeo Izzo
  Cc: Neha Malcom Francis, Sumit Garg, u-boot-qcom, u-boot,
	Neil Armstrong, Bhupesh Sharma, Casey Connolly, Tom Rini,
	Marek Vasut, Julien Stephan, Jaehoon Chung, Peng Fan, Luca Weiss,
	Aswin Murugan

On 2026-05-25 21:41:00+02:00, Federico Amedeo Izzo wrote:
> Il 2026-05-25 14:12 Neha Malcom Francis ha scritto:
> 
> > On Sat, 23 May 2026 15:04:25 +0200, Federico Amedeo Izzo 
> > <federico@izzo.pro> wrote:
> > 
> > 
> > vccq2 is optional right? Is it verified that the optional code route 
> > will never
> > return ENOSYS and there is handling in regulator_set_enable for NULL 
> > regulators?
> 
> Hi,
> vccq2 is indeed optional, if it's not present, regulator_set_enable() 
> will handle the NULL regulator and return -ENOSYS.
> The warning is skipped for -ENOSYS as we don't want to print warnings 
> for non existing regulators,
> 
> Below is a section of regulator_set_enable() from regulator_uclass.c
> 
> int regulator_set_enable(struct udevice *dev, bool enable)
> {
>          const struct dm_regulator_ops *ops = dev_get_driver_ops(dev);
>          struct dm_regulator_uclass_plat *uc_pdata;
>          int ret, old_enable = 0;
> 
>          if (!ops || !ops->set_enable)
>                  return -ENOSYS;
> [...]
>

Reviewed-by: Neha Malcom Francis <n-francis@ti.com>

> Greetings,
> Federico Amedeo Izzo



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

* Re: [PATCH v4 0/2] Add regulator support to qcom-ufs driver
  2026-05-23 13:04 [PATCH v4 0/2] Add regulator support to qcom-ufs driver Federico Amedeo Izzo via B4 Relay
  2026-05-23 13:04 ` [PATCH v4 1/2] regulator: qcom-rpmh-regulator: fix regulator mode mismatch Federico Amedeo Izzo via B4 Relay
  2026-05-23 13:04 ` [PATCH v4 2/2] ufs: qcom: add ufs host regulator support Federico Amedeo Izzo via B4 Relay
@ 2026-05-26 14:01 ` Casey Connolly
  2026-06-09 12:49 ` (subset) " Casey Connolly
  2026-06-09 12:52 ` Neil Armstrong
  4 siblings, 0 replies; 10+ messages in thread
From: Casey Connolly @ 2026-05-26 14:01 UTC (permalink / raw)
  To: federico, Sumit Garg, u-boot-qcom, u-boot
  Cc: Neil Armstrong, Bhupesh Sharma, Neha Malcom Francis, Tom Rini,
	Marek Vasut, Julien Stephan, Jaehoon Chung, Peng Fan, Luca Weiss,
	Aswin Murugan

Hi Federico,

On 23/05/2026 15:04, Federico Amedeo Izzo via B4 Relay wrote:
> This series enables UFS support on SC7280 devices with UFS3.1.
> SC7280 devices with UFS2.2 were already working.
> 
> The root cause was ABL leaving vcc-supply regulator disabled on UFS3.1
> devices, and enabled on UFS2.2 devices that worked fine without
> regulator support.

Thanks a lot for working on this and finding the bug in the regulator
driver!

> 
> Signed-off-by: Federico Amedeo Izzo <federico@izzo.pro>

Reviewed-by: Casey Connolly <casey.connolly@linaro.org>

> ---
> Changes in v4:
> - Improve regulator mode fix: apply current mode during enable
> - Remove regulator mode code from qcom-ufs driver
> - Link to v3: https://patch.msgid.link/20260523-qcom-ufs-regulator-support-v3-0-1be2a80a2577@izzo.pro
> 
> Changes in v3:
> - Fix bug causing HPM mode not being applied. Removed LPM/HPM hack
> - Read regulator mode from dts property instead of hardcoding it
> - Link to v2: https://patch.msgid.link/20260521-qcom-ufs-regulator-support-v2-1-d3ec82ae5dbc@izzo.pro
> 
> Changes in v2:
> - Add vccq2-supply for UFS2.2 devices without internal eLDO regulator
> - Fix wrong topic
> - Link to v1: https://patch.msgid.link/20260521-dpu-add-dspp-gc-driver-v1-1-83372488cdcf@izzo.pro
> 
> To: Sumit Garg <sumit.garg@kernel.org>
> To: u-boot-qcom@groups.io
> To: u-boot@lists.denx.de
> Cc: Jaehoon Chung <jh80.chung@samsung.com>
> Cc: Peng Fan <peng.fan@nxp.com>
> Cc: Casey Connolly <casey.connolly@linaro.org>
> Cc: Neil Armstrong <neil.armstrong@linaro.org>
> Cc: Tom Rini <trini@konsulko.com>
> Cc: Luca Weiss <luca.weiss@fairphone.com>
> Cc: Aswin Murugan <aswin.murugan@oss.qualcomm.com>
> Cc: Federico Amedeo Izzo <federico@izzo.pro>
> Cc: Bhupesh Sharma <bhupesh.linux@gmail.com>
> Cc: Neha Malcom Francis <n-francis@ti.com>
> Cc: Julien Stephan <jstephan@baylibre.com>
> Cc: Marek Vasut <marek.vasut+renesas@mailbox.org>
> 
> ---
> Federico Amedeo Izzo (2):
>       regulator: qcom-rpmh-regulator: fix regulator mode mismatch
>       ufs: qcom: add ufs host regulator support
> 
>  drivers/power/regulator/qcom-rpmh-regulator.c | 106 ++++++++++++++------------
>  drivers/ufs/ufs-qcom.c                        |  25 ++++++
>  drivers/ufs/ufs-qcom.h                        |   4 +
>  3 files changed, 85 insertions(+), 50 deletions(-)
> ---
> base-commit: 744cf5d4e398c5f657e5c3eeb44d00fa5175dc85
> change-id: 20260521-qcom-ufs-regulator-support-466ea6ad202a
> 
> Best regards,
> --  
> Federico Amedeo Izzo <federico@izzo.pro>
> 
> 

-- 
// Casey (she/her)


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

* Re: (subset) [PATCH v4 0/2] Add regulator support to qcom-ufs driver
  2026-05-23 13:04 [PATCH v4 0/2] Add regulator support to qcom-ufs driver Federico Amedeo Izzo via B4 Relay
                   ` (2 preceding siblings ...)
  2026-05-26 14:01 ` [PATCH v4 0/2] Add regulator support to qcom-ufs driver Casey Connolly
@ 2026-06-09 12:49 ` Casey Connolly
  2026-06-09 12:52 ` Neil Armstrong
  4 siblings, 0 replies; 10+ messages in thread
From: Casey Connolly @ 2026-06-09 12:49 UTC (permalink / raw)
  To: Sumit Garg, u-boot-qcom, u-boot, Federico Amedeo Izzo
  Cc: Neil Armstrong, Bhupesh Sharma, Neha Malcom Francis, Tom Rini,
	Marek Vasut, Julien Stephan, Jaehoon Chung, Peng Fan, Luca Weiss,
	Aswin Murugan


On Sat, 23 May 2026 15:04:23 +0200, Federico Amedeo Izzo wrote:
> This series enables UFS support on SC7280 devices with UFS3.1.
> SC7280 devices with UFS2.2 were already working.
> 
> The root cause was ABL leaving vcc-supply regulator disabled on UFS3.1
> devices, and enabled on UFS2.2 devices that worked fine without
> regulator support.
> 
> [...]

Applied, thanks!

[1/2] regulator: qcom-rpmh-regulator: fix regulator mode mismatch
      https://source.denx.de/u-boot/custodians/u-boot-snapdragon/-/commit/5e6f370c1e3d

Best regards,
-- 
// Casey (she/they)



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

* Re: [PATCH v4 0/2] Add regulator support to qcom-ufs driver
  2026-05-23 13:04 [PATCH v4 0/2] Add regulator support to qcom-ufs driver Federico Amedeo Izzo via B4 Relay
                   ` (3 preceding siblings ...)
  2026-06-09 12:49 ` (subset) " Casey Connolly
@ 2026-06-09 12:52 ` Neil Armstrong
  4 siblings, 0 replies; 10+ messages in thread
From: Neil Armstrong @ 2026-06-09 12:52 UTC (permalink / raw)
  To: Sumit Garg, u-boot-qcom, u-boot, Federico Amedeo Izzo
  Cc: Bhupesh Sharma, Neha Malcom Francis, Casey Connolly, Tom Rini,
	Marek Vasut, Julien Stephan, Jaehoon Chung, Peng Fan, Luca Weiss,
	Aswin Murugan

Hi,

On Sat, 23 May 2026 15:04:23 +0200, Federico Amedeo Izzo wrote:
> This series enables UFS support on SC7280 devices with UFS3.1.
> SC7280 devices with UFS2.2 were already working.
> 
> The root cause was ABL leaving vcc-supply regulator disabled on UFS3.1
> devices, and enabled on UFS2.2 devices that worked fine without
> regulator support.
> 
> [...]

Thanks, Applied to https://source.denx.de/u-boot/custodians/u-boot-ufs (u-boot-ufs-next)

[1/2] regulator: qcom-rpmh-regulator: fix regulator mode mismatch
      (no commit info)
[2/2] ufs: qcom: add ufs host regulator support
      https://source.denx.de/u-boot/custodians/u-boot-ufs/-/commit/8591f01705b513ab51d6762bbabeaa0417033a95

-- 
Neil


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

end of thread, other threads:[~2026-06-09 12:52 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-23 13:04 [PATCH v4 0/2] Add regulator support to qcom-ufs driver Federico Amedeo Izzo via B4 Relay
2026-05-23 13:04 ` [PATCH v4 1/2] regulator: qcom-rpmh-regulator: fix regulator mode mismatch Federico Amedeo Izzo via B4 Relay
2026-05-23 13:04 ` [PATCH v4 2/2] ufs: qcom: add ufs host regulator support Federico Amedeo Izzo via B4 Relay
2026-05-25 12:12   ` Neha Malcom Francis
2026-05-25 19:41     ` Federico Amedeo Izzo
2026-05-26  6:56       ` Neha Malcom Francis
2026-05-26  6:59       ` Neha Malcom Francis
2026-05-26 14:01 ` [PATCH v4 0/2] Add regulator support to qcom-ufs driver Casey Connolly
2026-06-09 12:49 ` (subset) " Casey Connolly
2026-06-09 12:52 ` Neil Armstrong

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox