[PATCH] iio: ak8975: add Vid regulator, use optional API

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The AK8975 has two power sources: Vdd (analog voltage supply)
and Vid (digital voltage supply). Optionally also obtain the Vid
supply regulator and enable it.

This also switches the AK8975 regulator to use the optional
regulator API instead of using the much-disliked IS_ERR_OR_NULL()
macro.

If an error occurs when enabling one of the regulators: bail out.

Cc: Gregor Boirie <gregor.boirie@xxxxxxxxxx>
Cc: Richard Leitner <dev@xxxxxxxxxx>
Cc: Krzysztof Kozlowski <k.kozlowski@xxxxxxxxxxx>
Signed-off-by: Linus Walleij <linus.walleij@xxxxxxxxxx>
---
 drivers/iio/magnetometer/ak8975.c | 28 ++++++++++++++++++----------
 1 file changed, 18 insertions(+), 10 deletions(-)

diff --git a/drivers/iio/magnetometer/ak8975.c b/drivers/iio/magnetometer/ak8975.c
index 609a2c401b5d..cb8e79532854 100644
--- a/drivers/iio/magnetometer/ak8975.c
+++ b/drivers/iio/magnetometer/ak8975.c
@@ -379,6 +379,7 @@ struct ak8975_data {
 	u8			cntl_cache;
 	struct iio_mount_matrix orientation;
 	struct regulator	*vdd;
+	struct regulator	*vid;
 };
 
 /* Enable attached power regulator if any. */
@@ -388,18 +389,25 @@ static int ak8975_power_on(struct i2c_client *client)
 	struct ak8975_data *data = iio_priv(indio_dev);
 	int ret;
 
-	data->vdd = devm_regulator_get(&client->dev, "vdd");
-	if (IS_ERR_OR_NULL(data->vdd)) {
-		ret = PTR_ERR(data->vdd);
-		if (ret == -ENODEV)
-			ret = 0;
-	} else {
+	data->vdd = devm_regulator_get_optional(&client->dev, "vdd");
+	if (!IS_ERR(data->vdd)) {
 		ret = regulator_enable(data->vdd);
+		if (ret) {
+			dev_warn(&client->dev,
+				 "Failed to enable specified Vdd supply\n");
+			return ret;
+		}
 	}
-
-	if (ret)
-		dev_err(&client->dev, "failed to enable Vdd supply: %d\n", ret);
-	return ret;
+	data->vid = devm_regulator_get_optional(&client->dev, "vid");
+	if (!IS_ERR(data->vid)) {
+		ret = regulator_enable(data->vid);
+		if (ret) {
+			dev_warn(&client->dev,
+				 "Failed to enable specified Vid supply\n");
+			return ret;
+		}
+	}
+	return 0;
 }
 
 /* Disable attached power regulator if any. */
-- 
2.4.11

--
To unsubscribe from this list: send the line "unsubscribe linux-iio" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Input]     [Linux Kernel]     [Linux SCSI]     [X.org]

  Powered by Linux