]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - drivers/regulator/hi655x-regulator.c
Merge tag 'sound-5.4-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
[linux.git] / drivers / regulator / hi655x-regulator.c
index bba24a6fdb1e11ce7a090947d0bf53428ba69b7c..ac2ee2030211a3df1cabd9d1a62deb21603dd55b 100644 (file)
@@ -1,16 +1,12 @@
-/*
- * Device driver for regulators in Hi655x IC
- *
- * Copyright (c) 2016 Hisilicon.
- *
- * Authors:
- * Chen Feng <puck.chen@hisilicon.com>
- * Fei  Wang <w.f@huawei.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
+// SPDX-License-Identifier: GPL-2.0
+//
+// Device driver for regulators in Hi655x IC
+//
+// Copyright (c) 2016 Hisilicon.
+//
+// Authors:
+// Chen Feng <puck.chen@hisilicon.com>
+// Fei  Wang <w.f@huawei.com>
 
 #include <linux/bitops.h>
 #include <linux/device.h>
@@ -28,7 +24,6 @@
 struct hi655x_regulator {
        unsigned int disable_reg;
        unsigned int status_reg;
-       unsigned int ctrl_mask;
        struct regulator_desc rdesc;
 };
 
@@ -77,22 +72,18 @@ enum hi655x_regulator_id {
 static int hi655x_is_enabled(struct regulator_dev *rdev)
 {
        unsigned int value = 0;
-
        struct hi655x_regulator *regulator = rdev_get_drvdata(rdev);
 
        regmap_read(rdev->regmap, regulator->status_reg, &value);
-       return (value & BIT(regulator->ctrl_mask));
+       return (value & rdev->desc->enable_mask);
 }
 
 static int hi655x_disable(struct regulator_dev *rdev)
 {
-       int ret = 0;
-
        struct hi655x_regulator *regulator = rdev_get_drvdata(rdev);
 
-       ret = regmap_write(rdev->regmap, regulator->disable_reg,
-                          BIT(regulator->ctrl_mask));
-       return ret;
+       return regmap_write(rdev->regmap, regulator->disable_reg,
+                           rdev->desc->enable_mask);
 }
 
 static const struct regulator_ops hi655x_regulator_ops = {
@@ -132,7 +123,6 @@ static const struct regulator_ops hi655x_ldo_linear_ops = {
        },                                                       \
        .disable_reg = HI655X_BUS_ADDR(dreg),                    \
        .status_reg = HI655X_BUS_ADDR(sreg),                     \
-       .ctrl_mask = cmask,                                      \
 }
 
 #define HI655X_LDO_LINEAR(_ID, vreg, vmask, ereg, dreg,          \
@@ -155,10 +145,9 @@ static const struct regulator_ops hi655x_ldo_linear_ops = {
        },                                                       \
        .disable_reg = HI655X_BUS_ADDR(dreg),                    \
        .status_reg = HI655X_BUS_ADDR(sreg),                     \
-       .ctrl_mask = cmask,                                      \
 }
 
-static struct hi655x_regulator regulators[] = {
+static const struct hi655x_regulator regulators[] = {
        HI655X_LDO_LINEAR(LDO2, 0x72, 0x07, 0x29, 0x2a, 0x2b, 0x01,
                          2500000, 8, 100000),
        HI655X_LDO(LDO7, 0x78, 0x07, 0x29, 0x2a, 0x2b, 0x06, ldo7_voltages),