]> Git Repo - J-u-boot.git/blobdiff - drivers/power/regulator/as3722_regulator.c
Revert "Merge patch series "arm: dts: am62-beagleplay: Fix Beagleplay Ethernet""
[J-u-boot.git] / drivers / power / regulator / as3722_regulator.c
index 3e1e6f1178c930dab67a88bf698b25985aba860a..ec0776b440bb8a80ffc4f375c156a68f9797d65b 100644 (file)
@@ -1,19 +1,21 @@
+// SPDX-License-Identifier: GPL-2.0+
 /*
  * Copyright (C) 2017 Google, Inc
  * Written by Simon Glass <[email protected]>
  *
  * Placeholder regulator driver for as3722.
- *
- * SPDX-License-Identifier:    GPL-2.0+
  */
 
 #include <common.h>
 #include <dm.h>
 #include <errno.h>
+#include <log.h>
 #include <power/as3722.h>
 #include <power/pmic.h>
 #include <power/regulator.h>
 
+#define AS3722_LDO_CONTROL0_MAX_INDEX 7
+
 static int stepdown_get_value(struct udevice *dev)
 {
        return -ENOSYS;
@@ -69,10 +71,16 @@ static int ldo_set_value(struct udevice *dev, int uvolt)
 static int ldo_set_enable(struct udevice *dev, bool enable)
 {
        struct udevice *pmic = dev_get_parent(dev);
+       u8 ctrl_reg = AS3722_LDO_CONTROL0;
        int ldo = dev->driver_data;
        int ret;
 
-       ret = pmic_clrsetbits(pmic, AS3722_LDO_CONTROL, 0, 1 << ldo);
+       if (ldo > AS3722_LDO_CONTROL0_MAX_INDEX) {
+               ctrl_reg = AS3722_LDO_CONTROL1;
+               ldo -= 8;
+       }
+
+       ret = pmic_clrsetbits(pmic, ctrl_reg, !enable << ldo, enable << ldo);
        if (ret < 0) {
                debug("%s: failed to write LDO control register: %d", __func__,
                      ret);
@@ -85,10 +93,16 @@ static int ldo_set_enable(struct udevice *dev, bool enable)
 static int ldo_get_enable(struct udevice *dev)
 {
        struct udevice *pmic = dev_get_parent(dev);
+       u8 ctrl_reg = AS3722_LDO_CONTROL0;
        int ldo = dev->driver_data;
        int ret;
 
-       ret = pmic_reg_read(pmic, AS3722_LDO_CONTROL);
+       if (ldo > AS3722_LDO_CONTROL0_MAX_INDEX) {
+               ctrl_reg = AS3722_LDO_CONTROL1;
+               ldo -= 8;
+       }
+
+       ret = pmic_reg_read(pmic, ctrl_reg);
        if (ret < 0) {
                debug("%s: failed to read SD control register: %d", __func__,
                      ret);
@@ -100,9 +114,9 @@ static int ldo_get_enable(struct udevice *dev)
 
 static int as3722_stepdown_probe(struct udevice *dev)
 {
-       struct dm_regulator_uclass_platdata *uc_pdata;
+       struct dm_regulator_uclass_plat *uc_pdata;
 
-       uc_pdata = dev_get_uclass_platdata(dev);
+       uc_pdata = dev_get_uclass_plat(dev);
 
        uc_pdata->type = REGULATOR_TYPE_BUCK;
 
@@ -111,9 +125,9 @@ static int as3722_stepdown_probe(struct udevice *dev)
 
 static int as3722_ldo_probe(struct udevice *dev)
 {
-       struct dm_regulator_uclass_platdata *uc_pdata;
+       struct dm_regulator_uclass_plat *uc_pdata;
 
-       uc_pdata = dev_get_uclass_platdata(dev);
+       uc_pdata = dev_get_uclass_plat(dev);
 
        uc_pdata->type = REGULATOR_TYPE_LDO;
 
This page took 0.024933 seconds and 4 git commands to generate.