[PATCH v1 3/5] misc: apds990x: Drop Vled supply
From: Svyatoslav Ryhel
Date: Sat Apr 18 2026 - 10:50:05 EST
According to the APDS9900/9901 documentation, this chip has only one
supply, VDD; hence, drop the Vled supply. Additionally, supply has been
set to lowercase for consistency.
Signed-off-by: Svyatoslav Ryhel <clamor95@xxxxxxxxx>
---
drivers/misc/apds990x.c | 27 +++++++++++----------------
1 file changed, 11 insertions(+), 16 deletions(-)
diff --git a/drivers/misc/apds990x.c b/drivers/misc/apds990x.c
index 742ab331a221..264335b581c1 100644
--- a/drivers/misc/apds990x.c
+++ b/drivers/misc/apds990x.c
@@ -113,7 +113,7 @@ struct apds990x_chip {
struct apds990x_platform_data *pdata;
struct i2c_client *client;
struct mutex mutex; /* avoid parallel access */
- struct regulator_bulk_data regs[2];
+ struct regulator *vdd_supply;
wait_queue_head_t wait;
int prox_en;
@@ -179,10 +179,6 @@ static const u8 again[] = {1, 8, 16, 120}; /* ALS gain steps */
static const u16 arates_hz[] = {10, 5, 2, 1};
static const u8 apersis[] = {1, 2, 4, 5};
-/* Regulators */
-static const char reg_vcc[] = "Vdd";
-static const char reg_vled[] = "Vled";
-
static int apds990x_read_byte(struct apds990x_chip *chip, u8 reg, u8 *data)
{
struct i2c_client *client = chip->client;
@@ -597,8 +593,9 @@ static int apds990x_detect(struct apds990x_chip *chip)
#ifdef CONFIG_PM
static int apds990x_chip_on(struct apds990x_chip *chip)
{
- int err = regulator_bulk_enable(ARRAY_SIZE(chip->regs),
- chip->regs);
+ int err;
+
+ err = regulator_enable(chip->vdd_supply);
if (err < 0)
return err;
@@ -615,7 +612,7 @@ static int apds990x_chip_on(struct apds990x_chip *chip)
static int apds990x_chip_off(struct apds990x_chip *chip)
{
apds990x_write_byte(chip, APDS990X_ENABLE, APDS990X_EN_DISABLE_ALL);
- regulator_bulk_disable(ARRAY_SIZE(chip->regs), chip->regs);
+ regulator_disable(chip->vdd_supply);
return 0;
}
@@ -1108,14 +1105,12 @@ static int apds990x_probe(struct i2c_client *client)
chip->prox_persistence = APDS_DEFAULT_PROX_PERS;
chip->prox_continuous_mode = false;
- chip->regs[0].supply = reg_vcc;
- chip->regs[1].supply = reg_vled;
-
- err = devm_regulator_bulk_get(dev, ARRAY_SIZE(chip->regs), chip->regs);
- if (err)
- return dev_err_probe(dev, err, "failed to get supplies\n");
+ chip->vdd_supply = devm_regulator_get(dev, "vdd");
+ if (IS_ERR(chip->vdd_supply))
+ return dev_err_probe(dev, PTR_ERR(chip->vdd_supply),
+ "failed to get vdd-supply\n");
- err = regulator_bulk_enable(ARRAY_SIZE(chip->regs), chip->regs);
+ err = regulator_enable(chip->vdd_supply);
if (err < 0)
return dev_err_probe(dev, err, "cannot enable regulators\n");
@@ -1164,7 +1159,7 @@ static int apds990x_probe(struct i2c_client *client)
error_pm:
pm_runtime_disable(dev);
error_regulator:
- regulator_bulk_disable(ARRAY_SIZE(chip->regs), chip->regs);
+ regulator_disable(chip->vdd_supply);
return err;
}
--
2.51.0